简述主动学习Active Learning
作者:互联网
目录
1. 简介
主动学习是一种通过主动选择最有价值的样本进行标注的机器学习或人工智能方法。其目的是使用尽可能少的、高质量的样本标注使模型达到尽可能好的性能。也就是说,主动学习方法能够提高样本及标注的增益,在有限标注预算的前提下,最大化模型的性能,是一种从样本的角度,提高数据效率的方案,因而被应用在标注成本高、标注难度大等任务中,例如医疗图像、无人驾驶、异常检测、基于互联网大数据的相关问题。
The pool-based active learning cycle. (Burr Settles, 2010)
Settles, Burr的【Active Learning Literature Survey】— https://minds.wisconsin.edu/bitstream/handle/1793/60660/TR1648.pdf%3Fsequence%3D1%26isAllowed%3Dy 文章为经典的主动学习工作进行了总结。上图是经典的基于池的主动学习框架。在每次的主动学习循环中,根据任务模型和无标签数据的信息,查询策略选择最有价值的样本交给专家进行标注并将其加入到有标签数据集中继续对任务模型进行训练。因为主动学习的过程中存在人的标注,所以主动学习又属于Human-in-the-Loop Machine Learning的一种。
主动学习为什么是有用的?下面通过一个直观的小例子让大家感受一下。
(a) 一个由400个实例组成的数据集,从两类高斯分布均匀采用。实例表示为二维特征空间中的点。(b) 从问题域中随机抽取30个标记实例,训练一个逻辑回归模型。这条蓝线代表了分类器的决策边界(70% 的准确率)。(c) 使用不确定性抽样对30个主动查询实例进行训练的逻辑回归模型(90%)。(Burr Settles, 2010)
由此说明,样本对模型的贡献并不是一样的,选择更有价值的样本具有实际意义。当然,如何确定和评估样本的价值也是主动学习研究的一个重点。
2. 模型分类
根据应用场景,主动学习的方法可以被分为membership query synthesis,stream-based and pool-based三种类型。其中,pool-based是最常见的场景,并且由于深度学习基于batch训练的机制,使得pool-based的方法更容易与其契合。在membership query synthesis的场景中,算法可能挑选整个无标签数据中的任何一个交给oracle标注,典型的假设是包括算法自己生成的数据。
但是有时候,算法生成的数据无法被oracle识别,例如生成的手写字图像太奇怪,oracle也不能识别它属于0~9?或者生成的音频数据不存在语义信息,让oracle也无法识别。在stream-based的场景中,每次只给算法输入一个无标签样本,由算法决定到底是交给oracle标注还是直接拒绝。有点类似流水线上的次品检测员,过来一个产品就需要立刻判断是否为次品,而不能在开始就根据这一批产品的综合情况来考量。在pool-based的场景中,每次给算法输入一个批量的无标签样本,然后算法根据策略挑选出一个或几个样本交给oracle进行标注。
这样的场景在生活中更容易出现,算法也可以根据这一批量样本进行互相比较和综合考虑。
3. 基本查询策略
在主动学习框架中,最重要的就是如何设计一个查询策略来判断样本的价值,即是否值得被oracle标注。而样本的价值并不是一成不变的,它不仅与样本自身有关,还和任务和模型等因素有关。一个简单的例子,在猫狗二分类问题中,一张长得像猫的狗的照片,对分类模型的训练往往是有价值,因为它难以分辨。但是,同样是这张照片,出现在动植物二分类问题中,就变得不那么重要了,因为模型想分辨它并不难。因此,查询策略的设计并不是简单和一成不变的,需要根据具体环境、问题和需要进行设定。这样就产生了各种各样的查询策略,下面,我介绍一些基本的查询策略供大家参考。
不确定性采样 (Uncertainty Sampling):也许是最简单直接也最常用的策略。算法只需要查询最不确定的样本给oracle标注,通常情况下,模型通过学习不确定性强的样本的标签能够迅速提升自己的性能。例如,学生在刷题的时候,只做自己爱出错的题肯定比随机选一些题来做提升得快。对于一些能预测概率的模型,例如神经网络,可以直接利用概率来表示不确定性。比如,直接用概率值,概率值排名第一和第二的差值,熵值等等。
多样性采样 (Diversity Sampling) :是从数据的分布考虑的常用策略。算法根据数据分布确保查询的样本能够覆盖整个数据分布以保证标注数据的多样性。例如,老师在出考试题的时候,会尽可能得出一些有代表性的题,同时尽可能保证每个章节都覆盖到,这样才能保证题目的多样性全面地考察学生的综合水平。同样地,在多样性采用的方法中,也主要分为以下几种方式:
基于模型的离群值——采用使模型低激活的离群样本,因为现有数据缺少这些信息;
代表性采样——选择一些最有代表性的样本,例如采用聚类等簇的方法获得代表性样本和根据不同域的差异找到代表性样本;
真实场景多样性——根据真实场景的多样性和样本分布,公平地采样。
预期模型改变(Expected Model Change) :EMC通常选择对当前模型改变最大、影响最大的样本给oracle标注,一般来说,需要根据样本的标签才能反向传播计算模型的改变量或梯度等。在实际应用中,为了弱化需要标签这个前提,一般根据模型的预测结果作为伪标签然后再计算预期模型改变。当然,这种做法存在一定的问题,伪标签和真实标签并不总是一致的,他与模型的预测性能有关。
委员会查询 (Query-By-Committee):QBC是利用多个模型组成的委员会对候选的数据进行投票,即分别作出决策,最终他们选择最有分歧的样本作为最有信息的数据给oracle标注。此外,有些研究者将多种查询策略结合起来使用混合策略进行查询,例如即考虑不确定性又考虑多
样性的。还有一些其他的查询策略,例如预期误差减少、方差减少、密度加权法等。
4. 经典方法
下面我给大家分享几个经典的主动学习方法,这些方法经常被拿来作对比。在自己以后的文章里也可以考虑和以下经典的方法进行比较。
Entropy
可直接根据预测的概率分布计算熵值,选择熵值最大的样本来标注。
BALD
【Deep Bayesian Active Learning with Image Data】— https://arxiv.org/abs/1703.02910
BGADL
【Bayesian Generative Active Deep Learning】— https://arxiv.org/abs/1904.11643
Core-set
【Active Learning for Convolutional Neural Networks: A Core-Set Approach】— https://openreview.net/forum%3Fid%3DH1aIuk-RW
LLAL
【Learning Loss for Active Learning】— https://arxiv.org/abs/1905.03677%3Fcontext%3Dcs.CV
VAAL
【Variational Adversarial Active Learning】— https://arxiv.org/abs/1904.00370
5. 应用场景
由于主动学习解决的是如何从无标签数据中选择价值高的样本进行标注,所以在数据标签难以获得、标注成本大的场景和实际问题中被广泛应用。
互联网大数据相关的应用:在互联网的大数据场景中,无标签的数据不计其数,但是又不可能把所有的数据都打上标签。在有限的资金和时间下,最有效的方法就是利用主动学习挑选最有价值的样本交给人去打标签。例如,
【阿里巴巴淘系技术】— https://www.zhihu.com/question/265479171/answer/1495497483
【中科智云全球首发全新主动学习算法框架,颠覆传统大量样本和人力标注模式】— https://www.ofweek.com/ai/2021-07/ART-201713-8210-30509389.html
在安全风控异常检测等领域,异常数据远远少于正常的数据,而对网络上的大量数据都进行标注也是极其不合理的,但是主动学习能够选择性地标注这些数据。
无人驾驶等机器人领域的应用:在很多机器人领域,都需要收集大量的有标签数据来训练。尤其是非常火的无人驾驶领域。在无人驾驶领域,无人驾驶汽车对环境的感知尤为重要,感知的好坏直接影响决策的质量,对无人驾驶汽车的安全性有至关重要的作用。感知模型多用深度学习构建,数据的重要性不言而喻,尤其是标注数据。而真实场景的无人驾驶环境种类多、复杂,为了保证模型性能,大多数公司需要利用汽车在实际场景中运行收集到的图像、点云等数据进行训练。面对这样庞大的数据量,给每一个样本都打上标签几乎是不可能实现的任务,而利用主动学习选择最有价值的样本(可能是当前模型预测的不确定性大)再人工标注,继续训练模型,从而尽可能地提高模型的性能,提高了稳定性和安全性。例如,特斯拉等
【特斯拉挑战视觉极限】— https://www.bilibili.com/read/cv7621643
[主动学习如何改善自动驾驶夜间行人检测【NVIDIA】]— https://www.bilibili.com/video/BV1xV411o72V/
【Waymo和特斯拉背后的训练系统究竟有什么特别之处?】— https://zhuanlan.zhihu.com/p/400834629
智能医疗诊断等领域:在医疗领域,深度学习的发展为包括诊断在内的多个方面带来了革命性的发展。数据驱动的方法必然需求大量的有标注数据,而标注医疗图像不仅耗时耗力,而且需要特定的专业知识,所以利用主动学习选择模型难以预测的样本进行选择地标注是非常有实际意义的。有很多论文在研究主动学习在医疗领域的应用,但在实际应用和落地中,医疗诊断面临的最首要的问题还是精度和泛化性能。由于医疗数据是小样本,这些最重要和最基本的问题没有被彻底解决,所以主动学习的热度并不大。但是还是有一些公司在应用,例如腾讯AI Lab使用主动学习和难例挖掘方案
【中国首款智能显微镜获批进入临床:病理诊断AI化,腾讯AI Lab打造】— https://new.qq.com/omn/20200409/20200409A0BGWI00.html
在我看来,医疗数据获得的量本身就少的话,就没必要应用主动学习了,因为在有限的样本下,即使都标注都很难达到一个满意的性能,更别说去做选择了。但是真正有需求的场景是,
1. 有大量的无标签医疗数据,需要从中选择有价值的进行标注,例如从视频数据(胃肠镜视频)标注图像进行检测等;
2. 真正实现基本性能,能够落地部署后,仍需要长期在使用过程中收集数据,进行标注,但是由于这个过程是一直持续下去,长久的工作,所以对于这样大量的无标签数据也需要进行主动学习选择标注。
总之,主动学习应用的场景是针对有大量无标签数据(至少不缺),如何节省标注工作量使得模型达到满意的性能。在深度学习爆炸的时代,各种任务和应用都考虑采用数据驱动的learning的方法来解决,这就对数据的需求更高了。实际应用中,既不可能完全放弃标签,也不可能放弃无标注数据,而主动学习恰恰能够提供一个较合理的权宜之计,既要标注有价值的数据,又不需要全部标注,选择性地标注。
6. 实际应用可能存在的问题
虽然考虑到主动学习的出发点和要解决的问题都比较实际,但是目前的主动学习方法在实际应用的话还是存在一些问题。
性能不稳定:制约主动学习最大的问题就是性能不稳定。主动学习是根据自己指定的选择策略从样本中挑选,那么这个过程中策略和数据样本就是影响性能的两个很重要的因素。对于非常冗余的数据集,主动学习往往会比随机采样效果要好,但是对于样本数据非常多样,冗余性较低的数据集,主动学习有的时候会存在比随机采样还差的效果。数据样本的分布还影响不同主动学习的方法,比如基于不确定性的方法和基于多样性的方法,在不同数据集上的效果并不一致,这种性能的不稳定是制约人们应用主动学习的一个重要因素。在实际应用中,需要先根据主动学习进行数据选择和标注,如果此时的策略还不如随机采样,人们并不能及时改变或者止损,因为数据已经被标注了,沉没成本已经产生了。而优化网络结构和性能的这些方法就不存在这个问题,人们可以一直尝试不同的方法和技巧使得性能达到最好,修改和尝试的损失很小。而主动学习被要求得更加苛刻,几乎需要将设计好的策略拿来直接应用就必须要work才行,如果不work,那些被选择的样本还是被标注了,还是损失时间和金钱。苛刻的要求和不稳定的性能导致人们还不如省下这个精力,直接采用随机的标注方式。
脏数据的挑战:现在几乎所有的论文都在公开的数据集、现成的数据集上进行测试和研究。而这些数据集其实已经被选择和筛选过了,去除了极端的离群值,甚至会考虑到样本平衡,人为的给少样本的类别多标注一些,多样本的类别少标注一些。而实际应用中,数据的状况和这种理想数据集相差甚远。主动学习常用不确定性的选择策略,不难想象,噪声较大的样本甚至离群值总会被选择并标注,这种样本可能不仅不会提升模型的性能,甚至还会使性能变差。实际中还存在OOD(out of distribution)的问题,例如想训练一个猫狗分类器,直接从网络中按关键字搜索猫狗收集大量图片,里边可能存在一些老虎、狮子、狼等不在猫狗类别的无关样本,但是他们的不确定性是非常高的,被选中的话,并不会提升模型的性能。
难以迁移:主动学习是一种数据选择策略,那么实际应用中必然需求更通用、泛化性更好的主动学习策略。而目前的主动学习策略难以在不同域、不同任务之间进行迁移,比如设计了一个猫狗分类任务的主动学习策略,基于不确定性或多样性,达到了较好的性能,现在需要做一个新的鸡鸭分类的任务,那么是否还需要重新设计一个策略?如果任务是病变组织的分类呢?由于不同任务的数据分布特点可能不一样,不同任务的难易不一样,无法保证主动学习的策略能够在不同数据不同任务中通用,往往需要针对固定的任务设计一个主动学习策略。这样就耗费了精力,如果能有一个通用性好的主动学习策略,那么就可以被不同任务迁移,被更广泛地应用,甚至直接将其部署为通用标注软件,为各种任务、数据集,提供主动选择和标注功能。
交互不便:数据选择策略与标注过程联系紧密,理想的流程是,有一个整合的软件能够提供主动数据选择,然后提供交互界面进行标注,这就是将主动学习流程与标注软件结合。仅有高效的主动学习策略,而不方便标注交互,也会造成额外的精力浪费。在流程上,现在主动学习普遍是选择出一批待标注的样本后,交给人们去标注,而期望人们能尽快标注交给模型,模型继续训练后再次选择。人们标注的时候,模型既不能训练,主动学习也不进行其他操作,是个串行的过程,需求等待人工标注结束后,才能进行接下来的训练。这样的流程就不那么方便和高效,想象把主动学习+标注的系统给医生应用,策略先选出了一些样本,医生仅标注这些样本就标注了几天,然后再给模型训练,模型训练一段时间后,又选择出一些样本给医生,医生和模型互相等待对方的操作,降低了效率和便利性。
标签:模型,样本,学习,简述,Learning,Active,主动,数据,标注 来源: https://blog.csdn.net/qq_38890412/article/details/122770389