[论文阅读] Cost-Effective Active Learning for Deep Image Classification

论文地址:https://arxiv.org/abs/1701.03551
发表于:TCSVT’16

Abstract

最近在基于学习的图像分类方面取得的成功,在很大程度上依赖于大量的标注训练样本,这可能需要大量的人力。在本文中,我们提出了一个新的主动学习框架,它能够通过有限的标记训练实例,以增量学习的方式,建立一个具有竞争力的具有最佳特征表示的分类器。我们的方法在两个方面推进了现有的主动学习方法。首先,我们将深度卷积神经网络纳入主动学习中。通过合理设计的框架,特征表示和分类器可以同时被逐步标注的有价值样本所更新。第二,我们提出了一个Cost Effective的样本选择策略,在减少人工标注的情况下提高分类性能。不同于只关注预测置信度低的不确定样本的传统方法,我们从未标注的样本集中发现大量的高置信度样本用于特征学习。具体来说,这些高置信度的样本被自动选择并反复分配伪标签。因此,我们把我们的框架称为"Cost-Effective Active Learning"(CEAL),代表了这两个优点。广泛的实验表明,所提出的CEAL框架可以在两个具有挑战性的图像分类数据集上取得可喜的成果,即CACD数据库的人脸识别和Caltech-256的物体分类。

I. Network Architecture

在这里插入图片描述
本文的最大特点可以认为是把半监督学习加到了主动学习里面去。对于以前的大多数主动学习方法,我们都是设计各种各样的准则来选取一部分"最有价值"(最不确定)的样本来进行模型标注;但是这么个过程其实有个问题,相当于把我们剩下的大量无标注样本给浪费了。

本文的做法是,我们以前认为的"最无价值"(最确定)的样本同样是有价值的,因为由于其足够确定,我们可以直接将其预测结果作为伪标签来训练模型,从而增强模型表征的鲁棒性。于此相对的,我们主动学习选到的样本作用是增强模型表征的多样性。

简单来说,就是置信度低,不确定的,上人工标注;置信度高的,确定的,做成伪标签。标题所谓的Effecitive就体现在,如果置信度高的预测确实是对的,那么就相当于我们利用伪标签替代了人工标注这些高置信度样本的过程,从而做到高效。

II. Method

令完整数据集为 D = { x i } i = 1 n D=\left\{x_{i}\right\}_{i=1}^{n} D={xi}i=1n,样本共有 m m m个类别,其中的已标注部分记做 D L D^{L} DL,未标注的部分记做 D U D^{U} DU。对于样本 x i x_i xi,记其标签 y i = j , j ∈ { 1 , … , m } y_{i}=j, j \in\{1, \ldots, m\} yi=j,j{1,,m},也就是说该样本属于第 j j j类。

整个CEAL框架的目标函数如下: min ⁡ { W , y i , i ∈ D L } − 1 n ∑ i = 1 n ∑ j = 1 m 1 { y i = j } log ⁡ p ( y i = j ∣ x i ; W ) \min _{\left\{\mathcal{W}, y_{i}, i \in D^{L}\right\}}-\frac{1}{n} \sum_{i=1}^{n} \sum_{j=1}^{m} \mathbf{1}\left\{y_{i}=j\right\} \log p\left(y_{i}=j \mid x_{i} ; \mathcal{W}\right) {W,yi,iDL}minn1i=1nj=1m1{yi=j}logp(yi=jxi;W) 其实就是一个交叉熵。需要注意的是,原文 m i n min min的下标为 D U D^{U} DU而非 D L D^{L} DL,笔者认为此处有误(因为未标注集没有标签,无法求解交叉熵;此外也与后文公式矛盾)。

III. Initialization

本文的初始标注集初始化方法属于主流的随机抽取。但是其实有一个细节可以注意:

For each class we randomly select few training samples …

照字面意义,是针对每个类选取一定量的随机样本。但是本身初始数据集是没有标注的,也就是不存在哪个是哪个类的概念,这里的表述可能属于有误或者有歧义,需要结合代码理解。

IV. Complementary Sample Selection

在给定的当前已标注集上训练收敛后,接下来要进行的就是样本选择过程。记此时的网络参数为 W \mathcal{W} W,利用现成的主动学习准则(如Least confidence、Margin sampling、Entropy)等,可以对所有未标注样本按实质上的确定程度排个序;确定性低的 K K K个样本,我们进行人工标注,直接加入 D L D^{L} DL中,扩大已标注样本集;

那么对于未标注的,这里有点意思,我们讲有些半监督是把这些确定性高的也给用伪标签标注了,然后加入 D L D^{L} DL中;但是仔细一想的话,这么搞多少难免会混进一些错误的伪标签,时间久的话可能就把模型给污染了(错误标签过多),因此不能直接把伪标签视为真正的人工标注。本文是怎么处理的呢?

V. CNN Fine-Tuning

本文将这些确定性高的样本记为 D H D^{H} DH。针对文本而言,这里的确定性高指预测结果的entropy小于阈值 δ \delta δ。现在,我们可以把开头提到的CEAL目标函数简化为如下: min ⁡ W − 1 N ∑ i = 1 N ∑ j = 1 m 1 { y i = j } log ⁡ p ( y i = j ∣ x i ; W ) \min _{\mathcal{W}}-\frac{1}{N} \sum_{i=1}^{N} \sum_{j=1}^{m} \mathbf{1}\left\{y_{i}=j\right\} \log p\left(y_{i}=j \mid x_{i} ; \mathcal{W}\right) WminN1i=1Nj=1m1{yi=j}logp(yi=jxi;W) N N N表示已标注集 D L D^{L} DL与伪标注集 D H D^{H} DH的样本数目之和,依据此损失函数,我们可以求网络的参数梯度: ∂ L ∂ W = ∂ − 1 N ∑ i = 1 N ∑ j = 1 m 1 { y i = j } log ⁡ p ( y i = j ∣ x i ; W ) ∂ W = − 1 N ∑ i = 1 N ∑ j = 1 m 1 { y i = j } ∂ log ⁡ p ( y i = j ∣ x i ; W ) ∂ W = − 1 N ∑ i = 1 N ( 1 { y i = j } − p ( y i = j ∣ x i ; W ) ) ∂ z j ( x i ; W ) ∂ W \begin{aligned} \frac{\partial \mathcal{L}}{\partial \mathcal{W}} &=\partial \frac{-\frac{1}{N} \sum_{i=1}^{N} \sum_{j=1}^{m} \mathbf{1}\left\{y_{i}=j\right\} \log p\left(y_{i}=j \mid x_{i} ; \mathcal{W}\right)}{\partial \mathcal{W}} \\ &=-\frac{1}{N} \sum_{i=1}^{N} \sum_{j=1}^{m} \mathbf{1}\left\{y_{i}=j\right\} \partial \frac{\log p\left(y_{i}=j \mid x_{i} ; \mathcal{W}\right)}{\partial \mathcal{W}} \\ &=-\frac{1}{N} \sum_{i=1}^{N}\left(\mathbf{1}\left\{y_{i}=j\right\}-p\left(y_{i}=j \mid x_{i} ; \mathcal{W}\right)\right) \frac{\partial z_{j}\left(x_{i} ; \mathcal{W}\right)}{\partial \mathcal{W}} \end{aligned} WL=WN1i=1Nj=1m1{yi=j}logp(yi=jxi;W)=N1i=1Nj=1m1{yi=j}Wlogp(yi=jxi;W)=N1i=1N(1{yi=j}p(yi=jxi;W))Wzj(xi;W) 这个式子看不懂没关系,重点关注最后的式子中出来了个这么玩意: { z j ( x i ; W ) } j = 1 m \left\{z_{j}\left(x_{i} ; \mathcal{W}\right)\right\}_{j=1}^{m} {zj(xi;W)}j=1m 其表示网络 s o f t m a x softmax softmax层的输入。

这一整串的公式不看也不影响理解。大致意思是,直接把伪标签当做真实标签,在反复迭代过程中可能导致模型参数污染。那么怎么避免参数污染呢?其实不迭代那么多次就行了。也就是说,在本轮更新完之后,把 D H D^{H} DH的伪标签抹掉变回 D U D^{U} DU,在下轮重新寻找新的 D H D^{H} DH

VI. Threshold Updating

由于网络是会逐渐overconfidence的,因此预测结果的熵会逐渐普遍越来越大,此时如果 δ \delta δ还比较大的话那就没啥意义,因此后面需要慢慢把 δ \delta δ给调小: δ = { δ 0 , t = 0 δ − d r ∗ t , t > 0 \delta=\left\{\begin{array}{cc} \delta_{0}, & t=0 \\ \delta-d r * t, & t>0 \end{array}\right. δ={δ0,δdrt,t=0t>0

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值