主动学习(Active learning)简介

article/2025/8/29 13:24:38

文章目录

  • Labeling faster vs. labeling smarter
  • 1. 什么是主动学习?
  • 2. 主动学习如何运行?
    • 2.1 Stream-based Active Learning
    • 2.2 Pool-based Active Learning
    • 2.3 Membership Query Synthesis
  • 3. 主动学习与强化学习的不同?
  • 4. 不确定性度量
    • 1)Smallest Margin Uncertainty
    • 2)Least Confidence Uncertainty
    • 3)Entropy Reduction
    • 4)Largest Margin Uncertainty
  • 5. Algorithm
  • 6. 优缺点


Labeling faster vs. labeling smarter

为了解决对高质量注释的爆炸性需求,一种人工智能方法(Human-in-the-Loop AI approach),即人工注释者验证机器学习算法的输出(human annotator validates the output of a machine learning algorithm),似乎是一种很有前途的方法。它不仅能加快处理速度,还能提高质量,因为人工干预有助于弥补算法的不准确性。尽管这种暴力方法有时是最好的方法,但另一种方法正在ML领域中慢慢获得更多的吸引力:只标记最重要的数据样本。作为数据科学家,我们被训练认为更多的数据等同于高模型精度,尽管这是正确的,但并非所有数据都是平等的,因为并非所有样本都携带相同数量的信息。

在这里插入图片描述


1. 什么是主动学习?

主动学习(Active learning)是一种机器学习框架,在这种框架中,学习算法可以交互式地查询用户以用真实标签标记新的数据点。主动学习的过程也被称为最优实验设计(optimal experimental design)。

在主动学习中,学习算法被允许从尚未标记的样本池中主动选择下一个要标记的可用样本子集。其基本思想是:如果允许机器学习算法选择它想要学习的数据,它可以在使用更少的训练标签的同时实现更高的精度。这种算法被称为主动学习器(active learner)。在训练过程中,主动学习器可以动态地提出查询,通常是以未标记数据样本的形式,由 oracle(通常是人工标注员)进行标记。因此,主动学习是人在回路中(Human-in-the-Loop)模式成功的最有力的例子之一。
在这里插入图片描述
无论是否使用主动学习方法,用于训练模型的数据越多,精确度越高。然而,使用主动学习,可以用少得多的数据达到给定的精度;在上图中,只用45%的数据就达到80%的准确率,而常规监督学习的则需要70%的数据。

主动学习适用于有大量未标记数据的场景。考虑训练一个图像分类模型来区分猫狗的问题。每张照片都有数百万张,但并不是所有的照片都是训练一个好模型所需要的。一些图像可能比其他图像提供更多的清晰度和信息。另一个类似的应用是对Youtube视频的内容进行分类,那里的数据本来就很密集,而且有很多。

被动学习(Passive learning)是一种标准的框架,在这种框架中,大量标记的数据被传递给算法,需要在标记整个数据集方面付出巨大的努力。
在这里插入图片描述

Passive Machine Learning

通过使用主动学习,我们可以选择性地利用像众包(crowd-sourcing)这样的服务,让人类专家选择性地标记数据集中的一些样本,而不必标记整个数据集。该算法基于一些值度量反复选择信息最丰富的样本,并将这些未标记的样本发送给标记oracle,后者将这些查询样本的真实标签返回给该算法。

在这里插入图片描述

Active Machine Learning. Credit: Inspired by Yi Zhang’s active learning slides

在一些情况下,主动学习比随机抽样表现更好。下图显示了主动学习优于随机选择的例子。整个数据集(红色三角形和绿色圆圈集合的并集)是线性不可分的。
在这里插入图片描述

Credit: Image from Burr Settles’ active learning slides.

主动学习的动机是理解并非所有被标注的样本都同等重要。由于对所有的样本进行了统一的随机抽样,所学习的模型并不完全代表类之间的划分。然而,主动学习选择类边界附近的样本,并且能够找到更有代表性的分类器。先前的研究还表明,对于多类图像分类等任务,主动学习比标准随机选择有所改进。

主动学习框架将数据的选择简化为一个问题,即确定集合中哪些数据点最具信息性。在主动学习中,信息量最大的数据点通常是模型最不确定的数据点。这需要各种度量来量化和比较样本的不确定性。


2. 主动学习如何运行?

主动学习被认为是一种半监督学习(semi-supervised learning)方法,介于无监督使用0%的学习样本和完全监督使用100%的样本之间。通过迭代增加标记的训练集的大小,可以获得更高的性能,接近完全监督的性能,使用所有数据进行训练的时间只有一小部分。

主动学习可以通过不同的场景来实现。本质上,决定是否查询一个特定的标签可以归结为决定获取标签的收益是否抵消了收集该信息的成本。总体而言,有三种不同类型的主动学习:

2.1 Stream-based Active Learning

在基于流的主动学习中,所有训练样本的集合作为流呈现给算法。每个样本都单独发送给算法进行考虑。算法必须立即决定是否标记这个样本。从该池中选择的训练样本由oracle标记,并且在显示下一个样本供考虑之前,算法立即接收到该标记。

2.2 Pool-based Active Learning

在基于池的采样中,从大量未标记的数据中选择训练样本。从该池中选择的训练样本由oracle标记。

2.3 Membership Query Synthesis

成员资格查询合成场景可能不适用于所有情况,因为它意味着合成数据的生成。在这种情况下,学习器可以构建自己的标签样本。当生成数据样本很容易时,这种方法有望解决冷启动问题(cold-start problems),如搜索。


3. 主动学习与强化学习的不同?

虽然强化和主动学习都可以减少模型所需标签的数量,但它们是非常不同的概念。强化学习是一种受行为心理学启发的面向目标的学习方法,它允许从环境中获取输入。因此,强化学习意味着代理在使用中会变得更好:它在使用中学习。当人类从错误中学习时,实际上是通过强化学习方法发挥作用的,没有实际的训练阶段;取而代之的是,代理使用预定的奖励函数,通过反复试验来学习,该函数将反馈关于它所采取的特定行动的最优程度的输入。从技术上来说,强化学习不需要输入数据,而是随着时间的推移产生自己的数据。另一方面,主动学习更接近传统的监督学习。事实上,这是一种半监督学习(使用标记和未标记的数据),其背后的思想是:并非所有数据都是平等的,仅标记一小部分数据样本可能会获得相同的准确性,唯一的挑战是识别该样本是什么。主动学习是指在训练阶段对数据进行增量和动态的标记,以使算法能够识别哪种标记最能提供信息,从而更快地学习。


4. 不确定性度量

如何确定要标记的原始数据?用于确定接下来标记哪个数据样本的方法被称为查询策略(querying strategy)。最常用和研究最多的方法是不确定性度量(不确定性度量)。

对于查询策略,模型首先在一个相当小的标记数据样本上训练;然后将该模型应用于数据集的(未标记的)剩余部分。算法基于通过该推理步骤获得的信息来选择在下一个主动学习循环中标记哪些样本。

选择信息量最大的数据点的决定取决于选择中使用的不确定性度量。在基于池的采样中,主动学习算法选择信息最丰富的样本添加到不断增长的训练集中。最有用的样本是分类器最不确定的样本。这里的直觉是,模型具有最少确定性的样本可能是最困难的样本,特别是位于分类边界附近的样本。学习算法将通过观察困难的样本获得关于分类边界的最多信息。

下面是四种常见的不确定性度量,用于主动学习,以选择最具信息性的样本。

1)Smallest Margin Uncertainty

Φ S M ( x ) = P θ ( y 1 ∗ ∣ x ) − P θ ( y 2 ∗ ∣ x ) \Phi_{SM}(x) = P_{\theta}(y^*_1|x) - P_{\theta}(y^*_2|x) ΦSM(x)=Pθ(y1x)Pθ(y2x)

最小的边际不确定性(smallest margin uncertainty)是最佳与次佳不确定性(best-versus-second-best uncertainty)的比较。最小边际不确定性(SMU)是最可能类别的分类概率减去第二可能类别的分类概率[1]。这个度量背后的直觉是,如果最有可能的类的概率明显大于第二可能的类的概率,那么分类器对该样本的类成员更加确定。同样,如果最有可能的类的概率不比第二个最有可能的类的概率大多少,那么分类器就不太确定该样本的类成员。主动学习算法将选择具有最小SMU值的样本。

2)Least Confidence Uncertainty

Φ L C ( x ) = 1 − P θ ( y 1 ∗ ∣ x ) \Phi_{LC}(x) = 1-P_{\theta}(y^*_1|x) ΦLC(x)=1Pθ(y1x)

最小置信不确定性(Least confidence uncertainty,LCU)是选择分类器对所选类别最不确定的样本。LCU选择只查看最可能的类,并选择具有分配给该类的最低概率的样本。

3)Entropy Reduction

Φ E N T ( x ) = − ∑ y P θ ( y ∣ x ) l o g P θ ( y ∣ x ) \Phi_{ENT}(x) = - \sum_y\ P_{\theta}(y|x)log P_{\theta}(y|x) ΦENT(x)=y Pθ(yx)logPθ(yx)

熵是随机变量不确定性的度量。在这个实验中,我们使用香农熵(Shannon Entropy)。香农熵有几个基本性质:(1)均匀分布具有最大不确定性,(2)不确定性对于独立事件是可加的,(3)加一个概率为零的结果没有影响,(4)某个结果的事件没有影响。将类别预测视为结果,可以测量预测类别概率的香农熵。

熵值越高,表明概率分布的不确定性越大。在每个主动学习步骤中,对于训练集中的每个未标记的样本,主动学习算法计算预测的类概率的熵,并选择具有最高熵的样本。熵最高的样本是分类器对其类别成员最不确定的样本。

4)Largest Margin Uncertainty

最大的边际不确定性(largest margin uncertainty)是最佳与最差不确定性(best-versus-worst uncertainty)的比较。最大边际不确定性(LMU)是最可能类别的分类概率减去最不可能类别的分类概率。这个度量背后的直觉是,如果最可能的类的概率明显大于最不可能的类的概率,那么分类器对该示例的类成员关系更加确定。同样地,如果最可能的类的概率不比最不可能的类的概率大多少,那么分类器对样本的类成员关系就不那么确定了。主动学习算法将选择具有最小LMU值的样本。


5. Algorithm

下面的算法是一种基于池的主动学习[8]。基于流的主动学习可以类似地编写。
在这里插入图片描述
大规模分类任务中的一个主要瓶颈是训练分类器需要大量的训练样本。使用主动学习,可以通过有策略地选择特定的样本来减少分类器所需的训练样本的数量。

6. 优缺点

大部分尝试过主动学习的研究人员认为其效果符合预期。这非常令人鼓舞,但人们不禁想知道在其他情况下发生了什么。这里的真相是,主动学习仍然没有被很好地理解。例如,主动学习在NLP领域的NER(Named Entity Recognition)任务上有一些有希望的工作(Paper),但许多大问题仍然存在。例如,很少有人提前预测特定任务或数据集是否特别容易从主动学习方法中受益。最后,主动学习是半监督学习的一种特殊情况,半监督学习是一种已经被证明极易受到偏差影响的算法,特别是因为它们有可能沉溺于从在相当小的数据集上训练的模型所识别的模式中得出的初始信念。随着高效标注成为机器学习中一个越来越重要的组成部分,预计未来几年将会有更多关于该主题的研究发表。


参考:
Introduction to Active Learning
Introduction to Active Learning


http://chatgpt.dhexx.cn/article/yiFK0anV.shtml

相关文章

哪本书适合推荐给 Java 初学者?

之前写过一篇文章叫《假如时光倒流, 我会这么学习Java》, 希望对你有帮助: ----------------------------------------------------------------------- 回头看看, 我进入Java 领域已经快15个年头了, 虽然学的也一般…

Java程序员必看的20本书,从入门到精通!收藏

推荐的20本学习 Java 必看书,记得点收藏哈~ 基础核心 1、《Java核心技术卷2:高级特性(原书第9版)》 豆瓣评分: 8.7 推荐指数:👍👍👍👍 2、《图解 HTTP》 讲漫画一样的…

Java入门到进阶推荐书籍

Java学习中推荐的书籍 第一本,《Head First JAVA》 小白学习JAVA的入门书籍,这本书和其他专业书籍相比多了一些趣味性,让人能够读下去,知识点比较全面,但是也没有讲的很深。 第二本,《JAVA核心技术卷1》 …

【书籍学习】史上最全的Java进阶书籍推荐

学习Java,书籍是必不可少的学习工具之一,尤其是对于自学者而言。废话不多说,下边就给大家推荐一些Java进阶的好书。 第一部分:Java语言篇 1.《Java编程规范》 适合对象:初级、中级 介绍:这本书的作者是被…

java 入门书籍(java7)

一、Java从入门到精通 《Java从入门到精通(第3版)》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用Java语言进行程序开发需要掌握的知识。 《Java从入门到精通(第3版)》编辑推荐:“软件开发视频大讲堂”丛书系清华社…

Java从入门到进阶书单推荐|必收藏

关于Java从入门到进阶的书单推荐 一、入门基础类 如果是0基础学习,入门阶段千万不要选择太难的书,首先太难的你也看不懂,而且会打击信心,所以建议选择通俗易懂的就行,先领进门(注意:基础一定要…

零基础学Java有哪些必看书?推荐这5本

零基础学Java初学者,想要入门,应该多看一些关于Java的书,先充实理论基础。然而Java的技术知识是海量的,市面上关于Java的书令人眼花缭乱,零基础的小白完全不知道该看哪本书。那么,零基础学Java有哪些必看书…

MySQL启动1053错误之解决方法

版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/qq_42680327 创建mysql服务时,系统已提示创建服务成功,但是net start mysql命令提示启动失败,并在services.msc中提示1053错误 解决办法1…

解决phpstudy mysql启动不了

之前的电脑上下了mysql,phpstudy自带一个mysql,目测是本来的mysql进程占用端口。 1、按winR键,输入 services.msc 找到mysql服务,关闭 2、再以管理员身份运行 一定要用管理员身份运行,我的问题这种方法解决了,其他的…

phpstudy mysql启动不了,问题已解决

首先讲一下我遇到的问题,安装好phpStudy v8.1之后,MySQL无法无法启动,出现错误的原因大概是phpStudy与原先下载的MySQL冲突了,随后在网上找了一些教程,进行了一系列操作:(有些朋友成功了&#x…

MySQL启动与关闭的3种方式

MySQL启动与关闭的3种方式 在这里大概记述一下MySQL最常用的3种启动与关闭的方式 文章目录 MySQL启动与关闭的3种方式一、第一种方式二、第二种方式三、第三种方式总结 一、第一种方式 直接搜索“服务”或者搜索“service”,再点击服务 找到MySQL57,…

Linux查看mysql是否启动+mysql启动(全)

整理一下Linux下启动mysql服务的命令。 目录 1.使用命令 # service mysqld status 2、使用命令# ps aux|grep mysqld 3、使用命令# pidof mysqld 4、使用命令# ps -ef|grep mysqld 5、使用# systemctl list-unit-files 命令,q退出 一、查看mysql是否启动——…

MySQL启动报错:mysql拒绝访问错误5

使用命令net start mysql启动数据库服务时候,出现如下错误: 原因是当前用户的权限过低导致的。 解决mysql拒绝访问错误5 1、win x 打开一个面板如下,选择命令提示符(管理员)【 解决办法:在系统搜索cmd&…

Mysql启动之报错:The server quit without updating PID file

一、问题描述 某次一线报某业务网站门户登录验证码获取失败;因该验证码是代码里通过验证码函数实现存入数据库,登录时再读取数据库里的验证码来实现包包里破解登录的;因此本次故障极大可能出现在数据库服务器故障。类似报错信息如下&#xff…

net start mysql启动常见问题

数据库安装常见问题 1、安装时net start mysql 后mysql启动失败。。服务无法启动。。服务没有报告任何错误 解决方法: 1)找到MySQL的安装目录,将data删除 (注意该文件下会有一些你自己建立的数据库的数据!) 2)搜索cmd以**管理员身份运行 **进入本机mysql…

Mysql启动选项和配置文件

Mysql启动选项和配置文件 Mysql启动方式 下面的启动命令都需要依赖在Linux环境下配置的Mysql环境变量 vi /etc/profile 在文件末尾加上Mysql的安装路径(演示中mysql配置在/usr/local/mysql-5.7.26下,这个路径需要根据自己的环境而定) expor…

如何启动MySQL服务

第一种 1.通过快捷键(WinR)输入 service.msc 调出服务窗口 2.找到MySQL服务,选择打开,或者自动打开即可 第二种 1.通过 cmd 窗口,以管理员身份打开,输入指令: net start mysql 即可 2.不区分…

MySQL数据库如何启动?

本篇文章主要跟大家介绍的是MySQL数据库如何启动,相信很多朋友都不清楚吧,对此,摩杜云小杜整理了一下并分享给大家做个参考,由于内容质量高,且简洁明了,感兴趣的朋友不妨来看看,记得要看完。 前…

模型的参数verbose用法详解

模型的参数verbose含义 verbose是日志显示,有三个参数可选择,分别为0,1和2。 当verbose0时,简单说就是不输出日志信息 ,进度条、loss、acc这些都不输出。当verbose1时,带进度条的输出日志信息,示例如下&am…

解决vue项目的 verbose stack Error: unable to resolve dependency tree问题

项目场景: 安装vue插件的时候出现报错 verbose stack Error: unable to resolve dependency tree 在命令后面加入 –legacy-peer-deps即可 该命令意为绕过版本差异,允许多版本共存安装 npm install iview --save --legacy-peer-deps当把命令加上后缀即…