【学习资源】人在环路的机器学习
说明:本文图片和内容来源 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
相关文章:
【学习资源】人在环路的机器学习
说明:本文图片和内容来源 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的目标,学习过程,…...
计算机毕业设计 基于Python的热门微博数据可视化分析系统的设计与实现 Python+Django+Vue 可视化大屏 附源码 讲解 文档
🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…...
031集——文本文件按空格分行——C#学习笔记
如下图,读取每行文本,每行文本再按空格分开读取一个字符串,输出到另一个文本: CAD环境下,代码如下: using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Runtime; using System; using Sys…...
LabVIEW 成绩统计系统
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
SpringBoot技术栈:构建高效古典舞交流平台
第二章 相关技术介绍 2.1Java技术 Java是一种非常常用的编程语言,在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中,Java的身影无处不在,并且拥有旺盛的生命力。Java的跨平台能力十分强大,只需一次编译…...
Docker 容器日志记录与管理:日志输出、轮转与配置实践
Docker 容器化应用的日志管理是运维中的重要环节。容器默认会将标准输出(stdout)和标准错误(stderr)记录到日志文件中,但这些日志文件如果不加管理,可能会无限制地增长,最终导致磁盘空间耗尽。因此,了解如何规范化容器日志管理、配置日志轮转策略以及合理存储位置至关重…...
Django学习笔记一:MVT的示例
Django的MVT(Model-View-Template)架构是一种将应用程序的不同部分分离的方法,旨在提高代码的可维护性和可扩展性。MVT将应用分解为三个主要部分:Model(模型)、View(视图)和Template…...
集合框架01:集合的概念、Collection体系、Collection接口
1.集合的概念 集合是对象的容器,定义了多个对象进行操作的常用方法。可实现数组的功能。 集合和数组的区别: 1.数组长度固定,集合长度不固定; 2.数组可以存储基本类型和引用类型,集合只能存储引用类型; …...
shadcn-vue 快速开始
介绍 基于 Radix Vue 和 Tailwind CSS 构建的可重复使用的组件 一个由社区主导的非官方 Vue 版本的 shadcn/ui。虽然我们与 shadcn 没有正式的合作或联系,但在开始这个项目之前得到了作者本人的同意。创建这个项目的原因是 Vue 生态系统中缺乏类似的项目ÿ…...
智慧管控平台技术解决方案
1. 智慧管控平台概述 智慧管控平台采用先进的AI技术,围绕一个中心和四大应用构建,旨在打造一个智能、共享、高效的智慧运营管理环境,实现绿色节能和业务创新。 2. 平台架构设计 系统整体架构设计包括统一门户管理、IOT平台、大数据、视频云…...
酒店业CRM和酒店数据管理大数据—未来之窗行业应用跨平台架构
一酒店架构图 二、客户数据 三、客户数据源...
滚雪球学Oracle[8.1讲]:高级主题与未来趋势
全文目录: 前言0. 上期回顾1. Oracle数据库中的大数据与分析1.1 Oracle与大数据平台的集成1.2 Oracle Advanced Analytics的使用1.3 Hadoop与Oracle的混合架构设计 2. 机器学习与Oracle数据库2.1 使用Oracle Machine Learning进行预测分析2.2 数据库内置机器学习模型…...
【Matlab绘图】从Excel导入表格并进行三维绘图
前言 今天手头上拿到一份论文的xlsx数据,要求使用MATLAB绘制进行三维图标坐标绘制。那么我们来看看如何使用如下数据进行绘图。 如上数据所示,数据是一个30行25列的数据,数据的内容是论文某项模型模拟的结果,我们希望把横坐标x取…...
IDEA里面的长截图插件
1.我的悲惨经历 兄弟们啊,我太惨了,我刚刚在准备这个继承和多态的学习,写博客的时候想要截图代码,因为这个代码比较大,一张图截取不下来,所以需要长截图,之前使用的qq截图突然间拉胯࿰…...
(15)衰落信道模型作用于信号是相乘还是卷积
文章目录 在使用衰落信道进行通信系统仿真时,有的资料中是用相乘的方法,有的资料中用的是卷积的方法。那么,衰落信道模型作用于传输信号时,是该用相乘还是卷积呢?下面针对该问题给出回答。 在仿真瑞利衰落信道对传输信…...
(C语言贪吃蛇)14.用绝对值方式解决不合理的走位
目录 前言 解决方式 运行效果 总结 前言 我们上节实现了贪吃蛇四方向走位,但是出现了一些不合理的走位,比如说身体节点和头节点重合等等,本节我们便来解决这个问题。 我们希望贪吃蛇撞到自身时游戏会重新开始,并且贪吃蛇的运动方…...
[深度学习]基于YOLO高质量项目源码+模型+GUI界面汇总
以下项目全部是本人亲自编写代码,项目汇总如下: 序号项目名称下载地址1基于yolov8的辣椒缺陷检测系统python源码onnx模型评估指标曲线精美GUI界面.zip点我下载2基于yolov8的海上红外目标系统python源码onnx模型评估指标曲线精美GUI界面.zip点我下载3基于…...
仕考网:公务员国考有三不限岗位吗?
国家公务员考试中的“三不限”岗位,即不限制专业背景、政治面貌、基层工作经验的职位。在国考中,是有的但是数量比较少。 这些岗位主要集中在省级及以下单位,以民航空警和铁路公安为主。其中,有一半的职位是面向四项目人员&#…...
RabbitMq生产者可靠性
基本概念: RabbitMQ生产者可靠性主要涉及确保消息能够可靠地发送到RabbitMQ服务器,并且在出现故障时能够进行适当的处理。 消息确认机制(Publisher Confirms): 启用 Publisher Confirms:生产者在发送消息之…...
Linux Debian12使用Podman安装bwapp靶场环境
一、bwapp简介 bWAPP(buggy Web Application)是一个开源的、故意设计有漏洞的Web应用程序,旨在帮助安全爱好者、开发人员和学生发现和防止Web漏洞。它包含了超过100种不同的漏洞,涵盖了所有主要的已知Web漏洞。 二、bwapp下载 …...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
