当前位置: 首页 > news >正文

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

说明:本文图片和内容来源 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的目标,学习过程&#xff0c…...

计算机毕业设计 基于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的跨平台能力十分强大,只需一次编译&#xf…...

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 生态系统中缺乏类似的项目&#xff…...

智慧管控平台技术解决方案

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截图突然间拉胯&#xff0…...

(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下载 …...

小白快速上手 Docker 02 | Docker 容器生命周期

容器生命周期 下图显示了容器生命周期的简化状态。 CreatedRunningPausedStoppedDeleted 现在让我们逐一讨论容器生命周期的每个状态: 创建状态(Created) 这是容器生命周期的第一个状态,在这个阶段,容器被创建但…...

深刻理解Redis集群(下):Redis 哨兵(Sentinel)模式

背景 现在对3个节点的sentinel进行配置。sentinel的配置文件在redis的安装目录中已经存在,只需要复制到指定的位置即可。 sentinel是独立进程,有对应的脚本来执行。 基于之前的redis 一主二从的架构,我们继续启动3个sentinel进程。 哨兵模式的…...

STM32重启源深度解析

文章目录 STM32重启源深度解析一、STM32重启概述二、硬件层面的重启源1、电源异常电压不稳定:电源供电不足: 2、复位电路故障复位引脚异常:复位电路设计不合理: 3、外部干扰电磁干扰:静电干扰: 三、软件层面…...

windows配置C++编译环境和VScode C++配置(保姆级教程)

1.安装MinGW-w64 MinGW-w64是一个开源的编译器套件,适用于Windows平台,支持32位和64位应用程序的开发。它包含了GCC编译器、GDB调试器以及其他必要的工具,是C开发者在Windows环境下进行开发的重要工具。 我找到了一个下载比较快的链接&#…...

【微信小程序前端开发】入门Day03 —— 页面导航、事件、生命周期、WXS 脚本及自定义组件

1. 页面导航 导航方式 声明式导航&#xff1a;使用<navigator>组件实现页面跳转。 <!-- 导航到tabBar页面 --> <navigator url"/pages/message/message" open-type"switchTab">导航到消息页面</navigator><!-- 导航到非tabBar页…...

【51单片机】点亮LED之经典流水灯

开发环境 开发板&#xff1a;普中51-单核-A2单片机&#xff1a;STC89C52RC&#xff08;双列直插40引脚 DIP40&#xff09;Keil uVision5 v9.61 最新版破解方法自行百度&#xff0c;相关文档和视频资料很多&#xff0c;我自己将这一操作记录下来当做博客发布&#xff0c;CSDN以…...

深度学习数据增强的常用方法

以下是在深度学习中经常使用的图像增强的方法 目录 前言 1、加噪声 2、调整亮度 3、cutout 4、旋转 5、对比度增强 6、仿射变化扩充图像 7、HSV数据增强 8、错切变化扩充图像 9、平移扩充图像&#xff0c;根图像移动的像素距离可自行调整&#xff0c;具体方法如下注释所示 10、…...

影院管理新篇章:小徐的Spring Boot应用

第三章 系统分析 整个系统的功能模块主要是对各个项目元素组合、分解和更换做出对应的单元&#xff0c;最后在根据各个系统模块来做出一个简单的原则&#xff0c;系统的整体设计是根据用户的需求来进行设计的。为了更好的服务于用户要从小徐影城管理系统的设计与实现方面上做出…...

【H2O2|全栈】关于CSS(9)CSS3扩充了哪些新鲜的东西?(二)

目录 CSS3入门 前言 准备工作 伪元素补充 :before :after 文本溢出属性 转换效果 预告和回顾 后话 CSS3入门 前言 本系列博客主要介绍CSS相关的知识点。 这一期主要介绍以下几个CSS3的知识点&#xff1a; 伪元素补充文本溢出属性转换 没有基础的朋友&#xff…...

java中Files和File对象详情和区别比较

Files 和 File 是 Java 中用于文件处理的两个不同类&#xff0c;分别属于 java.nio.file 和 java.io 包&#xff0c;它们的设计思路和用途有所不同。以下是它们的详细区别&#xff1a; 1. File 对象 File 是 Java 中最早用于处理文件和目录的类&#xff0c;它来自 java.io 包&…...