《 Self-supervised Sample Mining》笔记

论文:《Human-Machine Cooperation: Self-supervised Sample Mining
作者:王可泽

Motivation

在许多应用场景中,已标注的数据集不是很多,但是未标注或部分标注的数据集非常多。在监督学习任务中,足够多的标注数据对模型来说至关重要,因此使用未标注和部分标注的数据集的想法越来越重要。但是为未标注或部分标注的数据进行标注的成本很高,因为通常需要人力来标注,而且未标注的数据太多。同时,挑选出可以提高模型表现的好样本不是一件简单的工作。论文提出了一种Self-supervised Sample Mining(SSM)框架,可以使用未标注或部分标注的数据训练模型。

Innovation

SSM借鉴了自主学习、主动学习和自监督学习的思想。
主动学习(Self-paced Learning, SPL)起源于课程学习(Curriculum learning, CL),灵感来自于人的认知过程,先学习简单的知识(样本),然后总结归纳,再学习复杂的知识(样本),再总结归纳,如此重复学习。

自监督学习(Self-supervised Learning, SSL)是使用没有额外的人工标注学习特征的表征,一般就是适合有未标注或部分标注数据集的任务。

主动学习(Active Learning, AL)也是使用为标注或部分标注的数据的学习算法,但是AL主要是主动提出标注请求,关注的是样本选择策略,关键是选择能够提高模型表现的好样本。目前的样本选择策略大概可以分成两种,分别是不确定性准则(uncertainty)和差异性准则(diversity)。信息熵越大,就代表不确定性越大,包含的信息量也就越丰富。不确定性策略就是要想方设法地找出不确定性高的样本,因为这些样本所包含的丰富信息量,对我们训练模型来说就是有用的。差异性策略是希望所选择的样本提供的信息是全面的,各个样本提供的信息不重复不冗余,即样本之间具有一定的差异性,避免样本信息冗余。

之前的工作在单个样本上下文之间计算样本选择指标,这种方法对模型偏差和样本数据类型不平衡很敏感,鲁棒性不行。SSM则可以在多个样本上下文之间计算样本选择指标,提高了方法的鲁棒性。而且之前的方法不支持mini-batch训练,但是SSM支持。

Advantage

根据SSM设计了SSM框架可以使用未标注或部分标注的数据进行模型训练,而且可以最小化人力标注的成本。训练出来的模型的表现效果比当前先进的方法要好。

Disadvantage

这是个人观点。因为SSM涉及AL,模型的训练过程需要人参与,为proposal人工标注,因此训练过程会变慢。对于一些很庞大的训练数据集(比如ImageNet),光是训练就要好几周。因为任务只有少量的已标注的数据集,因此SSM肯定需要迁移学习,SSM训练的过程只是fine-tune,但是SSM在每次mini-batch之后都要选择低一致性样本,通过人工标注低一致性样本,因此人工标注的速度对模型的训练速度有很大的影响。

Method

论文提出的SSM框架的管道流图如下
《 Self-supervised Sample Mining》笔记
这个框架有两个阶段,分别是通过SSM对高一致性样本进行伪标注阶段和通过AL选择低一致性样本阶段。首先使用已标注的图片对模型进行fine-tune,对未标注或部分标注的图片提取region proposals(未标注样本),把这些region proposals粘贴到已标注的图片中进行交叉图片验证,根据重新预测出来的置信度确定如何对未标注样本进行标注。对于高一致性样本,直接进行伪标注,对于低一致性样本,通过AL挑选出来,让相关人员进行标注。伪标注的样本用于模型的fine-tune,而新标注的样本添加到已标注的图片中,同时也用于模型的fine-tune。

Formulation

我们先了解SSM使用的公式,从公式中获取框架的具体细节。

在物体检测问题中,假设我们有n个region proposals(指的是ground truth bb)和m个类别。定义训练集为D={xi}i=1nRd\mathcal{D} = \{x_i\}_{i=1}^n \in R^d,其中xix_i表示第i个region proposal。我们有m个检测器/分类器(包括背景),使用one-vs-rest策略识别region proposal。定义xix_i的标签为yi={yi}j=1m\mathbf{y}_i = \{y_i\}_{j=-1}^m,是one-hot向量,其中yi(j){+1,1}y_i^{(j)} \in \{+1, -1\}表示xix_i是否属于第j类。

大多数样本的标签Y={yi}i=1n\mathbf{Y} = \{y_i\}_{i=1}^n是不知道的。初始化的已标注的图片定义为I\mathbf{I}。数据{xi}i=1n\{x_i\}_{i=1}^n在训练过程中会增加。

整个框架的损失函数为:
(1)Loss=Lloc(W)+LclsAL(W)+LclsSSM(W,V) \text{Loss} = \mathcal{L}_{\text{loc}}(\mathbf{W}) + \mathcal{L}_{\text{cls}}^{\text{AL}}(\mathbf{W}) + \mathcal{L}_{\text{cls}}^{\text{SSM}}(\mathbf{W}, \mathbf{V}) \tag{1}
其中Lloc(W)\mathcal{L}_{\text{loc}}(\mathbf{W})定义bounding box的回归损失,和R-CNN的一样。LclsAL(W)\mathcal{L}_{\text{cls}}^{\text{AL}}(\mathbf{W})LclsSSM(W,V)\mathcal{L}_{\text{cls}}^{\text{SSM}}(\mathbf{W}, \mathbf{V})是AL和SSM过程的损失。

论文定义
LclsAL(W)=1ΩIiΩIj=1mi(xi,W) \mathcal{L}_{\text{cls}}^{\text{AL}}(\mathbf{W}) = \frac{1}{ \left | \varOmega_I \right |} \sum_{i \in \varOmega_I} \sum_{j=1}^{m} \ell _i(x_i, \mathbf{W})
其中ΩI\varOmega_I为当前已标注图片I(III \in \mathbf{I})的region proposal。i(xi,W)\ell _i(x_i, \mathbf{W})表示proposal xix_i在第j个分类器的softmax损失:
i(xi,W)=(1+yi(j)2logϕj(xi;W)+1yi(j)2log(1ϕj(xi;W))) \ell _i(x_i, \mathbf{W}) = -\left ( \frac{1+y_i^{(j)}}{2} \log \phi_j (x_i; \mathbf{W}) + \frac{1-y_i^{(j)}}{2} \log (1 - \phi_j (x_i; \mathbf{W})) \right )
其中W\mathbf{W}是m个类别的CNN模型的参数。ϕj(xi;W))\phi_j (x_i; \mathbf{W}))xix_i输入第j类的似然值(概率值)。注意似然值前面的系数,因为yi(j){+1,1}y_i^{(j)} \in \{ +1, -1\},所以与常见的形式不同,但效果还是是的似然值的系数为0或1。

接着讲LclsSSM(W,V)\mathcal{L}_{\text{cls}}^{\text{SSM}}(\mathbf{W}, \mathbf{V})损失。为了选择xix_i更新yi\mathbf{y}_i,论文引入了一组权重变量,如V={v(j)}j=1m={[v1(j), ,vn(j)]T}j=1m\mathbf{V} = \{ v^{(j)}\}_{j=1}^{m} = \{ [v_1^{(j)}, \cdots, v_n^{(j)}]^T \}_{j=1}^m,定义:
(2)LclsSSM(W,V)=1ΩIiΩIj=1m(vi(j)j(xi,W)+R(xi,vi(j),W))s.t.j=1myi(j)+12,yi(j){1,+1} \mathcal{L}_{\text{cls}}^{\text{SSM}}(\mathbf{W}, \mathbf{V}) = \frac{1}{\left | \overline{\varOmega_I} \right |} \sum_{i \in \overline{\varOmega_I}} \sum_{j=1}^{m} \left ( v_i^{(j)} \ell_j (x_i, \mathbf{W}) + R(x_i, v_i^{(j)}, \mathbf{W}) \right ) s.t. \sum_{j=1}^{m} \left | y_i^{(j)} + 1 \right | \le 2, y_i^{(j)} \in \{ -1, +1\} \tag{2}
其中ΩI\overline{\varOmega_I}表示未标注或部分标注的图片I的region proposals。约束条件限制标签yi\mathbf{y}_i为one-hot向量或0向量。正则化函数R()R(\cdot)在损失方面线性地对样本权重进行惩罚。论文使用硬加权正则化以适应复杂的场景。硬加权就是权重为0或1。论文定义的硬加权正则化公式为:
(3)R(xi,vi(j),W)=f(xi,W)vi(j) R(x_i, v_i^{(j)}, \mathbf{W}) = -f(x_i, W)v_i^{(j)} \tag{3}
其中
(4)vi(j)={1,j(xi,W)f(xi,W)0,otherwise v_i^{(j)} = \begin{cases} 1, \ell_j (x_i, \mathbf{W}) \le f(x_i, \mathbf{W}) \\ 0, \text{otherwise} \end{cases} \tag{4}
f()f(\cdot)是交叉图片验证函数:
(5)f(xi,W)=λΩIjpΩIj1(IoU(BI(xi),BI(xp))γ)ϕj(xp;W)) f(x_i, \mathbf{W}) = \frac{\lambda}{\left | \varOmega_I^{\overline{j}} \right |} \sum_{p \in \varOmega_I^{\overline{j}}} \mathbf{1} (\text{IoU}(B_I(x_i), B_I(x_p)) \ge \gamma) \phi_j (x_p; \mathbf{W})) \tag{5}
为了理解交叉图片验证函数,首先了解交叉图片验证的过程,如下图
《 Self-supervised Sample Mining》笔记
首先从未标注的图片中选择一个region proposal xix_i,被预测为属于第j类。把xix_i随机粘贴到一个没有j类别物体的已标注的图片中,然后进行一致性评估。红色的bounding box BI(xp)B_I(x_p)BI(xq)B_I(x_q)表示最新的分类器在新生成的图片中提出的region proposal xpx_pxqx_q

如果预测为j类的xix_i是一个好样本,那么xix_i的内容可以很好地展示j类的特征。把xix_i粘贴到没有j类物体的图片中,那么从新生成的图片提取的region proposals中有包含xix_i的proposal。选择没有j类物体的图片是为了避免歧义,使得验证结果更有说服力。包含xix_i内容的新的region proposal xpx_pxqx_q的预测结果应该在第j类有很大的概率值。如果xpx_pxqx_q的预测结果应该在第j类有很大的概率值,那么说明xix_i在不同的图片中有高的(预测)一致性。SSM选择一个高一致性的样本,SSM过程就没太多的损失。

现在说明公式(5)的符号,ΩIj\varOmega_I^{\overline{j}}表示没有j类别物体的已标注图片上的region proposals,λ\lambda表示步长参数(和自主学习有关),BI(xi)B_I(x_i)表示选中的未标注的region proposal xix_iIoU(BI(xi),BI(xp))\text{IoU}(B_I(x_i), B_I(x_p))表示BI(xi)B_I(x_i)BI(xp)B_I(x_p)的交并比,γ\gamma是交并比的阈值,在论文中设为0.5,1()\mathbf{1}(\cdot)是指示函数。

如果xix_i是一个好样本,具有高一致性,那么交叉图片验证f()f(\cdot)的值比较大,会有j(xi,W)f(xi,W)\ell_j (x_i, \mathbf{W}) \le f(x_i, \mathbf{W}),从而样本权重vi(j)=1v_i^{(j)} = 1。至于为什么硬加权正则化函数(公式(3))有个负号,我也不懂,而且后面没有使用到硬加权正则化函数。

Alternative Optimization Strategy

开始讲模型的优化过程。论文中通过SSM过程更新样本权重V\mathbf{V},通过伪标注和AL过程更新标签Y\mathbf{Y},通过BP过程更新模型参数W\mathbf{W}

更新V\mathbf{V}:固定{Y,X,W}\{ \mathbf{Y}, \mathbf{X}, \mathbf{W}\},然后通过公式(5)计算f(xi,W)f(x_i, \mathbf{W}),接着根据公式(4)确定V\mathbf{V}

更新Y\mathbf{Y}:更新V\mathbf{V}之后,计算用于选择样本的一致性分数sis_i
(6)si=1III1ΩIjpΩIjϕj(xp;W) s_i = \frac{1}{\left | \mathbf{I} \right |} \sum_{I \in \mathbf{I}} \frac{1}{\left | \varOmega_I^{\overline{j^*}} \right |} \sum_{p \in \varOmega_I^{\overline{j^*}}} \phi_{j^*} (x_p; \mathbf{W}) \tag{6}
其中jj^*表示有最高置信度的预测类别:
j=argmaxj[m]ϕj(xp,W) j^* = \arg \underset{j \in [m]}{\max} \phi_j (x_p, W)
我觉得论文中公式写错了,应该是
j=argmaxj[m]ϕj(xi,W) j^* = \arg \underset{j \in [m]}{\max} \phi_j (x_i, W)
应该是选择xix_i置信度最高的预测类别j,然后把xix_i粘贴到没有j类别物体的已标注的图片中。论文中最多选择N张已标注的图片,为了平衡精度和效率,减少计算量。论文实验设置N=5N=5

计算所有挑选出来的xix_isis_i,得到S={si}i=1mS = \{s_i\}_{i=1}^m,然后对S进行降序排序,每种类别挑选出前k个一致性分数不为0的样本。令H\mathcal{H}表示伪标注的高一致性样本。因为要对挑选出来的样本进行算法标注,所以称伪标注。m中类别中重要的样本定义为H=[H1, ,Hj, ,Hm]\mathcal{H} = [H_1, \cdots, H_j, \cdots, H_m],其中[Hjk][| H_j | \le k],k是一个经验参数,用了控制每种类别挑选的样本的数量。

固定{W,V,{xi}i=1H}{\{ \mathbf{W}, \mathbf{V}, \{{x_i}\}_{i=1}^{|\mathcal{H}|} \}},可以优化公式(2)的yiy_i
(7)minyi{1,+1}m,iHj=1mvi(j)j(xi,W)s.t.j=1myi(j)+12 \underset{y_i \in \{-1, +1\}^m, i \in \mathcal{H}}{\min} \sum_{j=1}^{m} v_i^{(j)} \ell _j (x_i, \mathbf{W}) \quad s.t. \sum_{j=1}^{m} \left | y_i^{(j)} + 1 \right | \le 2 \tag{7}
样本的权重向量vi̸=0v_i \not = 0。约束条件要求yiy_i必须是one-hot向量或者0向量。因此要求出一个样本的最优标签yiy_i,只需要尝试m+1m+1次。

这样挑选样本可以有效地抑制逐渐增加的伪标签错误的积累,因为(1)在不同图片内容中交叉图片验证提供更精确和更鲁棒性的评估,(2)所有的伪标签都是一次性的,每次mini-batch迭代之后就会被丢弃。

Low-consistency Sample Annotating:对高一致性样本进行伪标注之后,使用AL过程基于人的知识提供更多的信息指导来更新已标注的图片集I\mathbf{I}。AL过程目的是选择有更多信息的未标注的样本,然后让用户标注它。论文中的选择指标基于不确定性准则。收集sis_i特别小,预测结果有多个正标签(分类有歧义)的样本,称这些样本为低一致性样本。随机从低一致性样本中挑选z个,放到低一致性样本集U\mathcal{U},然后通过人工标注。

更新W\mathbf{W}:固定{D,V,Y}\{\mathcal{D}, \mathbf{V}, \mathbf{Y}\},公式(2)可近似为:
(8)minw1H{ΩI}IIiH{ΩI}IIj=1mj(xi,W)+L(W) \underset{w}{\min} \frac{1}{\left | \mathcal{H \cup \{{\varOmega_I}\}_{I \in \mathbf{I}} } \right |} \sum_{i \in \mathcal{H \cup \{{\varOmega_I}\}_{I \in \mathbf{I}} }} \sum_{j=1}^m \ell_j (x_i, \mathbf{W}) + \mathcal{L}(\mathbf{W}) \tag{8}
这里使用AL和SSM的分类损失和bounding box的回归损失,没有考虑正则化函数R()R(\cdot)

整个优化过程由下面的伪代码表示:
《 Self-supervised Sample Mining》笔记

收敛分析:这个框架能够保证收敛,有3个原因。(1)公式(2)关于V\mathbf{V}是凸函数。(2)使用公式(8)对模型进行fine-tune可以收敛到局部最优。(3)AL过程会在没有找到低一致性样本时停止。

Experiment

首先是SSM和其他方法的比较,这里只简单的说下结果。

下图是在VOC 2007 test set的结果
《 Self-supervised Sample Mining》笔记
横轴表示模型使用多少人工标注进行训练,可以看到论文的方法(FRCN+Ours)比其他方法的表现都要好,大概需要30%的人工标注就能达到全监督学习的效果,而其他方法大概需要60%的人工标注才能达到全监督学习效果。因为数据存在冗余,不需要所有的样本同样能学到很好的效果。

下表是更加具体的实验结果
《 Self-supervised Sample Mining》笔记

下图是通过交叉图片验证过程选择高一致性样本和低一致性样本。
《 Self-supervised Sample Mining》笔记
第一列表示未标注的图片,黄色标注的是region proposals和对应的伪标注。其他的是在新图片的预测结果。
a是高一致性样本,可以看到无论是在原图还是新图,样本的proposal的预测类别一样,预测值都很高。b是低一致性样本,上两行低一致性的原因是新图预测了错误的bounding box,下两行是因为伪标注错误。