Human-in-the-loop

最近在看这本书,记一些笔记帮助梳理。

基本上是 重点部分翻译+梳理+自己的理解。

(最开始在知乎上看到有人写这本书的笔记,但是好像后面断更了,所以就自己写啦,希望可以坚持看完hh)

文章目录

  • PART 1: First Steps
    • Chapter 1. Introduction to Human-in-the-Loop Machine Learning
      • 1.1 The basic principles of Human-in-the-Loop Machine Learning
      • 1.2 Introducing Annotation
      • 1.3 Introducing Active Learning: improving the speed and reducing the cost of training data
      • 1.4 Machine Learning and Human-Computer Interaction
      • 1.5 Machine Learning-Assisted Human vs Human-Assisted Machine Learning
      • 1.6 Transfer learning to kick-start your models
      • 1.7 What to expect in this text
    • Chapter 2. Getting Started with Human-in-the-Loop Machine Learning
      • 2.1 Beyond “Hack-tive Learning:” your first Active Learning algorithm
      • 2.2 Interpreting model predictions and data to support Active Learning
      • 2.3 Building an interface to get human labels
      • 2.4 Deploying your first Human-in-the-Loop Machine Learning system

PART 1: First Steps

Chapter 1. Introduction to Human-in-the-Loop Machine Learning

AI的“智能”不仅来源于训练数据,还包括人类的反馈。所以一个重要的问题是人和机器学习算法彼此交互来解决问题的正确方式是什么。

标注和主动学习是人在环路机器学习的基石, 它们决定了如何获取训练数据,以及当没有足够的预算或时间对所有数据进行人工标注时,将哪些数据正确地放在标注者面前是更合适。 迁移学习使我们能够避免冷启动,使现有的机器学习模型快速适应新任务。

1.1 The basic principles of Human-in-the-Loop Machine Learning

人在回路的机器学习是人和机器学习过程进行交互,来解决以下的问题:

  • 使ML更准确
  • 使ML更快达到所需的准确度
  • 使人类更准确
  • 使人类更高效

1.2 Introducing Annotation

Annotation就是人工标注。这个过程看似简单,但非常耗时。有些标注很简单,比如就打上一个0或1的标签,但有些标注也挺复杂的,比如在一段视频中标注所有物体的位置等等。标注工作对模型的好坏也有着非常大的影响,甚至和模型本身一样重要。

在学术界,我们倾向于保持数据集不变,因为这样便于比较出各种算法孰优孰劣。但是在工业界,数据集总是在变化。一是因为不断增加标注数据对于提高模型性能还是很重要的,二是实际环境下数据的性质会随着时间的推移而产生变化,在新生产生活中用到的模型需要不断学习和适应新的数据环境。

标注还有一个常见的问题就是人工错误带来的噪声。随机的噪声可能会帮助算法避免过拟合,进而更加准确和鲁棒,但是人类的错误往往都是有一定倾向性、主观性的,就会给数据引入不可恢复的偏差。

1.3 Introducing Active Learning: improving the speed and reducing the cost of training data

  • 主动学习策略

标注数据对于监督学习是至关重要的。有三种基本的主动学习策略:不确定性采样(Uncertainty Sampling)、多样性采样(Diversity Sampling)和随机采样(Random Sampling)。一些文献中会将不确定性采样和多样性采样称为“Exploitation”和“Exploration”

Random Sampling 就是随机采样。这种一般都用在标注初期。

Uncertainty Sampling 是指对在模型的决策边界的未标注样本进行采样。因为这些样本是当前模型非常难以确定的,极容易被标注错误的。所以先对这些样本进行标注可以帮助更好的确定决策边界。

Diversity Sampling是指对一些不常见的或者其特征从未见过的样本进行采样。这种策略可以让模型对数据空间有更完整的理解。因此也有些文献将多样性采样称为异常值检测/异常检测“Outlier Detection” and “Anomaly Detection”。还有一种多样性采样是代表性样本采样,找到最典型的、最符合标签的样本。

一般来说,这些策略都会混合使用。而且主动学习是一个迭代的过程,新标注的样本加入训练数据后,模型会重新训练,然后再根据新模型进行下一轮样本挑选。迭代的次数和每次迭代需要新标注的样本数是视具体任务而定的。

  • 数据评估问题

​ 在学术界,一般都是训练集、测试集、验证集都是从同一批大数据集中划分出来,保持了相似的数据分布。但在实践中,往往不是这样的,数据总是在变化。比如模型在ImageNet的测试集上可以表现出接近人类水平的准确度,但是一旦将模型应用于更广泛的数据,比如测试集换成社交网络上的照片,准确度立马大幅下降。

  • 什么时候使用主动学习?

    当我们受到时间或成本的限制,只能标注一小部分数据,并且随机抽样无法涵盖数据的多样性时,就应该使用主动学习。

1.4 Machine Learning and Human-Computer Interaction

  • 交互界面的重要性

    拿机器翻译来说,人在机翻的结果中去纠正错误,甚至要从头翻起,翻译速度并没有提升。现在有一些工作,是从用户界面上进行突破。比如在人类键入翻译的过程中,给出机器预测的下一个词/句子之类的。这个就有点像搜索问题时给出的提示,搜索引擎就是一个时长被我忽略的人机交互的很好的例子。

    利用主动学习的标注任务也可以设计一些交互界面,来提升效率。

  • 什么会影响人类的感知?

    人类的注意力、情绪、环境等都可能会影响标注的结果。语言学研究有一个实例:标注者的任务是听录音区分澳大利亚和新西兰口音。研究员会将将猕猴桃或者袋鼠的毛绒玩具放在标注者房间的架子上,但是并没有向标注者提及这些东西,只是把它放在房间中。结果是房间里有袋鼠的,标注者更倾向于是澳大利亚口音,反之亦然。这个项目叫玩具和语言感知,挺有意思。

    还有个例子就是数据的顺序,或者叫重复启动(repetition priming)。比如一个标注正负面情绪的工作,当前99条数据都是负面的,那第100个就很容易被标为负面,即使真实标签应该是正面。这就是重复工作导致的注意力丢失带来的错误。

  • 通过评估ML的预测来创建标签

    这个方法可以将复杂标注任务转换为二分类标注任务。人类只需要做出“confirm or reject” 就能完成打标签的工作。

1.5 Machine Learning-Assisted Human vs Human-Assisted Machine Learning

Human-in-the-Loop 机器学习可以有两个不同的目标:通过人工输入使机器学习应用程序更加准确,以及在机器学习的帮助下改进人工作业。这两个目标也可以结合起来。

  • 机器翻译

​ 机器在人做翻译工作的过程中,给出下一个词或短语的预测,来提升人的效率,这是机器辅助人来处理任务。随着时间推移,机器翻译系统也从人类的选择(accept/reject)的过程中,变得越来越准确。所以就同时实现了两个目标:人更高效,机器更准确。

  • 搜索引擎

​ 人们经常忘记搜索引擎是人工智能的一种形式。当你搜索之后,点了第4个链接,而不是第一个的时候,你就已经在训练你的搜索引擎了。

1.6 Transfer learning to kick-start your models

迁移学习/预训练模型帮助你不用从头开始训练你的模型。

现有模型已经有了一定的对数据的描述能力,在最后一层上重新训练,便可以适应新的数据和标签。这个过程相当于站在已有模型的肩膀上了。

比如CV领域的在ImageNet数据集上构建模型,来学习区别图像中的纹理、边缘等。在新领域使用时,只需要重新训练最后一层,或者最后几层。NLP领域的迁移学习,更多地以词嵌入的方式迁移。

1.7 What to expect in this text

作者提出了四个象限:

  1. Known Knowns: what your Machine Learning model can confidently and accurately do today. This is your model in its current state.
  2. Known Unknowns: what your Machine Learning model cannot confidently do today. You can apply Uncertainty Sampling to these items.
  3. Unknown Knowns: knowledge within pre-trained models that can be adapted to your task. Transfer learning allows you to use this knowledge.
  4. Unknown Unknowns: gaps in your Machine Learning model where it is blind today. You can apply Diversity Sampling to these items.

按行来看,是根据模型的知识来划的。第一行是模型知道的事情。Known Knowns是”我知道我预测的是对的“,Known Unknowns 代表我知道这个事情我不知道,这个预测我不确定,对应的就是刚才讲过的不确定性采样。第二行是模型认知以外的事情。

按列来看,是根据是否需要人的参与来划分的。左侧的列是可以通过ML来解决的,比如一些模型不知道的知识,可以通过迁移学习来解决。右侧的列表示可以通过主动学习或是标注来解决。比如模型也没见过的样本等等,这就涉及到多样性采样了。

Chapter 2. Getting Started with Human-in-the-Loop Machine Learning

2.1 Beyond “Hack-tive Learning:” your first Active Learning algorithm

(Hack-tive learning 就是Active learning,就是作者与同事交流时,由于口音产生的梗)

用来做研究的公开数据集很可能经过了手工规则筛选和采样,并不能完全代表真实世界的数据。

拿一个项目来练习下。作者给了一个数据集和代码,在github上:https://github.com/rmunro/pytorch_active_learning,来做一个对新闻标题分类的任务。数据样例如图所示。

2.2 Interpreting model predictions and data to support Active Learning

  • 针对不确定性采样

监督学习模型在给出预测标签时,一般还有置信度。相比于标签的准确度,主动学习中更关注置信度。

对于置信度低的case,比如二分类中置信度为0.524,就是需要人类再次review的,或者需要人类纠错或强化,加入到训练数据中的。

  • 针对多样性采样

此外,还有一些其他指标来帮助发现异常值/离群点,来确保最大限度提升人工标注的多样性,比如未标注数据的词频。

通过比对未标注数据的词频与当前训练集的词频,选择匹配度最低的数据进行人工标注,然后进行迭代。

除了词频,还有编辑距离,tf-idf等指标可以用来关注异常值。

2.3 Building an interface to get human labels

正确的人工标注界面与正确的采样策略同样重要。好的界面可以提升人的效率。

最简单的就是在command line里面直接标。

Tips:

  • 不平衡的标注,把大类设置为默认选项。
  • 设置返回选项。
  • 不要删除未标注的原始数据
  • 根据标签分开存储数据(冗余式的数据存储是有必要的)

2.4 Deploying your first Human-in-the-Loop Machine Learning system

作者提供了一个简单的分类模型。

If you didn’t do it earlier in the Chapter, download the code and data here:

https://github.com/rmunro/pytorch_active_learning

首先要做的,就是划分出测试集(test set),也叫做保留集。如果没有在采样前就把测试集划分出来,那对模型的评估就会变的不准确。

常用的评价指标。

模型迭代。如果设计正确,主动学习迭代将自然地进行自我校正,一次迭代中的过度拟合会通过后续迭代中的采样策略进行校正。

【书籍阅读】-人在回路机器学习 Human-in-the-Loop Machine Learning(一)相关推荐

  1. 【IUI 2020】人在回路机器学习——Human-in-the-Loop AI in Government: A Case Study

    文章目录 摘要 1 引言 2 背景 3 设计与实施 3.1 收据扫描 3.2 图像处理 3.3 光学字符识别(OCR) 3.4 自然语言处理 3.5 机器学习分类 用户接口 总结 主要参考文献 摘要 ...

  2. 如何在时间紧迫情况下进行机器学习:构建标记的新闻 数据 库 开发 标记 网站 阅读1629 原文:How we built Tagger News: machine learning on a

    如何在时间紧迫情况下进行机器学习:构建标记的新闻 数据 库 开发 标记 网站 阅读1629  原文:How we built Tagger News: machine learning on a ti ...

  3. 论文阅读 :A survey of visual analytics techniques for machine learning

    题目:A survey of visual analytics techniques for machine learning A survey of visual analytics techniq ...

  4. 机器学习与优化基础(Machine Learning and Optimization)

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|新机器视觉 引用大佬Pedro Domingos的说法: ...

  5. 量子领域的机器学习人工智能(三)(Machine learning artificial intelligence in the quantum domain)

    Machine learning & artificial intelligence in the quantum domain 摘要( Abstract) Ⅵ.机器学习的量子增强( QUANT ...

  6. 机器学习神书推荐 Hands on Machine Learning

    欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章. 本次为大家推荐的是一本机器学习神书英文原版<Hands- ...

  7. 初识机器学习——吴恩达《Machine Learning》学习笔记(八)

    神经网络 人工神经网络(英语:Artificial Neural Network,ANN),简称神经网络(Neural Network,NN)或类神经网络,在机器学习和认知科学领域,是一种模仿生物神经 ...

  8. 【文献阅读】Fashion-MNIST: a Novel Image Dataset for Benchmarking Machine Learning Algorithms

    文章目录 命名技巧: 项目目的: 数据源: 数据制作: 推荐阅读:数据制作 paper 地址:https://arxiv.org/abs/1708.07747 数据集下载:https://github ...

  9. # 吴恩达 · 机器学习笔记(① Introduction to Machine Learning)

    写在前面 在学习Python的时候同步进行吴恩达的机器学习,就像啃书一样,有些视频也需要啃下来.为了之后更好的烟酒生活,为了更舒服地融入新的环境中,那就加油吧!吴恩达机器学习共112章,按一天2节的进 ...

  10. MIT机器学习基础(Foundations of Machine Learning, author: Mehryar Mohri et al.)

    1. 简介 本章是对机器学习的初步介绍,包括一些关键的学习任务和应用,基本定义,术语,以及对一些一般场景的讨论. 1.1 何为机器学习   机器学习可以广泛地定义为使用经验来提高性能或进行准确预测的计 ...

最新文章

  1. 最小环算法求解(Dijkstra算法+Floyd算法)
  2. 英语词汇(5)followed by / sung by / written by
  3. 【Netty】NIO 缓冲区 ( Buffer ) 组件
  4. python atm作业详解_python day4 作业 ATM
  5. 通过通用数据访问扩展AWS生态系统
  6. js 加总数组中某一列_JS数组求和的常用方法实例小结
  7. c++ class struct同名_C/C++面向对象编程之封装
  8. 通过gparted 调整 ubuntu 磁盘
  9. C开源hash代码uthash的用法总结(2)
  10. 常用的redis命令
  11. java输出 4 7什么意思_Java学习4_一些基础4_输入输出_16.5.7
  12. Java基础学习总结(136)——有关流资源关闭(try-with-resources与AutoCloseable)的使用总结
  13. [机器学习基石]台大林轩田笔记1 -- The Learning Problem
  14. 基于5G的智慧养殖 | PPT分享
  15. 贪心算法基础(一)——数列极差
  16. 致敬经典:Ball and Brown (1968)
  17. PO/POJO/BO/DTO/VO的区别【转】
  18. 【教程】如何在服务器上部署豆瓣小组抢沙发聊天机器人
  19. VSCode多行变一行,一行变多行快捷操作
  20. vue项目中Des的加密解密

热门文章

  1. 智慧小区智能物业管理系统综合解决方案
  2. SAP Enable Now
  3. 重磅!腾讯正式开源 Spring Cloud Tencent
  4. 解决office2010每次打开出现配置进度的方法
  5. 量子通讯加密技术的技术原理
  6. BPSK调制解调matlab仿真
  7. python快速处理ppt_这10个批量处理的PPT技巧,让你的效率提升100倍!
  8. win10 html字体设置,IT之家学院:如何解决Win10屏幕字体缩放模糊问题
  9. 【路径规划】基于狼群算法之三维路径规划matlab源码
  10. layui表单验证范例