Image Classification with Deep Learning in the Presence of Noisy Labels: A Survey

PRELIMINARIES

1. Problem Statement

已知一个输入数据集S={ (x1,y1),…,(xN,yN) } ∈ (X,Y)N,服从D分布,我们的任务是在函数族f中寻找最佳映射函数f:X→Y,其中每个函数都用θ参数化。
分类器的损失函数表示为l:R×Y→R+。然后,对于分类器f,预期风险定义如下:

由于对分布D拥有完全的知识通常是不可行的,因此使用经验风险作为近似值:

学习分类器的各种方法可以看作是最小化网络参数的经验风险,即:

在噪声背景下,数据集为Sn = {(x1, y ̃1), …, (xN , y ̃N )} ∈ (X, Y )N,服从噪声分布Dn,此时经验风险为:

有监督学习的目标是在给定的分布D上迭代时,寻找最佳的估计参数θ*,然而,在噪声标签设置下,任务仍然是在处理分布Dn时寻找θ*。因此,经典的风险最小化在存在标签噪声的情况下是不够的,因为它会导致θ→θn

2. Label Noise Models

在这里插入图片描述
标签噪声受三个因素的影响:数据特征、数据的真实标签和标签的特征。根据这些因素的相关性,标签噪声可以分为三类。

  • 随机的噪声是完全随机的,既不依赖于实例特征,也不依赖于它的真实类。在给定的概率下,pe标签从其真实类中改变。
  • Y相关噪声与图像特征无关,但取决于其类别;pe=p(e | Y)。这意味着来自特定类的数据更有可能被错误标记。例如,在手写数字识别任务中,“3”和“8”比“3”和“5”更容易混淆。
  • XY相关噪声取决于图像特征及其类别;pe=p(e | x,y)。与y相关的情况一样,来自特定类的对象可能更容易被错误标记。
  • 此外,错误标记的可能性可能会根据数据特征而变化。如果一个实例与另一个类中的另一个实例具有相似的特性,则它更有可能被贴错标签。
    所有这些类型的噪声如图1所示。

3. Sources of Label Noise

  • 首先,随着网络和社交媒体上海量数据的可用性,计算机视觉社区对利用这些数据产生了极大的兴趣。然而,这些数据的标签来自凌乱的用户标签或搜索引擎使用的自动化系统。众所周知,这些获取数据集的过程会产生噪声标签。
  • 其次,可以由多个专家对数据集进行标记,从而得到多个标记的数据集。每个贴标者的专业水平各不相同,他们的意见可能会相互冲突,从而导致噪声标签问题。有几个原因可以获得由多个专家标记的数据。多个贴标者的意见可以用来互相核对对方对具有挑战性的数据集的预测,也可以使用众包平台来降低大数据标签的成本;比如Amazon Mechnical Turk、Crowdflower等。尽管价格低廉,但从非专家处获得的标签通常都是噪音很大,存在差异化的错误率。有些贴标者甚至可以是一个完全的垃圾邮件发送者谁标签与随机选择。
  • 第三,数据可能过于复杂,即使是在这个领域的专家,例如,医学成像。例如,为了收集视网膜图像的黄金标准验证数据,我们从6-8位不同的专家那里收集注释。这可能是由于人类专家任务的主观性或注释者缺乏经验。考虑到真正的诊断是至关重要的领域,克服这种噪声是非常有意义的。
  • 最后,为了正则化或数据中毒,可以有意地注入标签噪声。

4. Methodologies

基于噪声模型和无噪声模型的两种不同分割方法。
基于噪声模型的方法旨在对噪声结构进行建模,以便在训练过程中利用这些信息来识别噪声标签。一般来说,这类方法的目的是通过忽略或去强调来自噪声样本的信息来提取包含在数据集中的无噪声信息。此外,一些方法试图通过修正噪声标签来改进数据集,以提高分类器的数据集质量。这些方法的性能很大程度上依赖于对潜在噪声的准确估计。基于噪声模型的方法的优点是分类和标签噪声估计的解耦,这有助于他们处理现有的分类算法。另一个好的方面是在噪声结构的先验知识的情况下,基于噪声模型的方法可以很容易地将这些额外的信息插入到系统中。
不同的是,无噪声模型方法的目标是在没有对噪声结构进行显式建模的情况下,提出固有的噪声鲁棒方法。这些方法假设分类器对噪声不太敏感,而性能下降是由于过拟合造成的。因此,通过规范网络训练过程来避免过度拟合成为研究的重点。
在这里插入图片描述

4.1基于噪声模型的方法

在存在噪声标签的情况下,当迭代Dn分布时,任务是寻找隐藏分布D的最佳估计量。如果映射函数M:D→Dn已知,则可以用它来抵消噪声样本的影响。这一部分的算法同时尝试寻找潜在的噪声结构,并用估计的噪声参数训练基本分类器。他们需要一个更好的M估计来训练更好的分类器和更好的分类器来准确地估计M。

A. noisy channel

这种方法就是降低经验风险

即:

其中Q(fθ(xi)) = p ( ỹi | fθ(xi) )是给定噪声标签的网络预测。如果Q适应噪声结构p(ỹ| y),则网络将学习映射p(y|x)。
Q可以用噪声转移矩阵T来表示,使得Q(fθ(xi)) = Tfθ(xi),其中矩阵的每个元素表示给定真标签到有噪声标签的转移概率,Tij = p(y ̃ = j|y = i)。由于T是由概率组成的,来自单个节点的权重应之和为1。这种校正预测以匹配给定标签分布的过程也称为损失修正。
噪声信道估计中的一个常见问题是可伸缩性。随着类数的增加,噪声转移矩阵的大小呈指数级增加,使其易于计算。这可以通过只允许最可能的节点或预定义的节点之间的连接来部分避免。这些限制是由人类专家决定的,这允许在训练过程中加入额外的噪音信息。
噪声信道仅在训练阶段使用。在评估阶段,简单地去除噪声信道,得到无噪声预测。在这些方法中,性能很大程度上取决于对噪声信道参数的准确估计,因此,工作主要集中在Q的估计上。

  1. 显式计算:显式计算噪声转移矩阵,然后利用该矩阵训练基本分类器。假设数据集在干净样本和噪声样本中是平衡分布的,因此每个类别中都存在p(y = y ̃i|xi) = 1的样本,仅基于预先训练模型的噪声类概率估计,即所谓的混淆矩阵构造T。然而,噪声转移矩阵是根据干净数据子集上的网络混淆矩阵计算的。我们可以通过收集两个数据集,即:easy样本和hard样本。分类器首先训练简单的数据来提取类之间的相似关系。然后用计算出的相似矩阵作为噪声转移矩阵。对于噪声数据,另一种方法是计算噪声数据和和干净数据的混淆矩阵。然后,这两个混淆矩阵之间的差异给出了T。
  2. 迭代计算:在训练基分类器的过程中,逐步估计噪声转移矩阵。文献[46],[47]采用期望最大化(EM)[148]迭代训练网络匹配给定分布,并在模型预测的基础上估计噪声转移矩阵。在[26]中,同样的方法也用于带有噪声标签的医学数据。[149]和[48]添加一个线性完全连接层作为基本分类器的最后一层,该层经过训练以适应噪声行为。为了避免这个附加层收敛于同一矩阵和基分类器对噪声的过度拟合,在该层中应用了权衰减正则化器。[49]建议对锚定点(几乎肯定属于特定类别的数据点)使用类概率估计来构造噪声转移矩阵。在没有无噪声数据子集的情况下,从具有高噪声类后验概率的数据点中提取锚定点。然后,对矩阵进行迭代更新,使训练过程中的损失最小化。[50]通过将噪声转移矩阵投影到Dirichlet分布空间,而不是使用softmax概率来建模噪声转移矩阵。
  3. 复杂噪声信道:不同于简单的混淆矩阵,一些工作将噪声信道形式化为一个更复杂的函数。这使得噪声信道参数不仅可以通过使用网络输出来计算,还可以通过关于数据内容的附加信息来计算。例如[51]中定义了三种类型的标签噪声,即:无噪声、随机噪声、结构噪声。利用附加的卷积神经网络(CNN)来解释每个样本的噪声类型。最后,噪声层利用预测噪声类型将预测标签与噪声标签进行匹配。[52]中的另一项工作提出训练一个额外的网络作为相关估计量,从而获得标签与给定实例的相关性。在考虑相关性的前提下,将预测标签映射到噪声标签上。如果相关性很低,在有噪声的情况下,分类器仍然可以预测真实类,并且不会因此受到太大的惩罚。
B. Label Noise Cleansing

解决噪声标签的一个明显的方法是识别可疑标签并将其更正到相应的真实类。手动清理整个数据集的成本很高,因此有些研究建议只选取可疑样本发送给人工注释器,以降低成本[39]。然而,这仍然不是一种可伸缩的方法,因此,文献中提出了各种算法。包括标签修正算法,经验风险表现为以下形式

其中G(ỹi,xi) = p(yi | ỹi,xi)表示标签清理算法。标签清理算法依赖于一个特征抽取器将数据映射到特征域以研究噪声。

  1. 使用干净标签的数据:在存在干净的数据子集的情况下,目标是将无噪声标签结构融合到噪声标签中以进行校正。如果干净子集足够大,可以训练网络,一个明显的方法是通过对训练在干净数据上的网络的预测来重新标记噪声标签。对于重新标记,[53]使用给定噪声标签和预测标签的alpha混合。在[54]中使用了一个网络集合,这些网络通过数据集的不同子集进行训练。如果他们都同意标签,则将其更改为预测标签;否则,标签设置为随机标签。与保留噪声标签不同,随机设置标签有助于打破噪声中的结构,使噪声在标签空间中更均匀地分布。文献[55]采用了一种基于图的方法,通过条件随机场提取噪声标签和干净标签之间的关系。
  2. 使用带有干净和噪声标签的数据:有些作品依赖于一个子集的数据,为这些子集提供了干净和嘈杂的标签。然后从这些冲突的标签中提取出标签噪声结构,并用于噪声数据的校正。在文献[56]中,标签清洗网络得到两个输入:由基分类器提取的实例特征和相应的噪声标签。标签清洗网络和基分类器联合训练,使标签清洗网络学习在干净的数据子集上修正标签,并在噪声数据上为基础分类器提供正确的标签。同样的方法在[57]中是以师生的方式进行分离的。首先,对student进行噪声数据训练。然后通过 student 模型从干净的数据中提取特征,teacher 根据这些特征学习噪声的结构。之后,teacher 预测噪音数据的软标签,student再次接受这些软标签的训练,以便进行微调。
  3. 仅使用噪声标签的数据:无噪声数据并不总是可用的,因此在这种情况下,主要的方法是逐步估计更干净的后验标签分布。然而,该方法有一个可能的不期望的解决方案,使所有的标签都达到一个单一的类别和基础网络预测恒定的类别,这将导致最高的训练精度。因此,通常使用附加正则化器使标签的后向分布均匀。文献[58]提出了一种训练基分类器和将噪声标签传播到更干净标签的联合优化框架。利用期望最大化方法估计分类器参数和标签后验分布,以使损失最小化。在[59]中使用了类似的方法,在标签后部附加了相容性损失条件。考虑到噪声标签占少数,这一术语确保后验标签分布不会偏离给定的噪声标签分布太多,从而不会损失大部分干净标签贡献。[60]部署了一个置信策略,其中标签由网络输出或给定的噪声标签确定。随着时代数量的增加,网络输出被赋予了更多的信心,因为它能更好地估计标签。文献[61]认为,在有噪声标签的情况下,模型首先学习正确标记的数据,然后对噪声数据进行过度拟合,可以从其损失值中提取样本是否有噪声的概率。为了实现这一点,每个样本的损失由一个beta混合模型拟合,该模型反过来以无监督的方式对标签噪声进行建模。[62]提出了两个层次的方法。在第一阶段,使用任何选择的推理算法,确定地面真值标签,并将数据分为噪声和干净两个子集。在第二阶段,利用一组弱分类器对干净数据进行训练,以预测噪声数据的真实标签。然后,合并这两个数据子集,以创建最终的增强数据集。[63]为每个类构造能够代表相应类的深层特征分布的原型。然后通过检查数据样本和原型之间的相似度,找到正确的标签。[64]引入了一个新的参数,即质量嵌入,它表示数据的可信度,并通过神经网络进行估计。根据真实类概率和质量嵌入这两个潜在变量,一个附加的网络试图提取每个实例的真实类。在多标签数据集中,每个实例都有多个表示其内容的标签,一些标签可能会部分丢失,从而导致部分标签。在部分标签的情况下,[65]使用一个网络来查找和估计容易丢失的标签,而另一个网络则要根据这个校正的数据进行训练。[150]将视频异常检测作为标签噪声问题的分类,并根据视频片段的特征和时间一致性,训练一个图卷积标签噪声清除网络。
C. Dataset Pruning

另一种方法是删除噪声,而不是将带有噪声的标签更正为它们的真实类。虽然这会导致信息丢失,但防止噪声的负面影响可能会带来更好的性能。在这些方法中,存在移除过多样本的风险。因此,为了防止不必要的数据丢失,尽可能少地删除样本是至关重要的。

  • 一种选择是完全删除有噪声的数据,并将数据集修剪成更小的干净数据集。在文献[66]中,在概率分类器的帮助下,训练数据分为两个子集:clean和noisy。根据这些子集的大小估计噪声概率。最后,利用基网络对数据实例的输出置信度,根据估计的噪声率去除大部分不可信样本。在[67]中,使用了转移学习,以便在干净数据集上训练的网络在噪声数据集上进行微调,以便重新标记。然后,再次训练网络重新标记数据,对数据集进行重新采样,以构建最终的干净数据集。在[68]中,学习率被周期性地调整,以改变网络状态在不拟合和太合适了。自从当欠拟合、噪声样本造成较大损失时,在循环过程中噪声较大的样本被去除。
  • 另一种选择是在保留数据实例的同时删除标签。这一过程产生有标记和无标记的数据,因此,半监督学习方法[151]可用于训练这个新的数据集[69]或重新标记的未标记数据[72]。或者,标签移除可以通过每次迭代完成,以动态更新数据集,以更好地利用半监督学习。[70]使用给定标签和模型预测的移动平均值之间的一致性来评估给定标签是否有噪声。然后在下一次迭代中用干净的样本训练模型。这个过程一直持续到收敛到最佳估计量。在[71]中也使用了同样的方法,只是稍作调整。不是与给定的标签进行比较,而是将预测的移动平均值与当前纪元中的预测标签进行比较。这个类中的另一种方法是在有标记和未标记的数据上训练网络,然后使用它重新标记噪声数据[74]。假设正确标记的数据占大多数,[73]建议将数据集随机分为有标记和未标记的子群。然后,使用实例间的相似性索引将标签传播到未标记的数据中。重复此过程,为每个实例生成多个标签,然后使用多数投票设置最终标签。
D. Sample Choosing

一种广泛使用的克服标签噪声的方法是操纵分类器的输入流。引导网络选择正确的实例,从而帮助分类器在噪声标签存在的情况下进行正确分类。

在上述公式中,V(xi,yi)是决定是否使用给定数据集xi的二进制算子。如果对于所有数据集而言V(xi,yi)= 1,那么上述公式就是经典的求风险最小化。如果V恰好是一个静态函数,这意味着在整个训练过程中根据预先定义的规则选择相同的样本,那么它就是Dataset Pruning,样本选择方法持续监控基本分类器,并选择样本进行下一次训练迭代。这项任务可以看作是在数据中绘制一条路径,模拟无噪声的D分布。由于这些方法在现有系统之外运行,因此只需操纵输入流,它们更容易附加到现有的算法中。然而,重要的是保持平衡与数据集修剪相同,这样系统就不会忽略不必要的大量数据。此外,这些方法优先考虑低损失样本,这导致了缓慢的学习速度,因为hard informative samples只在训练的后期阶段被考虑。下面几段将讨论这一组的两种主要方法。

  • 课程学习(Curriculum Learning):课程学习(CL)[152]受人类认知的启发,提出从简单的样本开始,经过较难的样本来指导培训。这也被称为self-paced learning[153],在样本难度未知的情况下,我们可以通过计算该样本模型的损失来推断样本难度。在噪声标记框架中,干净的标记数据可以被接受为一项简单的任务,而噪声标记的数据则是一项困难的任务。因此,CL的思想可以转移到标签噪声设置中,从自信干净的实例开始,并且随着分类器的改进,经过可能是噪声更大的样本。文献[75]提出了各种屏蔽损失函数,根据噪声水平对实例进行排序。在[76]中,教师的任务是为学生选择最可能干净的样本。教师不使用预先定义的课程,而是根据学生的输出不断更新课程。我们认为CL降低了学习速度,因为它集中在简单的样本上,[77]建议在训练中选择不确定的样本,这些样本有时被错误地预测,而对其他样本的预测则是正确的。假设这些样本可能没有噪声,因为噪声样本一直被错误地预测。鉴于0-1损失难以优化,文献[78]提出了选择损失值较低的样本进行损失计算的课程损失作为0-1损失的上限。在[79]中,根据数据的复杂性将数据分成子组,这些子组由预先训练在完整数据集上的网络提取。由于不太复杂的数据组期望有更干净的标签,训练将从不太复杂的数据开始,并随着网络变得更好而考虑更复杂的实例。通过检查标签与网络预测的一致性,可以选择下一个要训练的样本。在[80]中,如果给定样本的标签和模型预测都一致,则将其用于训练集。迭代训练为我们提供了更好的训练数据和模型。然而,也存在这样一种风险:模型不可信,并以妄想的方式选择标签;因此,应考虑建立一致性平衡。
  • 多分类器(Multiple Classifiers):有些研究使用了多个分类器来帮助彼此选择下一批要训练的数据。这与师生合作的方法不同,因为没有一个网络在监督另一个,而是相互帮助。由于这两个网络的鲁棒性可以互相纠正,所以它们的鲁棒性可以互相弥补。要使此设置正常工作,分类器的初始化非常重要。它们很可能是用不同的数据子集初始化的。如果它们都是相同的,则不会发生更新,因为它们都考虑是否同意当前标签。在文献[81]中,假设两个网络都与给定的标签不一致,则标签是噪声的,只有当两个网络的预测发生冲突时,才会更新模型权重。[82]引入了合作教学的范式,两个网络为彼此选择下一个训练数据批。选择下一批作为数据批,根据配对网络,该批数据的损失值较小。据称,使用一个网络累积噪声相关误差,而两个网络更有效地滤除噪声误差。通过对两个网络不一致的数据进行迭代,进一步改进了协同教学的思想,以防止两个网络随着时代的增加而相互融合[83],[84]。另一项使用协同教学的工作首先在一个选定的子集合上训练两个网络,然后移动到全数据集[85]。
E. Sample Importance Weighting

与样本选择类似,通过样本估计的噪声水平给样本赋予权重,可以使训练更加有效。这样做的效果是强调更干净的实例,以便更好地更新模型权重。这些算法可以实现后续经验风险的最小化。

其中 β( xi,yi ) 确定实例依赖的权重。如果β是二元的,则公式与样本选择相同。不同的是,这里的β不是二元的,并且每个实例的值都会改变。与样本选择算法一样,β是一个动态函数,这意味着样本权重在训练过程中不断变化。因此,如何防止β变化过快、过快,从而破坏稳定的训练循环,是一个普遍的挑战。此外,这些方法通常存在累积误差,因此很容易偏向某个数据子集。为了消除噪声的负面影响,人们提出了各种方法来获得最佳β。

  • 最简单的方法是,在既有干净数据又有噪声数据的情况下,对干净数据更大的权重[48]。然而,这一点对信息的利用率很低,而且,并非总能获得干净的数据。文献[86]和[87]采用元学习范式(meta-learning paradigm)来确定权重因子。在每一次迭代中,对给定的小批量加权因子进行梯度下降,使干净验证数据的损失最小化。文献[88]采用了类似的方法,但没有隐式计算权重因子,而是使用多层感知器(MLP)来估计权重函数。公开噪声标签(Open-set noisy labels),其中与噪声标签相关的数据样本可能属于训练数据中不存在的真实类,在[89]中被考虑。Siamese network 通过训练学习区分特征,来区分干净和有噪声的数据来检测噪声标签,对噪声样本进行迭代检测并从干净样本中提取。然后,对含噪样本重新计算各迭代权重因子,并在整个数据集上训练基分类器。[27]还迭代地分离噪声样本和干净样本。除此之外,为了不丢失少数样本和难样本中有价值的信息,噪声数据根据其噪声水平进行加权,这是由pLOF [154]估计的。[90]引入了弃权,根据样本的损失值,可以选择放弃样本,并对其进行弃权处罚。因此,网络学习如何避免混淆样本,并通过弃权惩罚,调整弃权倾向。在[91]中,加权因子取决于训练数据的分布,β(X,Y)=PD(X,Y)/PDn(X,Ỹ)。在[92]中,同样的方法被扩展到多类情况。在文献[93]中,使用特征抽取器网络将实例映射到特征域。然后,通过在特征域中检查实例与其代表类原型的相似度来确定权重因子。[94]将问题描述为转移学习,其中源域是噪声数据,目标域是干净的数据子集。然后在源域中以最小化目标域损失的方式设置权重。[95]使用θ分布中样本的θ值来计算其干净的概率,并利用这些信息在训练中对干净样本进行加权。
F. Labeler Quality Assessment

数据集被多个注释器标记有几个原因。每个贴标人可能有不同的专业水平,他们的标签有时可能会相互矛盾。这是众包数据[155]-[157]或需要高水平专业知识的数据集(如医学成像[19])中的常见情况。因此,建模和使用贴标特性可以显著提高性能[24]。
在这个设置中有两个未知数,即:噪声标签特征和基本真实标签。我们可以用期望最大化算法进行估计[25],[96],[97]。如果假设噪声是y相关的,则可以用噪声转移矩阵来建模labeler特性,就像第III-A小节一样。[98]在注释器混淆矩阵的迹和的损失函数中加入正则化器,以强制矩阵的稀疏性。类似的方法在[99]中也有实现,其中群组层被添加到网络的末端。在[100]中,还考虑了图像的复杂度来考虑xy相关噪声。在[101]中,人类注释器和计算机视觉系统相互使用,这两个部分的预测值之间的一致性被用来评估贴标机的可靠性。[102]处理标签机在图像中省略标签时的噪声。因此,本文采用省略概率变量代替噪声转移矩阵,并结合期望最大化算法对真实类进行估计。[24]中为每个注释器训练了单独的softmax层和附加网络,以根据labeler特定网络的输出和数据的特征来预测真实的数据类别。这种设置使每个贴标机和他们的整体噪声结构在单独的网络模型。

G. Discussion

基于噪声模型的方法在很大程度上依赖于噪声结构的精确估计。这就带来了一个两难的局面。为了得到更好的噪声模型,我们需要更好的估计器,而对于更好的估计器,有必要对潜在噪声有更好的估计。因此,许多方法都可以看作是噪声估计和分类的期望最大化。然而,防止系统偏离实际是很重要的,因此规范化噪声估计并不要让它脱离现实是很重要的。为了实现这一点,文献中的工作通常对潜在的噪声结构进行假设,这就损害了它们对不同设置的适用性。另一方面,这使得关于噪声的任何先验信息都可以被插入到系统中,以实现先发制人。它对于处理特定领域的噪声也很有用。这些算法的另一个优点是将噪声估计和分类任务解耦。因此,它们更容易在现有的分类算法上实现。

4.2 基于无噪声模型的方法

基于无噪声模型的方法主要是实现标签噪声的鲁棒性,而无需对其进行显式建模,而是在所提出的算法中设计鲁棒性。 带有噪声的数据被视为异常,因此这些方法在避免过度拟合方面也很相似。 它们通常依赖于分类器的内部噪声容忍度,旨在通过规范不希望的有噪声数据存储来提高性能。 以下各节介绍了各种方法。

A. Robust Losses

如果分类器学习了有噪声和无噪声的数据,并且都达到了相同的分类精度,则损失函数被认为具有抗噪能力。 本节中的算法旨在以使噪声不会降低性能的方式设计损失函数。 然而,事实表明,即使对于鲁棒的损失函数,噪声也会严重影响性能[15]。 此外,这些方法以相同的方式处理嘈杂的数据和干净的数据,这会防止数据分发过程中利用任何先验信息。

在[103]中,表明某些非损失函数(例如0-1损失)比常规的凸损失具有更大的噪声容限。扩展这项工作[104],[105],可以得出足够的条件,以使损失函数能够容忍统一噪声。他们的工作表明,如果给定的损失函数满足

其中C为常数,该损失函数可以忍受均匀噪声。经验表明,标准的凸损耗函数均不具有噪声鲁棒性,而0-1损耗则具有一定的信噪比。但是,0-1损失是非凸且不可微的;因此,在[106]中提出了0-1损失的替代损失,它仍然对噪声敏感。在[107]的工作中,将广泛使用的分类交叉熵( categorical cross entropy ,CCE)损失与平均误差绝对值(MAE)进行了比较,其中经验表明,MAE更能容忍噪声。
[108]表明,MEA的鲁棒性归因于其加权方案。尽管CCE对异常样本敏感并会产生较大的幅度梯度,但MAE会平等对待所有数据点,这会导致数据拟合不足。因此,在[108]中提出了改进的平均误差绝对值(IMAE),它是MAE的改进版本,其中使用超参数对梯度进行缩放以调整MAE的加权方差。 [109]也认为MAE提供的学习率比CCE低得多。因此,建议使用新的损失函数,该函数结合了MAE的鲁棒性和CCE的隐式加权。通过调整参数,可以在从MAE到CCE的一条线上调整损耗函数的特性。损失函数通常不是对称的,这意味着

受对称KL散度思想的启发,[110]提出了对称交叉熵损失来对抗噪声标签。

已知先验噪声,[111]使用关于标签噪声的先验信息提供了两个替代损失函数,即损失函数的无偏估计和加权估计。 [112]考虑了二元分类情况下的非对称遗漏噪声,其任务是从卫星地图图像中查找道路像素。遗漏的噪声使网络对其预测缺乏信心,因此他们修改了交叉熵损失,从而减少了对网络做出错误但可靠的预测的惩罚,因为这些标签更可能带有噪声。代替使用基于距离的损失,[113]建议使用信息理论损失,其中评估给定标签和预测之间基于行列式的互信息[158]以进行损失计算。在[114]中考虑了带有噪声标签的弱监督学习,并画出了损失可以忍受噪声的必要条件。 [115]表明分类校准的损失函数对对称标签噪声渐近鲁棒。总体上分析了具有鲁棒损耗的随机梯度下降[116],并且显示出比同类噪声更鲁棒的标签噪声。

B. Meta Learning

随着深度神经网络的最新发展,计算机视觉系统手动设计功能的必要性已基本消除。 而是通过机器学习技术自主学习这些功能。 尽管这些算法能够自己学习复杂的功能,但仍然存在许多手工设计的参数,例如网络体系结构,损失函数,优化器算法等。 元学习旨在通过不仅学习任务所需的复杂功能,而且学习学习本身来消除这些必要性[159],[160]。 通常,这些方法的最大缺点是它们的计算成本。 由于它们需要为每个训练循环进行梯度计算的嵌套循环,因此它们比直接训练慢几倍。

以元学习方式设计超越经典监督学习的任务已用于处理标签噪声。在[117]中,将元任务定义为针对给定的噪声数据集预测方法系列中最合适的方法。 Pumpout [118]提出了一个元目标,即通过按比例的梯度上升消除噪声样本对模型的影响来恢复噪声样本造成的损害。作为元学习范例,不可知论元学习(MAML)[160]寻求权重初始化,可以很容易地对其进行微调。在[119]中,对于嘈杂的标签使用了类似的思路,其目的是找到在师生训练框架下[161],[162]不太容易产生噪声的噪声容忍模型参数。多个学生网络都受到合成噪声破坏的数据的干扰,并且定义了元目标以最大程度地提高与教师输出的一致性,这是从没有合成噪声的原始数据中获得的。因此,学生网络被迫找到大多数抗噪性强的权重初始化,以使得在对综合损坏的数据进行训练之后,权重更新仍将保持一致。然后,将最终分类器权重设置为学生网络的指数移动平均值。可替代地,在可获得干净数据的情况下,可以定义元目标以利用该信息。 [120]中使用的方法是在干净的数据集中训练教师网络,并将其知识转移到学生网络,目的是在存在标签错误的数据的情况下指导培训过程。他们使用[163]中提出的蒸馏技术来控制从教师到学生的知识转移。在[121]中实现了在人的姿势估计任务中使用蒸馏和标签校正的类似方法。在[122],[123]中,对目标网络进行了过多噪声数据的训练,而对置信网络进行了干净子集的训练。受[159]的启发,置信网络的任务是控制对目标网络进行梯度更新的幅度,以使噪声标签不会导致梯度的更新。

C. Regularizers

众所周知,正则化可防止DNN过度拟合噪声标签。从这个角度来看,这些方法将由于噪声数据导致的性能下降视为对噪声的过度拟合。该假设在随机噪声中最有效,但对于更复杂的噪声却可能并非如此。一些广泛使用的技术是权重衰减,dropout[124],对抗训练[125],mixup [126],标签平滑[127],[128]。 [129]表明,在有噪声标签的情况下,预训练具有正则化作用。在[164]中,增加了一个额外的softmax层,并对这一层采用 dropout 正则化,原因是它提供了更鲁棒地训练并防止了由于dropout的随机性而产生的存储噪声[124]。 [130]提出了一种复杂性度量来了解网络是否开始过度拟合。研究表明,学习包括两个步骤:1)维数压缩,该维数建模与基础数据分布紧密匹配的低维子空间,2)维数扩展,其稳步增加子空间维数以适应数据。关键是在第二步之前停止。局部固有维数[165]用于衡量训练模型的复杂度,并在模型开始过拟合之前停止。 [131]在不同的域上采用经过预训练的网络,并对其进行微调,以处理带有标签的嘈杂数据集。形成图像特征的组,进行组稀疏性正则化,以便模型被迫选择相对特征并增加可靠图像的权重。

D. Ensemble Methods

众所周知,Bagging 对标签噪声的作用比Boostinbg更鲁棒[166]。 诸如AdaBoost之类的算法对噪声样本给予了过高的权重,从而导致噪声过度拟合。 但是,标签噪声鲁棒性的程度会因所选的Boosting算法而改变。 例如,它显示BrownBoost和LogitBoost比AdaBoost更强大[132]。 因此,文献中提出了AdaBoost的鲁棒性替代方案,例如基于噪声检测的AdaBoost [133],rBoost [134],RBoost1&RBoost2 [135]和鲁棒多分类AdaBoost [136]。

E. Others

互补标签(Complementary labels),定义观察值不属于的类别。例如,在十个类的情况下,一个实例有一个真实的类,而有九个互补类。由于注释者不太可能错误标记标签,因此一些研究建议在互补的标签空间中工作[137],[138]。 [139]使用自动编码器的重构误差将噪声数据与纯净数据区分开,并认为噪声数据倾向于具有更大的重构误差。在[140]中,基本模型使用带有噪声数据进行训练。在基本模型生成的特征空间之上再训练了一个附加的生成分类器。通过用最小协方差行列式估计其参数,可以找到噪声鲁棒的决策边界。在[141]中,考虑了一种特殊的设置,其中数据集由用于二元分类任务的噪声和噪声较小的数据组成。 [142]旨在提取数据实例的质量。假设训练数据集是由目标分布和其他未知分布的混合生成的,则它通过检查生成的分布与目标分布之间的一致性来估计数据样本的质量。

原型学习(Prototype learning )旨在构建可以代表类特征的原型,以学习简洁的表示法。文献[143],[144]中的一些工作提出为噪声数据创建干净的代表性原型,以便可以在干净原型而不是噪声标签上训练基本分类器。

在多实例学习中,将数据分组(称为袋),如果其中至少有一个正实例,则将每个袋标记为正,否则将其标记为负。该网络将获得一组数据,并通过学习数据的内部区分性表示来为每个Bag生成一个预测。由于使用了这组图像并产生了一个预测,因此在袋子中存在噪音标签以及真实标签对学习的影响较小。在[145]中,作者建议通过使总的袋子水平损失最小化来有效地从每个袋子中选择训练样本。附加模型在[146]中被训练为注意力模型,该模型选择要关注的图像部分。目的是将注意力集中在正确标记的图像上的几个区域上,而不是错误标记图像的任何区域上。

F. Discussion

总体上,属于该类别的方法将嘈杂的数据视为异常。 因此,它们在避免过度拟合和异常检测方面处于相似的路线。 即使此假设对于随机噪声可能非常有效,但在更为复杂和结构化的噪声的情况下,它也会失去其有效性。 由于噪声建模并未明确地与分类任务分离,因此从一般意义上来说,建议的方法将嵌入到现有算法中。 这样会阻止它们快速部署到现有的现有系统中。 此外,属于元学习和集成方法的算法可能在计算上昂贵,因为它们需要训练循环的多次迭代。

总结

整篇文章都表明,噪声标签是要从现实数据集中获得理想性能的重要障碍。除了在实际应用中监督学习的重要性外,这也是从网络[167],[168]收集数据集的重要步骤,设计网络可以在无人监督的情况下从无限的网络数据中学习[35]-[38] 。此外,除了图像分类之外,还有更多的领域需要处理标记错误的实例,例如生成网络[169],[170],语义分割[28]-[30],声音分类[171]等。所有这些因素使得应对标签噪声成为自立式学习系统的重要一步。

文献中提出了通过噪声标签现象的不同方法。所有方法都有其优点和缺点,因此可以针对用例选择最合适的算法。但是,为了划清界线,我们提出以下建议。

如果噪声结构是特定于域的,并且有关于其结构的先验信息或假设,则基于噪声模型的方法会更合适。在这些模型中,可以根据需求选择最合适的方法。例如,如果可以将噪声表示为噪声转换矩阵,则可以针对多标签情况选择有噪声的通道或标签质量评估。如果目的是在预处理阶段纯净化数据集,则可以采用数据集修剪或标签噪声清除方法。如果可以根据实例在训练中的信息性对实例进行排序,则样本选择或样本重要性加权算法将非常方便。与基于噪声模型的算法不同,无噪声模型的方法不依赖于任何有关噪声结构的先验信息。因此,如果假定噪声是随机的,则它们更易于实现,并且性能下降是由于过拟合造成的,因为它们不需要为噪声结构估计实现外部算法的麻烦。如果没有干净的数据子集,则鲁棒损失或正则化函数是更合适的选择,因为它们将所有样本都视为等同的。元学习技术可以在干净的数据子集存在的情况下使用,因为它们可以轻松地调整为利用该子集。

即使对机器学习技术进行了广泛的研究[15],但通过嘈杂的标签进行深度学习无疑是一个尚未充分研究的问题。考虑到其对DNN的巨大影响[11],该领域仍然有许多开放研究主题。例如,真正了解标签噪声对深度网络的影响可能是一个富有成果的未来研究主题。如[20]所述,我们认为CNN的第一层从数据中提取特征,而最后一层则学会从这些特征中解释标签。了解网络的哪个部分受到标签噪声的严重影响,可能有助于有效地实现转移学习。另外,如何训练属性和标签噪声的存在也是一个尚未充分研究的问题,在实际应用中具有很大的潜力[53]。 [110]显示,嘈杂的标签会降低学习效果,尤其是对于硬样本。因此,不是过度拟合,这可能是性能下降的原因,这是将来有待解决的开放问题。另一个可能的研究方向可能是努力打破噪声的结构,以使其在特征域中均匀分布[73]。如果标签商有特殊偏见,这种方法将很方便。

快速测试所提出算法的一种广泛使用的方法是通过向基准数据集添加合成标签噪声来创建嘈杂的数据集[172]-[176]。但是,这会妨碍算法的公平比较和评估,因为每个工作都会添加自己的噪声类型。文献[9],[93],[177],[178]中提出了一些带有标签的大型数据集。这些数据集是从Web上收集的,标签是从有噪声的用户标签中获得的。即使这些数据集为基准化提出的解决方案提供了有用的领域,但它们的噪声率几乎是未知的,并且在类的数据分布方面存在偏差。而且,不能在极端或中等条件下调节测试的噪声率。从这个角度来看,我们认为研究工作缺乏带噪声的数据集,而其中大部分都是经过验证的。因此,可以根据需要调节噪声率。

当有少量数据时,很少注意到从有噪声的
标记数据集中学习。考虑到其在收获数据集昂贵的领域中的潜力,这可能是一个富有成果的研究方向。例如,在医学成像中,由于其成本或数据保密性,多数时候收集干净的带注释的大型数据集是不可行的[53]。从少量嘈杂的数据中有效学习而又没有地面真理,可能会对自主医疗诊断系统产生重大影响。尽管可以进行一些先驱研究[24],[26],[27],但仍有许多需要探索的地方。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是使用PyTorch实现 "Learning a Deep ConvNet for Multi-label Classification with Partial Labels" 论文的示例代码。 ```python import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader from torchvision.transforms import transforms from sklearn.metrics import f1_score from dataset import CustomDataset from model import ConvNet # 设置随机数种子,保证结果可重复 torch.manual_seed(2022) # 定义超参数 epochs = 50 batch_size = 128 learning_rate = 0.001 weight_decay = 0.0001 num_classes = 20 num_labels = 3 # 定义数据预处理 transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)) ]) # 加载数据集 train_dataset = CustomDataset(root='./data', split='train', transform=transform) train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True, num_workers=2) test_dataset = CustomDataset(root='./data', split='test', transform=transform) test_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False, num_workers=2) # 定义模型 model = ConvNet(num_classes=num_classes, num_labels=num_labels) # 定义损失函数和优化器 criterion = nn.BCEWithLogitsLoss() optimizer = optim.Adam(model.parameters(), lr=learning_rate, weight_decay=weight_decay) # 训练模型 for epoch in range(epochs): # 训练阶段 model.train() running_loss = 0.0 for i, data in enumerate(train_loader): inputs, labels = data optimizer.zero_grad() outputs = model(inputs) loss = criterion(outputs, labels) loss.backward() optimizer.step() running_loss += loss.item() train_loss = running_loss / len(train_loader) # 测试阶段 model.eval() y_true, y_pred = [], [] with torch.no_grad(): for data in test_loader: inputs, labels = data outputs = model(inputs) predicted_labels = torch.round(torch.sigmoid(outputs)) y_true.extend(labels.cpu().numpy()) y_pred.extend(predicted_labels.cpu().numpy()) f1 = f1_score(y_true, y_pred, average='macro') print('[Epoch %d] Train Loss: %.3f, Test F1: %.3f' % (epoch + 1, train_loss, f1)) ``` `CustomDataset` 和 `ConvNet` 分别是数据集类和模型类,需要根据您的具体情况进行实现。在训练阶段,使用 `nn.BCEWithLogitsLoss()` 作为损失函数进行优化。在测试阶段,使用 `sklearn.metrics.f1_score()` 计算 F1 值作为模型评估指标。 希望以上示例代码对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值