主动学习解决数据标注难题
动机
如今,我们利用AI算法解决实际问题的时候,需要面临的第一个并且是最重要的一个问题就是进行大规模的数据采集和标注。众所周知,使用监督学习方法做分类任务时,往往训练样本规模越大,分类器的性能就越高。但是在面临实际问题时,我们接触到的大量的来自互联网或其他来源(如学术界或商业界)的都是未标注的数据。然而标记样本通常是代价比较大的,比如海量标注需要耗费大量时间和人力(海量的语料和图像标注);又比如一些数据需要领域内的专家来进行人工标注(一家数据驱动的医疗公司有很多MRI扫描,他们需要聘请一位专家来帮助他们解释这些扫描),这样数据标注便成了人工智能算法商用的一个难题。业界也有一些专门进行数据标注的公司[1],比如Google可以提供不同任务的数据标注服务(其中视频类的标注费用最高,最高可到$686/500min),如Figure1示:
根据上表,考虑到数据标注的代价以及有限的资源,人们无法解释或标记所有数据;这就是他们决定使用主动学习(Active Learning)的原因。主动学习的核心思想之一就是通过一定的查询策略,选取“最不确定”或者“携带最大信息”的样本进行标注供算法学习,然后通过模型迭代更新可以实现与使用完全受监督的数据集类似的或更高的[2]性能,而不需要对所有的数据进行标注。通过这种方式,决定使用多少数据或者期望模型达到某种性能就变成了一种资源管理决策;换言之,就变成了一种商业决策(Business Planning)。
主动学习介绍
主动学习(Active learningor query learning)作为机器学习的一个分支(Semi-supervised Learning)其主要是针对数据标签较少或打标签代价较高这一场景而设计的。主动学习背后的关键思想是,如果允许从学习的数据中选择数据,则机器学习算法可以通过较少的训练标签来实现期望的准确性。
主动学习主要方式是模型(Learner)通过与用户或专家(Oracle)进行交互(如Figure2所示),根据某种采样规则,抛出query让专家确定数据的标签,如此反复迭代,以期让模型利用较少的标记数据获得较好的性能。一般情况下,模型抛出的未标注数据为hard sample(可以是模型最难区分的样本;可以是对模型提升最大的样本,如梯度提升最大;可以是方差减小等等)。
Figure 2 Pool Based主动学习流程
可以看出active learning与passive(supervised) learning最大的不同是其不需要大量的专家标注样本训练模型。 主动学习是利用少量标注样本,然后由模型(Learner)主动选择hard sample返回给用户或专家(Oracle)打标签,进而不断迭代以获得较好的模型(如Figure 3所示)[3],该过程必须要有Oracle的参与,这也是active learning区别于semi-supervised learning的不同之处。
Figure 3主动学习 VS 被动学习
如上图所示,Figure3(a)是一个二分类数据集的GroundTruth。由于样本过多,Figure3(b)随机选择了其中20%的数据进行标注,通过训练得到如图所示的回归模型。可以看出,由于样本选择是随机的且标注的样本数量过少致使采样后的分布和GroudTruth真实分布相差较大,因此回归模型无法在真实数据集上得到较好的表现。图Figure3(c)采用了主动学习的方法,首先采用比如15%的数据训练出一个基学习器,然后基学习器基于某种查询策略主动在真实数据集中挑选基学习器难以区分的样本,交给Oracle进行标注,然后一步步迭代更新模型,最终采用较少的数据便可以训练出一个回归模型使得其在真实数据集上得到较好的表现。
主动学习学术研究综述
“Settles, B.2009. Active Learning Literature Survey”[3]作为主动学习领域的经典论文,介绍了主动学习在2010年及以前的综述,Figure4的思维导图[4][5]结合该Survey以及近几年各大顶会中主动学习的研究展示了一些主动学习领域的一些Milestones。
Figure 4主动学习研究综述
主动学习场景
Membership Query Synthesis
MembershipQuery Synthesis[5]可查询任意样本或随机生成(例如对图片样本进行旋转或添加“噪声”等,类似样本增强的策略),然后将其送给Oracle进行判断,其过程如图所示,由于在样本的随机生成过程中,其有较大的不确定性,因此在某些应用,专家也无法标记样本,故这种方法对于某些应用场景有一定的局限性。
Figure 5 Membership Query Synthesis
Stream-Based Selective Sampling
Stream-BasedSelective Sampling或Sequential active learning,其核心假设为样本的获得是“免费的”或代价较小的,因此基学习器每次基于某种查询策略选择一个样本给专家进行标记,如图所示,模型通过某种“informative measure”确定是否由专家标注样本,或舍弃该样本。该方法支持在线学习(online learning)
Figure 6 Stream-Based SelectiveSampling
Pool-Based Sampling
Pool-BasedSampling与Stream-Based Sampling最大的区别即为Pool-Based Sampling每次确定一批unlabeled data,由专家标记,如图4所示,Pool-Based Sampling是active learning中应用最为广泛的一种framework,同时支持在线学习。
Figure 7 Pool-Based Sampling
主动学习查询策略
Uncertainty Sampling
Least confident sampling
基学习器根据每一个样本所属类别输出概率最大值,选择一个最不确定的样本
Margin sampling
基学习器根据每一个样本所属第一个和第二个最可能类别概率差,选择一个最不确定的样本
Entropy Sampling
基学习器根据每一个样本所属类别概率的熵,选择一个最不确定的样本
下面的热力图显示了通过三种查询策略后,在一个三分类任务中,不同的查询策略倾向于查询到的最不确定的样本。
Figure 8三分类任务样本不确定性热力图
下面的例子展示如何具体运用三种查询策略:
假设有一个三分类任务,训练好一个基学习器后,基学习器要在剩余样本的pool中选择一个最不确定的样本进行模型迭代更新,这个pool中有三个未标注的样本,输入基学习器后,基学习器输出了三个样本分别属于三个类别的概率:
proba = np.array([
[0.1 , 0.85, 0.05],
[0.6 , 0.3 , 0.1 ],
[0.39, 0.61, 0.0 ]
])
n 通过Leastconfident sampling:
1 -proba.max(axis=1) = [0.15, 0.4 , 0.39]
可以得到most uncertain样本为第二个样本
n 通过Marginsampling:
part = np.partition(-proba, 1, axis=1)
margin = - part[:, 0] + part[:, 1]
margin = [0.75, 0.3 , 0.22]
可以得到mostuncertain样本为第三个样本
n 通过Entropysampling:
Entropy = entropy(proba.T)
Entropy = [0.51818621, 0.89794572, 0.66874809]
可以得到mostuncertain样本为第二个样本
Other Query Strategies
除了Uncertainty Sampling之外,还有Query-by-Committee, Expected Model Change, Expected Error Reduction,Variance Reduction, Density-Weighted Methods等Query Method和相对应的变体,具体可阅读参考文献[3]的chapter 3以获取其余查询策略。
主动学习算法流程
最后,以一张流程图展示主动学习的算法流程,完成本次主动学习算法的介绍。其中红色部分的模块为算法流程的超参数,可以根据具体的场景进行调节。
Figure 9主动学习算法流程
Reference
[1] https://cloud.google.com/ai-platform/data-labeling/pricing
[2] Ilhan, Hamza Osman, and Mehmet FatihAmasyali. “Active Learning as a Way of Increasing Accuracy.” InternationalJournal of Computer Theory and Engineering 6, no. 6 (2014): 460.
[3] Settles, B. 2009. Active LearningLiterature Survey
[4] http://parnec.nuaa.edu.cn/huangsj/alipy/
[5] https://www.datacamp.com/community/tutorials/active-learning
[6]
https://modal-python.readthedocs.io/en/latest/index.html
作者:Frank
- 点赞
- 收藏
- 关注作者
评论(0)