【论文阅读】 Training Noise-Robust Deep Neural Networks via Meta-Learning
Abstract
- 问题背景:标签噪声可能会显著降低深度神经网络的性能。为了训练噪声鲁棒的深度神经网络,损失纠正(LC)方法被引入。LC方法假设噪声标签是由一个未知的噪声转移矩阵T从干净(真实)标签中损坏的。因此,LC方法试图准确地学习这个矩阵T。
- 方法创新:作者提出了一种新的损失纠正方法,称为元损失纠正(MLC),它可以通过元学习框架直接从数据中学习噪声转移矩阵T。MLC 不依赖于先验知识或假设,而是利用一个小的干净验证集来指导T的优化。
- 实验结果:作者在计算机视觉和自然语言处理的数据集上进行了广泛的实验,比较了MLC和其他基准方法。实验结果表明,MLC 在不同类型和比例的噪声下都能取得很好的性能,证明了其对噪声的鲁棒性和泛化能力。
1、Introduction
- 问题背景:深度学习在计算机视觉任务上取得了巨大的成功,如目标检测、图像分类、分割和人脸识别等。众所周知,深度神经网络的性能高度依赖于大规模高质量的标注数据。然而,收集这样的数据是昂贵和耗时的。人们通常借助搜索引擎、自动标注软件和众包来收集数据,这不可避免地会带来标签噪声(错误或损坏的标签)。标签噪声会导致深度神经网络过拟合噪声[38],最终降低模型的泛化性能。
- 方法创新:损失纠正(LC)方法[17, 28, 12]最近在噪声鲁棒的深度学习上取得了很好的效果。LC方法假设噪声标签是由一个未知的噪声转移矩阵T从干净(真实)标签中损坏的。因此,LC方法试图准确地学习这个矩阵T。一些早期的工作[31, 17]在主干卷积神经网络的末端添加了一个线性噪声层来隐式地估计矩阵T。与这些隐式优化不同,LC方法[28, 12]显式地估计T。例如,[28]做出了一个“完美样本”的假设,将“完美样本”近似为每个类别中具有最大预测概率的样本。然后用每个“完美样本”的预测来构造T。与使用最大预测不同,金损失纠正(GLC)[12]使用一个小的干净数据集中每个类别的所有样本的平均预测来估计T。显然,这些方法[28, 12]使用先验知识来估计T是启发式的,并且“完美样本”的假设并不总是成立。
- 实验结果:为了直接从数据中学习T而不是用启发式的方式,我们引入了元学习。元学习是一个通用的数据驱动的优化框架,它可以从数据(元数据)中学习经验(元参数)。更一般地说,元参数可以是深度学习中需要优化的一些参数。最近,元学习在许多优化任务上取得了成功,包括:超参数优化[18]、神经架构搜索[41]和优化器选择[26]等。大多数元学习方法包含两个优化循环:一个内部循环(实际训练)进行主要优化(例如主要深度网络训练),一个外部循环(元训练)优化内部循环的某些方面(元参数,例如主网络的超参数)。受到元参数优化成功的启发,在这项工作中,我们将元学习适应于通过将T视为元参数来优化T。元学习通常使用一个小的“干净”验证集来进行外部循环优化(元训练)[30]。一个小的“干净”验证集也是LC噪声鲁棒学习方法[12]的一个常见设置。利用元学习和一个小的验证集,我们提出了一种新的损失纠正方法,称为元损失纠正(MLC),来学习噪声转移矩阵T。具体来说,我们进行一个交替优化来优化T和主(主干)网络权重θ。首先,我们在虚拟训练阶段对θ进行一步前向虚拟优化,在噪声训练集上使用固定的Tt(在上一次迭代中优化的)指导纠正的损失函数;在元训练阶段,我们然后在验证集上的损失(元目标)的指导下优化T(元参数),并固定一步前向的θ;最后,我们在实际训练阶段用更新的Tt+1优化展开的θt在噪声训练集上。我们的贡献可以总结如下:我们提出了一种新的损失纠正方法,元损失纠正(MLC),来学习噪声转移矩阵。MLC 是与模型无关的,可以适应不同的主干网络,并且可以很容易地推广到计算机视觉和自然语言处理任务上。我们的MLC不依赖于“完美样本”的假设,并且从数据中学习T,而不是直接使用先验知识(堆叠最大预测[28]或平均预测[12]来构造T)。我们在计算机视觉(MNIST、CIFAR-10、CIFAR-100、Clothing1M)和自然语言处理(Twitter)数据集上进行了广泛的评估。实验结果表明,MLC 在这些数据集上取得了与最先进方法相比非常有竞争力的性能。
2、Related work
- 相关工作:在本节中,我们简要回顾了关于标签噪声的现有研究。
- 鲁棒损失函数:鲁棒损失函数是广泛研究的。[27]提出了两种鲁棒损失函数来处理空中噪声,一种处理不对称的遗漏噪声,另一种模拟配准误差,它们可以通过EM算法进行优化。[29]基于自助法引入了“软”和“硬”的损失函数。[7]证明了一个充分条件,在该条件下损失函数对于均匀标签噪声是容忍的,并且表明0-1损失和Sigmoid损失满足该条件。然后,[6]进一步证明了平均绝对误差(MAE)是深度CNN的噪声鲁棒损失。然后,[40]提出了一个广义交叉熵(GCE)损失,它是MAE和传统交叉熵(CE)损失的推广。通过调整GCE的参数,可以调整MAE和CE之间的权重。鲁棒损失函数取得了一些成功,但是它们不能在具有挑战性的噪声数据集上表现良好。
- 重新标注:重新标注是为噪声样本重新分配标签的过程。重新标注包括两种设置:(1)包含一个小的干净数据集和(2)没有这样的数据集。对于(1),[32]提出了一个多任务网络:一个清洗模型在干净样本上训练,以清洗(重新标注)噪声数据,然后一个分类模型在合并数据集(干净和重新标注的数据)上训练。[22]从知识图和干净标签中提取信息来指导噪声数据的重新标注。对于(2),[25]引入了一个自我纠错(SEC)策略,根据CNNs的预测/置信度来重新标注噪声数据。[34]也使用预测来重新标注样本。
- 加权:加权旨在学习为样本分配小权重,以期望噪声样本具有小权重。[11]引入了共同教学策略,同时训练两个网络。这两个网络选择具有小损失(预期干净数据)的训练样本,然后用这些选定的样本相互交流进行训练。通过这种方式,这两个网络可以通过提供(预期)干净样本进行训练。自我节奏学习[15, 39]被提出来根据训练损失来学习训练样本的权重。对于随机分类噪声,[24]设计了一种重要性重新加权方法,通过使用反向噪声率来重新加权样本。[16]使用一个额外的LSTM网络来学习训练样本的最优权重。[30]利用一个小的验证集来重新加权训练样本。[33]检测噪声标签并根据噪声标签检测提供的置信度来重新加权噪声样本。
- 损失纠正方法:最近,在噪声鲁棒学习上取得了很好的效果。基本上,引入了噪声转移矩阵T来纠正预测。然后,这类方法旨在学习最优的T,从而实现噪声鲁棒的模型训练。[31, 1]在主干CNN的末端添加了一个额外的线性噪声层来模拟噪声转移矩阵。与这些隐式优化不同,损失纠正方法[28, 12]显式地估计T。例如,[28]做出了一个“完美样本”的假设,将“完美样本”近似为每个类别中具有最大预测概率的样本。然后用每个“完美样本”的预测来构造T。与使用最大预测不同,金损失纠正(GLC)[12]使用一个小的干净数据集中每个类别的所有样本的平均预测来估计T。显然,这些方法[28, 12]使用先验知识来估计T是启发式的,并且“完美样本”的假设并不总是成立。为了直接从数据中学习T而不是用启发式的方式,我们引入了元学习。元学习是一个通用的数据驱动的优化框架,它可以从数据(元数据)中学习经验(元参数)。更一般地说,元参数可以是深度学习中需要优化的一些参数。最近,元学习在许多优化任务上取得了成功,包括:超参数优化[18]、神经架构搜索[41]和优化器选择[26]等。大多数元学习方法包含两个优化循环:一个内部循环(实际训练)进行主要优化(例如主要深度网络训练),一个外部循环(元训练)优化内部循环的某些方面(元参数,例如主网络的超参数)。受到元参数优化成功的启发,在这项工作中,我们将元学习适应于通过将T视为元参数来优化T。元学习通常使用一个小的“干净”验证集来进行外部循环优化(元训练)[30]。一个小的“干净”验证集也是LC噪声鲁棒学习方法[12]的一个常见设置。利用元学习和一个小的验证集,我们提出了一种新的损失纠正方法,称为元损失纠正(MLC),来学习噪声转移矩阵T_{ij}。具体来说,我们进行一个交替优化来优化T和主(主干)网络权重θ。首先,在虚拟训练阶段对 θ \theta θ 进行一步前向虚拟优化,在噪声训练集上使用固定的 T t T^{t} Tt(在上一次迭代中优化的)指导纠正的损失函数;在元训练阶段,我们然后在验证集上的损失(元目标)的指导下优化T(元参数),并固定一步前向的 θ \theta θ;最后,在实际训练阶段用更新的 T t + 1 T^{t+1} Tt+1优化展开的 θ t \theta ^t θt 在噪声训练集上。
3、方法论
3.1 噪声标签问题
在许多应用中,收集的数据集会被标签噪声(错误或损坏的标签)污染。用 D η D_{\eta} Dη 表示噪声数据集, D η D_{\eta} Dη = {( x i x_{i} xi, y ~ i \tilde{y}_{i} y~i), 1 ≤ i ≤ N},其中 $ \tilde{y}_{i} $ ∈ { 0 , 1 } C \{0,1\}^C {0,1}C可能是C个类别中的一个噪声标签。用 C × C 的噪声转移矩阵 T 表示, T i j = p ( y ~ = j ∣ y = i ) T_{ij}=p(\tilde{y}=j|y=i) Tij=p(y~=j∣y=i) 表示干净标签 i 翻转为噪声标签 j 的概率。与[12, 30]一样,我们假设我们可以访问一个小的干净数据集。这是一个合理的假设,因为在现实世界中收集这样的数据集是可行的。用 D v D_{v} Dv表示小的干净数据集(通常作为验证集), D v = ( x i , y i ) , 1 ≤ i ≤ M , M ≪ N D_{v}={(x_i, y_i), 1 \leq i \leq M},M \ll N Dv=(xi,yi),1≤i≤M,M≪N。
用 f ( x ; θ ) f(x;\theta) f(x;θ) 表示由 θ \theta θ 编码的主干深度神经网络,那么交叉熵(CE)损失可以表示为:
L o s s = C E ( f ( x ; θ ) , y ~ ) = − 1 N ∑ i = 1 N y ~ i l o g ( f ( x i ; θ ) ) (1) Loss = CE(f(x; \theta), \tilde{y}) = -\frac {1}{N} \sum_{i=1}^{N} \tilde{y}_{i} log(f(x_{i}; \theta)) \tag{1} Loss=CE(f(x;θ),y~)=−N1i=1∑Ny~ilog(f(xi;θ))(1)
给定噪声转移矩阵 T,我们修改损失函数Eq. (1)来包含 T,以实现对噪声鲁棒的模型训练。因此,修正后的损失函数表示为:
L o s s L C = − 1 N ∑ i = 1 N y ~ i l o g ( T f ( x i ; θ ) ) (2) Loss_{LC} = -\frac {1}{N} \sum_{i=1}^{N} \tilde{y}_{i} log(T f(x_{i}; \theta)) \tag{2} LossLC=−N1i=1∑Ny~ilog(Tf(xi;θ))(2)
现有方法损失修正方法的有效性高度依赖于 T 的估计。为了估计T,[28]做出了一个假设,即每个类别 i 都存在一个“完美样本” x i ′ x'_{i} xi′ ,使得 p ( y = i ∣ x i ′ ) = 1 p(y=i|x'_i)=1 p(y=i∣xi′)=1。然后,“完美样本” x i ′ x'_{i} xi′ 被近似为具有该类别最大预测/概率(softmax 分数)的样本。然后 T i j = p ( y = j ∣ x i ′ ) T_{ij}=p(y=j|x'_i) Tij=p(y=j∣xi′)。与[28]不同,Gold Loss Correction (GLC) 使用一个小的干净验证集上属于类别i的所有样本的平均预测来近似T,而不是最大预测。
动机虽然[28, 12]取得了很好的效果,但[28]和中的假设并不总是成立。例如,我们不能保证每个类别都存在“完美样本”。此外,T的估计是启发式的,因为T是直接由简单操作构造的,即堆叠最大预测[28]或平均预测。在这项工作中,我们提出了一种基于学习的损失修正方法,Meta Loss Correction (MLC),通过元学习框架直接从数据中学习T。MLC 是与模型无关的,并且从数据中学习T而不是直接使用先验知识。
3.2. 通过元学习优化转移矩阵T
在这项工作中,我们通过Meta Loss Correction (MLC)策略进行交替优化来优化噪声转移矩阵T和主干网络权重θ。具体来说,MLC 方法包含三个阶段:Virtual-Train、Meta-Train 和 Actual-Train。交替优化在这三个阶段进行。 在Virtual-Train阶段,在每个小批量中,我们固定 T t T^t Tt ,并根据噪声训练集 D η D_{\eta} Dη 上的修正损失函数优化网络权重 θ t \theta^t θt ,从而得到 θ ^ t + 1 \hat \theta^{t+1} θ^t+1(这是在上一次迭代中优化的 T t T^t Tt)。注意,这是一个“虚拟”的步骤,意味着主干网络并没有真正移动到 θ ^ t + 1 \hat \theta^{t+1} θ^t+1。这个“虚拟”的步骤为下一阶段的 T t + 1 T^{t+1} Tt+1 的估计做准备。在Meta-Train阶段,我们在固定 θ ^ t + 1 \hat \theta^{t+1} θ^t+1 的情况下,根据验证集上的损失(元目标)来优化 T t + 1 T^{t+1} Tt+1。Meta-Train的动机是我们希望找到一个在验证集上有低损失的 T t + 1 T^{t+1} Tt+1。由于 D v D_v Dv 是干净的,这个监督信号是理想的来指导 T t + 1 T^{t+1} Tt+1的优化。注意,‘验证’引导的方法也被用于通过元学习进行模型迁移学习和可微神经网络搜索[23]。 在Actual-Train阶段,我们在噪声训练集上用更新后的 T t + 1 T^{t+1} Tt+1 来优化展开后的网络权重 θ t \theta^t θt,从而得到 θ t + 1 \theta^{t+1} θt+1。显然,Actual-Train是“实际”主干网络优化的步骤,是从展开后的网络权重而不是“虚拟”步骤进行的。优化框架如图1所示。然后我们分别详细介绍这三个优化步骤。
Virtual-Train 给定噪声训练集 D η D_{\eta} Dη,在每个小批量中,我们固定 T t T^t Tt 并优化网络权重 θ t \theta^t θt,因此第t步的损失函数为:
l v i r t u a l − t r n = − 1 n ∑ i = 1 N y ~ i l o g ( T t f ( x i ; θ t ) ) (3) l_{virtual-trn}=-\frac {1}{n} \sum_{i=1}^{N} \tilde{y}_{i} log(T^t f(x_{i}; \theta^t)) \tag{3} lvirtual−trn=−n1i=1∑Ny~ilog(Ttf(xi;θt))(3)
其中 n 是训练集中的批量大小。然后通过梯度下降法用学习率 α \alpha α 来优化一步前进的“虚拟”模型权重 θ ^ t + 1 \hat \theta_{t+1} θ^t+1:
θ ^ t + 1 ( T t ) = θ t − α ∇ θ t l v i r t u a l − t r n (4) \hat \theta^{t+1}(T^t)=\theta^t-\alpha \nabla_{\theta^t} l_{virtual-trn} \tag{4} θ^t+1(Tt)=θt−α∇θtlvirtual−trn(4)
Meta-Train 给定一步前进的主干网络(固定 θ ^ t + 1 \hat \theta^{t+1} θ^t+1),我们可以在验证集上优化最优 T t + 1 T^{t+1} Tt+1:
l m e t a − t r n = − 1 M ∑ i = 1 M y i l o g ( f ( x i ; θ ^ t + 1 ) ) (5) l_{meta-trn}=-\frac {1}{M} \sum_{i=1}^M {y}_{i} log( f(x_{i}; \hat \theta^{t+1})) \tag{5} lmeta−trn=−M1i=1∑Myilog(f(xi;θ^t+1))(5)
然而,这仍然是时间和内存消耗很大的,所以我们在验证集的一个小批量上得到一个大概的估计:
l m e t a − t r n = − 1 m ∑ i = 1 m y i l o g ( f ( x i ; θ ^ t + 1 ) ) (6) l_{meta-trn}=-\frac {1}{m} \sum_{i=1}^m {y}_{i} log( f(x_{i}; \hat \theta^{t+1})) \tag{6} lmeta−trn=−m1i=1∑myilog(f(xi;θ^t+1))(6)
其中,m 是小批量的大小。转移矩阵 T 也通过学习率为 β \beta β 的梯度下降算法更新得到:
u t + 1 = T t − β ∇ T t l m e t a − t r n (7) u^{t+1}=T^t-\beta \nabla_{T^t} l_{meta-trn} \tag{7} ut+1=Tt−β∇Ttlmeta−trn(7)
运用链式法则得到:
u t + 1 = T t − β { ∇ θ ^ t + 1 l m e t a − t r n ( − α ∇ θ t , T t 2 l v i r t u a l − t r n ) } (8) u^{t+1}=T^t-\beta \{ \nabla_{\hat \theta^{t+1}} l_{meta-trn} (-\alpha \nabla_{\theta_t,T_t}^2 l_{virtual-trn})\}\tag{8} ut+1=Tt−β{∇θ^t+1lmeta−trn(−α∇θt,Tt2lvirtual−trn)}(8)
注意, u t + 1 u^{t+1} ut+1 是原始的一步前向噪声转换矩阵。 u t + 1 u^{t+1} ut+1 不能作为最终的噪声转换矩阵,因为 u t + 1 u^{t+1} ut+1 的条目并不总是非负的,而且 u t + 1 u^{t+1} ut+1 也没有归一化。因此,我们首先通过以下方法使 u t + 1 u^{t+1} ut+1 变为非负:
T ~ t + 1 = m a x ( u t + 1 , 0 ) (9) \tilde{T}_{t+1} =max(u^{t+1}, 0) \tag{9} T~t+1=max(ut+1,0)(9)
对于 T ~ t + 1 \tilde{T}^{t+1} T~t+1 的第j行,即 T ~ j t + 1 = [ T ~ j 1 t + 1 , . . . , T ~ j C t + 1 ] \tilde{T}^{t+1}_j=[\tilde{T}^{t+1}_{j_{1}},...,\tilde{T}^{t+1}_{j_{C}}] T~jt+1=[T~j1t+1,...,T~jCt+1],它表示所有概率转移到类别 j,我们对 T ~ j t + 1 \tilde{T}^{t+1}_j T~jt+1 进行归一化以得到最终的 T j t + 1 T_{j}^{t+1} Tjt+1。(这段话的意思是,我们对 T ~ t + 1 \tilde{T}^{t+1} T~t+1 的第 j 行进行归一化处理,以得到最终的转移矩阵 T 的第 j 行。这个过程是为了确保转移矩阵 T 的每一行都是一个概率分布,即每一行的元素都是非负的,并且总和为1。这样,T 的每一行就可以表示所有概率转移到类别 j 的情况。)
T j t + 1 = T ~ j t + 1 ∑ T ~ j t + 1 + δ ( ∑ T ~ j t + 1 ) , δ ( x ) = { 1 if a = 0 0 if a ≠ 0 (10) T_{j}^{t+1}=\frac {\tilde{T}^{t+1}_j}{\sum \tilde{T}^{t+1}_j + \delta(\sum \tilde{T}^{t+1}_j)}, \delta(x) = \begin{cases} 1 & \text{if } a = 0 \\ 0 & \text{if } a \neq 0 \end{cases} \tag{10} Tjt+1=∑T~jt+1+δ(∑T~jt+1)T~jt+1,δ(x)={10if a=0if a=0(10)
Actual-Train 在虚拟训练和元训练之后,我们在噪声训练集上进行“实际”的网络优化,固定 T j t + 1 T_{j}^{t+1} Tjt+1 。然后我们可以通过梯度下降法在 D η D_{ \eta} Dη 上优化未展开的网络权重 θ t \theta^t θt ,得到新的网络权重 θ t + 1 \theta^{t+1} θt+1:(这个部分的意思是,我们用更新后的转移矩阵T来修正损失函数,然后用梯度下降法更新网络参数。这是“实际”的网络优化步骤,而不是“虚拟”的步骤。这个步骤是为了让网络适应噪声数据,并提高泛化能力。)
Analysis 为了理解噪声标签的影响,我们首先回顾正常(没有损坏标签)的深度模型训练过程。在初始训练阶段(阶段I),网络快速拟合简单样本。之后,网络学习拟合困难样本(阶段II)。这个过程(阶段I和II)在[4]中有详细介绍。对于带有噪声样本的深度模型训练,我们可以看到噪声标签在阶段I并没有太大影响,因为噪声样本显然不是简单的。在阶段II,网络无法区分具有正确标签的困难样本和具有错误标签的噪声样本,因为这两种类型的样本都会产生大的损失。来自错误标签的监督信号会使网络在阶段II过拟合噪声样本。引入转移矩阵T实际上是为了减少这种过拟合。[28]的方法使用从噪声数据中学习到的先验知识来估计T。然而,这种估计不能保证T的准确性,因为这种估计本质上来源于噪声训练数据。然后,后续的方法GLC [12]意识到[28]的局限性,并在一个干净的验证集上进行 T 的估计。然而,GLC 并没有用一个合适的损失函数与深度模型训练相关联来直接优化 T。相反,GLC 通过堆叠每个类别的平均预测来启发式地构造T。在这项工作中,我们的MLC 也使用一个干净的验证集来避免错误的监督信号来估计T。此外,我们直接用一个损失函数来优化 T,该损失函数以在干净验证集上达到最佳准确率为目标。显然,我们的方法是数据驱动的而不是先验知识驱动的。