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

news2024/11/23 12:17:37

说明:本文图片和内容来源 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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis:通用命令 数据类型

Redis:通用命令 & 数据类型 通用命令SETGETKEYSEXISTSDELEXPIRETTLTYPEFLUSHALL 数据类型 Redis的客户端提供了很多命令用于操控Redis,在Redis中,key的类型都是字符串,而value有多种类型,每种类型都有自己的操作命…

DMA 正点原子版

就是介绍一下dma,只能内存到外设,外设到内存,内存到内存,不能外设到外设这样进行数据传输 这个是 可以看这个表来查,哪个dma的哪个通道用来传输什么数据,这个是芯片固定好的,只能看表查&#xf…

Geogebra基础篇002—关于Geogebra软件的介绍及与MatLab的区别

为什么要学Geogebra? 因为和MatLab的科学计算相比,GeoGebra重点突出教学展示,对于教师、学生人群来讲再合适不过了,尤其是可以融入到PPT里边呈现交互式动画,想想听众的表情!这不就弥补了看到PPT播放数学公…

Python+Matplotlib-高等数学上-P7-例如部分可视化

import numpy as np import matplotlib.pyplot as plt# 设置中文字体,确保中文显示正确 plt.rcParams[font.sans-serif] [SimHei] # 用黑体显示中文 plt.rcParams[axes.unicode_minus] False # 正常显示负号# 设置图形和子图 fig, (ax1, ax2) plt.subplots(2, …

Qt 5开发步骤及实例

目录 界面设计编写相应的计算圆面积代码 界面设计 创建桌面应用程序 得到这样一个树形视图 双击界面文件中的dialog.ui 直接双击控件label改名,然后修改最后一个label的属性 修改这个标签的样式,把frameshape改成Panel,frameshadow改…

LC刷题专题:二叉树;迭代;递归(897、1372、208)

文章目录 897.递增顺序搜索树1372. 二叉树中的最长交错路径208. 实现 Trie (前缀树) 897.递增顺序搜索树 https://leetcode.cn/problems/increasing-order-search-tree/description/ 这道题目本身就是一个简单题:非常容易实现:只需要在递归或者迭代中序…

【Java的SPI机制】Java SPI机制:实现灵活的服务扩展

在Java开发中,SPI(Service Provider Interface,服务提供者接口)机制是一种重要的设计模式,它允许在运行时动态地插入或更换组件实现,从而实现框架或库的扩展点。本文将深入浅出地介绍Java SPI机制&#xff…

【Godot4.3】复合路径类myPath

概述 之前编写过一个基于指令绘图的类交myPoint&#xff0c;但是只涉及折线段生成。这次我基于SVG的<path>标签路径指令的启发&#xff0c;实现了一个能够获得连续绘制的直线段、圆弧和贝塞尔复合路径的类型myPath。 可以使用绘图指令方法或字符串形式的绘图指令解析来…

hbuilderx+uniapp+Android宠物用品商城领养服务系统的设计与实现 微信小程序沙箱支付

目录 项目介绍支持以下技术栈&#xff1a;具体实现截图HBuilderXuniappmysql数据库与主流编程语言java类核心代码部分展示登录的业务流程的顺序是&#xff1a;数据库设计性能分析操作可行性技术可行性系统安全性数据完整性软件测试详细视频演示源码获取方式 项目介绍 顾客 领养…

OpenCAEPoro优化(1)

核心目的&#xff1a;减少运行时的 object time 方法一&#xff1a;改变运行的进程数 进入OpenCAEPoro目录下运行下述代码&#xff08;进程数为4&#xff09; mpirun -np 4 ./testOpenCAEPoro ./data/case1/case1.data verbose1结果如下 可以看到&#xff0c;object time是…

日常工作记录:服务器被攻击导致chattr: command not found

在深夜的寂静中&#xff0c;公司的服务器突然遭遇了一场突如其来的攻击。特别是nginx配置文件无法修改&#xff0c;仿佛预示着不祥的预兆&#xff0c;面对这突如其来的灾难&#xff0c;技术人员迅速响应。 这时候需要chattr&#xff0c;但是执行的chattr -i xxx的时候&#xf…

神经网络激活函数之前的加权求和 | 矩阵相乘运算法则(清晰版)

1. 神经网络中进行加权求和为什么要将w矩阵进行转置&#xff1f; 下面以一个简单的神经网络作为举例&#xff1a; 我们要将输入特征与W进行加权求和&#xff0c;想要的是下面这种结果&#xff1a; 但是根据矩阵相乘的运算法则&#xff1a; 矩阵A的列数&#xff08;column&am…

SysML案例-风力发电

DDD领域驱动设计批评文集>> 《软件方法》强化自测题集>> 《软件方法》各章合集>>

攻防世界---->Newbie_calculations

学习笔记。 前言&#xff1a;试过od动态分析&#xff0c; 然后发现&#xff0c;那些函数不完全是混淆&#xff0c;怎么剥离 - - 不会 现在学会了。 参考&#xff1a; xctf-Newbie_calculations - jane_315 - 博客园 (cnblogs.com)https://www.cnblogs.com/jane315/p/1376964…

111.WEB渗透测试-信息收集-ARL(2)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;110.WEB渗透测试-信息收集-ARL&#xff08;1&#xff09; 2、安装ARL 1、最好先“apt-g…

创建django项目时,不同的编译类型有什么区别

这里主要提及的是 project venv 和 Custom environment 两种类型。 简单来说&#xff0c;project venv 是Python 3.3及以上版本中自带的虚拟环境管理工具&#xff0c;使用venv可以为每个项目创建一个独立的环境&#xff1a;python -m venv myprojectenv &#xff08;项目名后e…

电梯,建模的常见话题

以下是最近一则"女婿开电梯门导致岳父惨死"的新闻&#xff0c;可惜生命的同时&#xff0c;也引发了一系列联想。 不少人不了解或者了解但经常下意识忽略&#xff1a;电梯的门和轿厢是分离的部件。部件之间的协作如果有失误&#xff0c;系统就会出问题。电梯可以看作是…

JVM 基础、GC 算法与 JProfiler 监控工具详解

目录 1、引言 1.1 JVM内存与本地内存 1.2 JVM与JDK的关系 2、JVM基础 2.1 JVM&#xff08;Java Virtual Machine&#xff09; 2.2 Java与JVM的关系 2.3 JVM的内存结构 2.3.1 堆内存 2.3.2 栈内存 2.3.3 方法区 2.3.4 本地方法栈 2.3.5 程序计数器&#xff08;PC寄存…

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

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

jQuery——对象的查找(查找孩子-父母-兄弟标签)

在已经匹配出的元素集合中根据选择器查找孩子/父母/兄弟标签&#xff0c;并封装为新的 jQuery 对象返回 children&#xff08;&#xff09; 子标签中找 find&#xff08;&#xff09; 后代标签中找 parent&#xff08;&#xff09; 父标签 prevAll&#xff08;&#xff0…