【学习资源】人在环路的机器学习

说明:本文图片和内容来源 Human-in-the-Loop Machine Learning

Human-in-the-Loop Machine Learning  Active learning and annotation for human-centered AI by Robert (Munro) Monarch, June 2021

介绍Human-in-the-Loop的目标,学习过程,适用场景,主动学习的策略,迁移学习,设计标注界面的基本原则以及参考案例(可运行的代码)和资料。

1 为什么需要人在回路的机器学习?

结合人类和机器智能的策略,可以帮助我们

  • 利用机器学习辅助和改进人类工作,提高效率。
  • 使用人类输入提高机器学习模型的准确性
  • 更快达到机器学习模型的目标精度

2 人在回路的学习过程是怎样的?

人在回路的学习过程的基础是主动学习和标注策略,主动学习是决定标注哪些数据的过程,标注是指对原始数据标注使其成为机器学习训练数据的过程。确保标注质量的方法是确保有合适的人员完成标注任务。而迁移学习可以避免冷启动,使已有的机器学习模型适应新任务。

图1.1 人在环路中预测数据标签过程的心智模型

如图所示,采样正确的数据进行标注,使用该数据训练模型,并使用该模型采样更多数据进行标注。主动学习是迭代式的,在主动学习的每一次迭代中,都会识别所选数据,并加上人类生成的新标签,然后用新的数据训练模型,并重复这一过程。

搜索引擎是人在环路机器学习的一个典型案例。

3 何时使用主动学习?

在处理很多问题时,我们都会面临缺乏数据的情况。如果现实世界只有小部分被标注的数据,随机抽样无法覆盖数据多样性,那么主动学习是我们经常需要采用的方法。主动学习可以识别人工标注的潜在错误。如果基线模型已经足够准确,或者更多训练数据的成本超过了更准确模型可能提供的任何价值,可以停止主动学习迭代。

图1.5 机器学习知识象限

通过算法解决问题:如何建立更准确、可解释的模型,并利用现有模型?

通过主动学习和标注解决问题:如何采样最佳的未标注数据点供人类审查?

在现有模型之外解决问题:哪些外部模型和指标可以帮助增强训练数据?

在现有模式内解决问题:当前模式的自信或困惑在哪里?

4 主动学习的策略

主动学习的参考代码

pytorch_active_learning/active_learning.py at master · rmunro/pytorch_active_learning · GitHub

pytorch_active_learning/active_learning_basics.py at master · rmunro/pytorch_active_learning · GitHub

pytorch_active_learning/advanced_active_learning.py at master · rmunro/pytorch_active_learning · GitHub

4.1 不确定性采样

用于识别当前机器学习模型中接近决策边界的未标记项。

代码参考 pytorch_active_learning/uncertainty_sampling.py at master · rmunro/pytorch_active_learning · GitHub

4.2 多样性采样

用于识别机器学习模型在当前状态下代表性不足或未知的未标记项。代表性采样、分层抽样、离群点检测和异常检测都是多样性采样的具体应用。

参考代码:pytorch_active_learning/diversity_sampling.py at master · rmunro/pytorch_active_learning · GitHub

多样性抽样类型包括基于模型的离群值抽样、基于聚类的抽样、代表性抽样和真实世界多样性抽样。这四种策略可以确保数据的多样性和代表性,分别是:模型在当前状态下未知的数据集;在统计上能代表整个数据分布的数据集;能最大程度代表模型部署位置的数据集; 以及最能代表现实世界人口统计的数据集。

图1.2 不同主动学习策略的利与弊

由于不确定性采样可能只关注决策边界的一部分,而多样性抽样可能只关注离边界较远的异常值。不确定采样和多样性采用通常一起使用,以找到一种既能最大限度提高不确定性,又能最大限度提高多样性的不确定数据集选择。聚类和不确定性采样的组合是首选策略并且效率较高。

上图是将最小置信度抽样和基于聚类的抽样相结合的示例。首先,不确定性抽样会发现决策边界附近的数据项;然后,聚类会确保选择范围内的多样性。每个聚类的中心点都被抽样。或者,我们也可以从异常值中随机抽取成员。

方法get_clustered_uncertainty_samples 可查看 pytorch_active_learning/advanced_active_learning.py at master · rmunro/pytorch_active_learning · GitHub

使用get_clustered_uncertainty_samples 可查看

代码:pytorch_active_learning/active_learning.py at master · rmunro/pytorch_active_learning · GitHub

4.3 随机采样

随机采样并不是容易的工作,避免对数据做一些不必要的预过滤工作,定义一个有代表性的评估数据集。

图1.3显示了选择和标注新数据项的两次迭代,导致了边界的变化。

迭代循环就是一种多样性采样。迭代次数和每次迭代需要标注的条目数量取决于任务。如果实施得当,主动学习具有自我纠正功能,也即每次迭代都能找到最适合人工标注的数据项。

5 迁移学习

从一项任务中提取模型并将其调整到另一种任务的过程被称为迁移学习。计算机视觉领域的成果要归功于迁移学习。基于已有的公开的视觉模型,重新训练模型的最后一层,使用少量标注后的标签,就可以训练一个新的模型。也可以从新训练多个层,还可以添加更多层到已有的模型中。

迁移学习在标注方面有实质性的先发优势,可以使用主动学习采样策略采样更多的数据项来标注。

主动迁移学习的重点在于,可以利用迁移学习来询问模型在哪里被混淆了,方法是让模型预测自己的错误。

方法get_deep_active_transfer_learning_uncertainty_samples 可查看 pytorch_active_learning/advanced_active_learning.py at master · rmunro/pytorch_active_learning · GitHub

如图所示,验证数据集由模型预测,并根据分类是否正确将其分为 "正确 "或 "不正确 "两个集合 。然后对模型的最后一层进行重新训练,以预测数据项是 "正确 "还是 "不正确",从而有效地将这两个集合转化为新的标签。

6 设计标注界面的基本原则

  • 尽可能将问题归结为二元选择
  • 确保预期的反应多种多样,以避免误导
  • 使用现有的交互约定
  • 允许键盘输入回复

7 参考案例

7.1 分类新闻头条

代码仓库:

GitHub - rmunro/headlines: Practical example from Human-in-the-Loop Machine Learning book

此例的主动学习策略包括最小置信度采样,分层采样,基于关键词的采样。

7.2 从文本中抽取食品安全事件信息

代码仓库:

GitHub - rmunro/food_safety: Practical example from Human-in-the-Loop Machine Learning book

本例需要食品安全专家标注信息。

7.3 标记自行车

代码仓库:

GitHub - rmunro/bicycle_detection: Practical example from Human-in-the-Loop Machine Learning book

主动学习策略包括最小置信度、模型异常值、数据增强。

8 参考资料

  • Human-in-the-Loop Machine Learning
  • https://freecontent.manning.com/active-transfer-learning-with-pytorch/
  • GitHub - rmunro/pytorch_active_learning: PyTorch Library for Active Learning to accompany Human-in-the-Loop Machine Learning book
  • GitHub - rmunro/headlines: Practical example from Human-in-the-Loop Machine Learning book
  • GitHub - rmunro/food_safety: Practical example from Human-in-the-Loop Machine Learning book
  • GitHub - rmunro/bicycle_detection: Practical example from Human-in-the-Loop Machine Learning book
  • 【2021新书】人在环路机器学习,426页pdf阐述主动学习与标注的以人为中心人工智能
  • 华东师大最新《人在环路机器学习》综述论文,224篇文献30页pdf
  • Human-in-the-Loop in Machine Learning: What is it and How Does it Work?
  • Humans in the Loop | Human-in-the-Loop pipelines for AI

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/887025.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

gdb 调试 linux 应用程序的技巧介绍

使用 gdb 来调试 Linux 应用程序时,可以显著提高开发和调试的效率。gdb(GNU 调试器)是一款功能强大的调试工具,适用于调试各类 C、C 程序。它允许我们在运行程序时检查其状态,设置断点,跟踪变量值的变化&am…

基于Arduino的宠物食物分配器

创作本文的初衷是本人的一个养宠物的梦想(因为家里人对宠物过敏,因此养宠物的action一直没有落实),但是梦想总是要有的哈哈哈哈哈。上周正好是和一个很好的朋友见面,聊到了养宠物的事情,她大概是讲到了喂宠…

震撼!工业史上第一家万级别规模的工业数字化设备效果图平台

耗时八年打造,国内第一家万级别规模的工业数字化设备效果图平台 平台:www.kingview3d.cn 创作者:kingview3d郭工 行业:煤矿综合自动化、污水处理、净水处理、楼宇暖通、环保工程、医药废水处理、二供、无负压加压站、提升泵站、一…

《NoSQL》非关系型数据库MongoDB 学习笔记!

Mongo基础: 使用数据库: 使用use 命令 后面跟着要使用的数据库名字即可, 例如:use cities, 值得注意的是, mongo中不像mysql, 还需要先创建数据库,后访问, mongo中,你无…

【WebGis开发 - Cesium】如何确保Cesium场景加载完毕

目录 引言一、监听场景加载进度1. 基础代码2. 加工代码 二、进一步封装代码1. 已知存在的弊端2. 封装hooks函数 三、使用hooks方法1. 先看下效果2. 如何使用该hooks方法 三、总结 引言 本篇为Cesium开发的一些小技巧。 判断Cesium场景是否加载完毕这件事是非常有意义的。 加载…

在 Elasticsearch Serverless 上使用 Eland

作者:来自 Elastic Quentin Pradet 本博客将向你展示如何使用 Eland 将机器学习模型导入 Elasticsearch Serverless,然后如何使用类似 Pandas 的 API 探索 Elasticsearch。 Elasticsearch Serverless 中的 NLP 自 Elasticsearch 8.0 起,可以…

SQL专项练习第二天

在数据处理和分析中,Hive 是一个强大的工具。本文将通过五个 Hive 相关的问题展示其在不同场景下的应用技巧。 先在home文件夹下建一个hivedata文件夹,把我们所需的数据写成txt文件导入到/home/hivedata/文件夹下面。 一、找出连续活跃 3 天及以上的用户…

【AI论文精读1】针对知识密集型NLP任务的检索增强生成(RAG原始论文)

目录 一、简介一句话简介作者、引用数、时间论文地址开源代码地址 二、摘要三、引言四、整体架构(用一个例子来阐明)场景例子:核心点: 五、方法 (架构各部分详解)5.1 模型1. RAG-Sequence Model2. RAG-Toke…

Python+Matplotlib创建y=sinx、y=cosx、y=sinx+cosx可视化

y sin x (奇函数): 图像关于原点对称。 对于任何 x,sin(-x) -sin(x),符合奇函数定义。 y cos x (偶函数): 图像关于 y 轴对称。 对于任何 x,cos(-x) cos(x),符合偶函数定义。 y sin x cos x (既…

安全帽头盔检测数据集 3类 12000张 安全帽数据集 voc yolo

安全帽头盔检测数据集 3类 12000张 安全帽数据集 voc yolo 安全帽头盔检测数据集介绍 数据集名称 安全帽头盔检测数据集 (Safety Helmet and Person Detection Dataset) 数据集概述 该数据集专为训练和评估基于YOLO系列目标检测模型(包括YOLOv5、YOLOv6、YOLOv7…

LabVIEW机床加工监控系统

随着制造业的快速发展,机床加工的效率与稳定性成为企业核心竞争力的关键。传统的机床监控方式存在效率低、无法远程监控的问题。为了解决这些问题,开发了一种基于LabVIEW的机床加工监控系统,通过实时监控机床状态,改进生产流程&am…

Spring MVC__入门

目录 一、SpringMVC简介1、什么是MVC2、什么是SpringMVC 二、Spring MVC实现原理2.1核心组件2.2工作流程 三、helloworld1、开发环境2、创建maven工程3、配置web.xml4、创建请求控制器5、创建springMVC的配置文件6、测试HelloWorld7、总结 一、SpringMVC简介 1、什么是MVC MV…

html5 + css3(上)

目录 HTML初识基础认知web标准vscode的简介和使用注释 HTML标签学习排版标签标题和段落换行和水平线标签 文本格式化标签媒体标签图片标签图片-基本使用图片-属性 路径绝对路径相对路径 音频标签视频标签链接标签 HTML基础列表标签列表-无序和有序列表-自定义 表格标签表格-使用…

【JAVA开源】基于Vue和SpringBoot的周边产品销售网站

本文项目编号 T 061 ,文末自助获取源码 \color{red}{T061,文末自助获取源码} T061,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

Java网络通信—UDP

0.小记 1.udp通信不需要建立socket管道,一边只管发,一边只管收 2.客户端:将数据(byte)打包成包裹(DatagramPacket),写上地址(IP端口),通过快递站&…

【HTML并不简单】笔记1-常用rel总结:nofollow、noopener、opener、noreferrer,relList

文章目录 rel"nofollow"rel"noopener"与rel"opener"rel"noreferrer"relList对象 《HTML并不简单:Web前端开发精进秘籍》张鑫旭,一些摘要: HTML,这门语言的知识体系非常庞杂,涉…

Nagle 算法:优化 TCP 网络中小数据包的传输

1. 前言 在网络通信中,TCP(传输控制协议)是最常用的协议之一,广泛应用于各种网络应用,如网页浏览、文件传输和在线游戏等。然而,随着互联网的普及,小数据包的频繁传输成为一个不容忽视的问题。…

php email功能实现:详细步骤与配置技巧?

php email发送功能详细教程?如何使用php email服务? 无论是用户注册、密码重置,还是订单确认,电子邮件都是与用户沟通的重要手段。AokSend将详细介绍如何实现php email功能,并提供一些配置技巧,帮助你更好…

spring揭秘25-springmvc03-其他组件(文件上传+拦截器+处理器适配器+异常统一处理)

文章目录 【README】【1】文件上传与MultipartResolver【1.1】使用MultipartResolver进行文件上传【1.2】springmvc处理multipart多部件请求流程【1.3】使用springmvc上传文件代码实现(springmvc6.10版本): 【2】Handler与HandlerAdaptor&…

【含文档】基于Springboot+Vue的活力健身馆管理系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…