论文:https://arxiv.org/pdf/2209.06993.pdf
代码:https://github.com/usr922/FST
一句话总结:利用未来时刻模型作为当前训练的监督。
1、背景
对于有大量未标注的样本的数据集,自训练(self-taining, ST)的解决方案是在有标注的样本上让模型学习,然后为无标记的样本生成伪标签,用伪标签来进一步训练模型。这个过程可以反复迭代,直到收敛。一般来说,用于伪标签预测的教师网络通过计算学生(即要学习的模型)权重的指数移动平均 (EMA) 来获得。
指数移动平均 (exponential moving average, EMA) 是一种对近期数据赋予更高权重的方法。
假设有n个数据, EMA的计算公式为 ,其中表示前t个数据的平均, 是加权权重。
但在这个做法其实在用一个差的模型去指导一个好的模型(因为模型在学习),这样的训练策略依赖于过去的状态,结果,出现了确认偏差( confirmation bias)问题,即由那些不正确的伪标签引起的错误监督信号在训练过程中累积。
为此,作者提出了 future-self-training (FST),让模型从未来的自己中学习。与图 1a 中采用 t-step 教师(即在时刻 1,2,...,t -1 时用学生更新)来指导 t-step 学生的传统 ST 框架相比,FST 提出了一个鼓励 t-step 学生向 (t+1)-step 老师学习的新训练方式。
然而,在训练步骤 t 开始时,(t+1) 步教师尚不可用,因为它依赖于待优化的 t 步学生。为了解决这个障碍,作者提出了一个虚拟更新策略。具体来说,首先像传统 ST 中那样优化当前学生。不同的是,作者实际上并没有更新学生的权重,而是缓存了梯度。这种隐藏的梯度可以被视为“虚拟未来”,并有助于推导出 (t + 1) 步教师。最后,第 t 步的训练借用了最新教师预测的伪标签,将这次梯度应用于真实的学生权重。
作者希望模型向未来学习的动机,是帮助它从高级教师那里获得知识。为此,作者提出了两种让教师能力更强的变体。一方面,作者提出 FST-D 来深入研究未来,作者要求教师通过虚拟更新向前移动 K 步,因此 (t + K) 步教师可以更好地监督 t 步学生。另一方面,作者利用了模型汤的思想,即用多个微调模型的平均权重可以提高性能, 提出了 FST-W,用从不同训练样本中培养出来的教师一起广泛探索未来,并期望学生同时向所有这些 (t + 1) 步的教师学习。
作者认为,FST 的教师模型能够生成质量更高的伪标签,从而帮助学生获得更好的表现。这是因为,随着训练过程,未来状态通常优于过去状态,因此可以提供更准确的监督,减少确认偏差的损害。
2、方法
2.1 背景
假设有:
:来自分布 P 的标记的数据集
:来自未知分布 Q 的未标记数据集
同时利用 构建语义分割模型, 当 时,这个问题属于 无监督域自适应(UDA)语义分割的范畴。否则,它通常被视为半监督学习(SSL)任务。
语义分割中最常见和广泛使用的自我训练形式之一是平均教师的一种变体,如图 3 所示。
Mean-Teacher 方法是Tarvainen 和 Valpola在2017 年提出的,该方法采用神经网络作为监督分类器,并基于具有相同输入的两个接近的模型应该做出相同预测的假设。其中一个模型称为教师,而另一个模型称为学生。这两个模型在结构上是相同的,它们的权重是相关的,即教师的权重是学生权重的指数移动平均值。在这种情况下,学生模型是唯一在标记训练集上进行训练的模型,并使用均方误差或 Kullback-Leibler 散度计算教师的概率分布预测和学生的概率分布预测之间的一致性损失。
用 表示需要训练的分割模型,用 表示它的参数。平均教师框架使用动量教师 在未标记数据上预测的伪标签,来训练学生 。动量教师 与学生有相同的架构,但具有不同的参数 。
具体来说,教师通过在每次训练迭代中保持学生权重的 EMA 与学生一起进化。这种集成可以对未标记的样本生成高质量的预测,将它们用作训练目标可以提高性能。
在每个训练步骤里,首先更新教师,然后预测伪标签来训练学生:
其中 是动量系数, 是学习率, 是动态重新加权参数,用于权衡标记和未标记数据的训练。 表示 预测的伪标签,即 。 是逐像素交叉熵损失。
尽管表现出色,但自训练仍存在确认偏差问题。具体来说,伪标签中的固有噪声可能会误导学生的训练,进而影响伪标签的预测,从而导致噪声积累。尽管平均教师框架中的动量更新策略提高了对不准确伪标签的容忍度,但这个问题仍然是一个瓶颈,因为学生仍然依赖于从自己过去的训练状态中学习。
2.2 方法
尽管监督中存在噪音,但学生模型的性能通常在训练期间有所提高。从这个角度来看,一个合理的猜想是,我们能否利用未来时刻的模型信息来指导当前的训练迭代?
受此启发,作者提出了未来的自我训练,以促进在语义分割中使用未标记的数据。具体来说,在每个训练步骤,直接通过下一个训练时刻的学生权重更新教师模型。为此,对等式 (1)进行了简单的修改,如下:
可以看到与公式(1)的区别是,将公式(1)中更新公式中的直接替换成,
只使用一个虚拟的未来状态来更新教师,而忽略了当前学生的权重。
我们的目的是建立一个可靠的伪标签生成器(即更强大的老师)。就 EMA 的集成效果而言,没有必要丢弃 。因此,作者提出了一个改进版的 FST 如下:
其中引入了一个新的动量参数 来区分当前和未来模型权重对教师更新的贡献。
2.3 Explore deeper future
在实验中,作者发现公式 (4) 性能仅略有改善,表明这种一步的未来探索策略是不够的。
因此,作者进一步提出了一个前瞻性的更深层次的策略,以窥探更深层次的未来学生状态。具体来说,在每个训练步骤中,我们不仅使用下一刻的学生权重更新教师,还使用更深步骤的权重更新教师。形式上,首先表示 和 两个代理变量。然后使用进行虚拟更新,如下所示
其中 表示当前训练的序列虚拟步骤,K 是探索步骤的总数。
最后,使用未教师 作为伪标签生成器,来监督当前的训练。应用简单的重新分配和梯度下降更新来形成更深版本的 FST,即所谓的 FST-D,如下所示
2.4 Explore wider future
另一方面,更广泛地而不是更深入地展望未来是增强未来探索的另一种直观方式。受最近进展的启发,不同模型权重的集合通常表现出优异的性能,作者提出首先探索不同优化方向的下一个时刻,然后使用它们的平均值来更新教师。
具体来说,通过在每个训练时刻向学生模型提供不同的数据批次来获得不同的优化方向,即更广泛的 FST 版本 FST-W,如下所示:
其中 表示不同的样本,N是平行的虚拟探索步骤。公式(7)之所以成立,是因为平均化模型权重相当于先平均化梯度,然后通过梯度下降更新参数。
值得注意的是,FST-D和FST-W是互补的,可以一起利用,作者将这部分留给了未来探索(doge)。
3、实验
数据集
对于无监督域自适应语义分割,来自 GTAV 和 SYNTHIA 的合成标记图像作为源域,并使用来自 Cityscapes 的真实图像作为目标域。
对于半监督语义分割, 使用PASCAL VOC 2012 数据集。从训练集中随机抽取图像的一部分(即 1/4、1/8 和 1/16)以及相应的分割 mask 作为标记数据,并将其余部分视为未标记的样本。
Baselines
对于 UDA 分割,作者采用 Dacs 中的基本框架,其中包含 ClassMix 增强。标准交叉熵损失是在标记数据和未标记数据上计算的。作者对所有语义分割模型使用高效的编码器-解码器结构,其中网络在编码器和解码器的结构中各不相同。
在半监督基准测试中,作者使用没有其他技巧的经典 ST 作为 baseline,因为它已被证明在保持简单性的同时实现了有竞争力的性能。
与 ST 的比较
为简化起见,作者使用 GTA 5 作为标记数据,使用 Cityscapes 作为未标记数据进行评估。
消融实验
作者进行了一系列实验探究各个参数的作用。 结论是:
- FST-D 总是优于FST-W,
- K=3 提升稳定,
- ,
- N=3
作者的方法需要探索未来学生的状态,随着探索步骤的数量线性增加训练时间,即 K。在作者的方法中,学生使用与经典 ST 相同的训练迭代进行训练,并且每次迭代看不到更多样本,因此ST 与 FST的比较是公平的。
尽管如此,作者用更长的训练时长建立了更强的 baseline,并比较。作者发现,在后期训练阶段,较长的训练 ST 的性能会严重下降,因为模型正在拟合伪标签中的噪声。此外,较长训练 ST baseline 的性能仍然比 FST差,这进一步证明了作者方法的有效性。
4、 总结与讨论
作者提出了一种挖掘模型自己的未来状态作为当前训练的监督的方法,包括两种变体,实验证明作者提出的方法可以确认偏差的问题,提高自训练的性能。
由于需要探索未来的状态,那么这个方法的缺点就是——很显而易见的——耗时。
一种解决方法是,保存领先的学生模型以提供来自未来时刻的信息,以空间换时间。
参考:
- 【炼丹技巧】指数移动平均(EMA)的原理及PyTorch实现
- Self-Training: A Survey