Active learning
Introduction
定义
主动学习针对数据标签较少或打标签代价较高场景设计,又称最优实验设计。主要是通过算法挑选信息量高未标注数据让标注员确定数据的标签,同时利用标注员标注好的数据对模型参数进行更新,如此反复循环迭代后期望数据完成大批量数据集的自动化标注,同时模型也能利用较少的标注数据获得较好的性能
-
以下图片是 logistic regression 在随机挑选数据与基于 hard mining 方式挑选数据训练得到的不同结果,明显针对性挑选在分类决策面边界的不确定度高的样本更利于模型收敛
实现流程:
- 适配任务的模型:基于数据输入能够得到预测结果,比如图片分类模型就是输出各个类别的置信度
-
在数据挑选、数据标注与模型训练几个步骤中进行反复迭代:
-
确认待标注的候选数据(hard mining)(
重要步骤
) - 人工标注,获得数据的标签
- 模型更新:通过增量学习或者重新学习的方式更新模型参数
-
确认待标注的候选数据(hard mining)(
主动学习框架种类
-
Stream-Based Selective Sampling(每次挑选一个样本)
-
Pool-Based Sampling(每次确定一批待标注数据,
主流框架
)
应用场景:
- 人在回路的半自动化数据标注
- 算法量产
- 个性化的垃圾邮件、内容分类
- 异常检测:安全数据异常检测、时序异常检测
重要步骤介绍:确认待标注的候选数据(Query Stategy Frameworks)
以下方法说明均以图像分类(二分类或多分类)任务为例
1. 不确定性采样(uncertainty sampling)
挑选模型难以区分的样本,主要方式有:
-
置信度最低(Least Confident)
选择最大概率最小的样本
-
边缘采样(Margin Sampling)
选择容易被判定为两类的样本数据,及模型预测的最高置信度与第二高置信度差异小的样本
其中
y1
^
\hat{y_{1}}
y
1
^
和
y2
^
\hat{y_{2}}
y
2
^
分别代表模型预测的最高置信度类别和第二高置信度类别 -
熵方法(Entropy)
熵越大代表不确定性越高,挑选熵大的样本
2. 基于委员会的查询(Query-By-Commitee)
类似集成学习方法,设定多个模型,通过多个模型投票的方式挑选较难区分的样本,方法有:
-
投票熵(Vote Entropy)
基于熵衡量样本被多个分类器预测的一致性,即如果这些分类器将样本划分为同一类,算容易区分;如果分类器把样本数据划分到不同类则算难以区分
其中
yi
y_{i}
y
i
表示第 i 类,
V(
y
i
)
V(y_{i})
V
(
y
i
)
表示投票给
yi
y_{i}
y
i
的分类器个数,
CC
C
表示分类器总数 -
平均 KL 散度(Average Kullback-Leibler Divergence)
KL 散度用于衡量两个概率分布的差异,这里用 KL 散度计算不同模型估计偏差较大的数据样本
D
D
D
表示两个概率的 KL 散度
3. 期望模型变化(Expected Model Change)
选择使得梯度变化最大的样本数据(需要反向传播过程,速度慢)
4. 基于误差减少的查询(Expected Error Reduction)
选择那些通过增加一个样本就能使得 loss 函数减少最多的样本(这个思路类似
Pareto Multi-Task Learning
)
5. 基于方差减少的查询(Variance Reduction)
选择方差降低最多的样本数据
6. 基于密度权重的查询(Density-Weighted Methods)
选择稠密的样本数据,比如某些数据点虽然不确定度高,但是可能是异常点不适合作为训练样本,优先选择稠密性更高的样本
其中
ϕ
A
\phi_{A}
ϕ
A
表示某个不确定性采样方法或者基于委员会的查询方法,
U
U
U
表示类别个数,
x
u
x^{u}
x
u
表示第
u
u
u
类的代表元。加上权重表示会选择那些与代表元相似度较高的样本
Latest Research
Active learning for Image Classification
1.
Variational Adversarial Active Learning
-
提出了一种 pool-based 半监督主动学习算法,主要是一种对抗学习的方式:通过一个 variational autoencoder (VAE) 提取图片特征,一个判别网络判断图片是标注过的还是未标注的,VAE 希望欺骗判别网络对所有样本都判断为 labeled 数据,然而判别网络希望要准确分辨出 data pool 中的未标注样本。基于该方式挑选的未标注样本给标注员进行标注
-
实验结果方面 VAAL 相比于传统方法有较大提升
-
分割任务的涨点程度也很大
2.
Learning Loss for Active Learning
-
训练各个任务模型的同时,附带学习一个 loss prediction module
-
loss prediction module 结构如下
-
loss prediction module 训练方式
-
网络训练过程是同时优化 target 分支网络和 loss prediction module
其中
y^
\hat{y}
y
^
是 target model 的预测输出,
yy
y
是真实标签,
l^
\hat{l}
l
^
是 loss prediction module 的预测,
ll
l
是基于真实 label 计算的损失
Lt
a
r
g
e
t
(
y
^
,
y
)
L_{target(\hat{y}, y)}
L
t
a
r
g
e
t
(
y
^
,
y
)
-
通常来说
Ll
o
s
s
L_{loss}
L
l
o
s
s
最简单的定义方式是直接使用 MSE 损失,但是 MSE 在这里并不使用,因为随着网络的不断迭代训练 target loss 的尺度是越来越小的,MSE 损失对这种尺度变化非常敏感,最后会变成 loss prediction module 在适应尺度的变化而不是预测一个精确值。这样训练出的模型精度比之前的方法精度还低。 -
所以本文提出了一种 scale-invariant 的 pair-wise loss
其中
ξ\xi
ξ
是预设定的 positive margin,p 代表 i、j 为匹配对 -
分类任务上的实验精度
-
检测任务上的实验精度
-
人体姿态估计任务上的实验精度
-
和基于 entropy 的方法的对比,可以看到本文提出的模块预测损失与真实损失相关性更高
Active learning for Object Detection
- 检测一般先对 instance (比如 anchor 输出)进行打分,通过 score aggregation 方法得到图片级别的分数,一般 aggregation 方式:max/avereage/sum
1.
Active Learning for Deep Object Detection
-
通过对每个检测框的 margin sampling 进行 aggregation 来得到最终的结果
-
实验上来看大部分比 random 强
2.
Localization-Aware Active Learning for Object Detection
-
检测任务中的主动学习框架图
-
localization tightness:对于两阶段目标检测网络,模型会根据 region proposal 结果 refine 到最终预测框,region proposal 和最终预测框的 IOU 越小说明这个样本的不确定度越高。因为不确定性低的样本一般来说 region proposal 的结果就已经不错了,如果是需要 refine 过程大幅度修改则代表不确定性度高
- localization stability:根据对噪声的鲁棒性判断样本的不确定度,即随着噪声增加框预测变化大的说明不确定度大
-
实验结果
其中 C 是只根据分类置信度挑选样本,R 是随机, LS 是 localization stability,LT 是 localization tightness
3.
Consistency-based Active Learning for Object Detection
-
整体框架
-
CALD 方案,分为两个stage
1. stage1 根据单个样本挑选样本,方式是根据经过数据增广(可能是串行)后的预测一致性来判断,一致性差的样本信息量大,需要被挑选;
2. stage2 根据多个样本的互信息挑选样本,首先统计已标注数据的类别分布,在挑选样本时尽量挑选类别分布与已标注数据类别分布差异大的,分布差异采用 JS 散度度量,这样缓解了类别不均衡性
-
信息量的度量方式一般希望满足两个原则
- 随着标注过程不断进行,模型不断迭代更新,labeled pool 和 selected pool 中的信息量都应该降低;
- selected pool 的信息量应该要高于 labeled pool
-
CALD 与经典方法 (LS+C、predicted loss) 的信息量度量方式对比,可以看到 CALD 更能满足上面两个原则:
-
stage2 的基于互信息采样缓解样本不均衡问题
Active learning for semi-automated labeling
1.
Active Learning with Amazon Mechanical Turk
-
结合主动学习和众包做智能标注
-
整体框架
- 前端是简单的网页界面,用于分发数据和标注
- 后端进行模型训练、未标注样本采样等步骤,支持多种 active learning 策略
-
并行化策略
- 为了避免标注员等待数据采样,unlabeled pool 中会根据数据的信息量防止在一个队列中,基于该队列的顺序给标注员安排待标注数据
- 众包任务分配时根据样本的 majority voting 情况判断是否需要新加标注员进行标注
-
实验结果
Conclusion
- 主动学习主要是通过难样本挖掘来提升深度神经网络训练的高效性,在智能标注、算法量产等领域有重要的应用
- 难样本挖掘这里目前主流的 SOTA 方案都是使用神经网络来预测样本的难易程度,挑选出难样本(信息量大)进行网络训练,能在使用较少训练样本的条件下加快模型收敛速率和收敛效果
- 智能标注这里主动学习是算法模块中重要组成部分,整个智能标注系统的搭建还依赖于工程的设计,比如底层数据库、前端标注并发等设计
Reference
[1] Active_learning_(machine_learning) wiki
[2] Settles B. Active learning literature survey[R]. University of Wisconsin-Madison Department of Computer Sciences, 2009。
[3] Active-learning tutorial (datacamp)