Probabilistic End-to-end Noise Correction for Learning with Noisy Labels阅读笔记
写在前面
首次接触噪声学习问题是在NLP领域的某两篇论文中,并得知噪声学习问题在CV领域的研究更加广泛且深入,于是乎参照github上一个learning with noise的论文列表,开始粗略阅读CV领域噪声学习方面的论文,并希望能够找到能够借鉴的思路,未来将其迁移至自己研究的领域。PENCIL这篇论文个人还是比较喜欢的,本文结合论文和他人博客内容对论文思路进行梳理,若有理解偏差之处还烦请指出~
要点概述
以下是PENCIL模型框架:
分析 | 内容 |
---|---|
动机 | 数据标签存在噪声问题,对有监督训练造成巨大负面效应,而单纯地丢弃噪声数据则会导致数据量减少,同样也不是我们希望看到的 |
方案 | 将包含噪声的标签替换成随着训练过程不断更新的软标签 |
创新点 | 软标签这个思想其实之前就有,但是本文软标签更新的方案比较特别(之后有空再整理对比别的更新方案) |
详细分析
本文的较为核心的两部分是模型损失的计算和标签的更新,下面将分别讲解。在此之前,先来介绍各个符号的含义。
符号含义
符号 | 含义 |
---|---|
y ~ \widetilde{y} y | 个人理解是一个衔接 y ^ \hat{y} y^和 y d y^{d} yd的变量,它帮助 y d y^{d} yd正则化为一个概率分布 |
y ^ \hat{y} y^ | 原始带噪声的标签 |
y d y^{d} yd | 标签分布(label distribution),作为纠正后的软标签 |
Y ~ \widetilde{Y} Y | 所有 y ~ i \widetilde{y}_i y i的联合 |
Y ^ \hat{Y} Y^ | 所有 y ^ i \hat{y}_i y^i的联合 |
Y d Y^{d} Yd | 所有 y i d y^{d}_i yid的联合 |
模型损失的计算
具体公式如下图所示:
由此可见,模型的损失包含以下三个部分:
第一部分损失(Lc) | ![]() |
---|---|
含义 | 使用预测分布与软标签之间的KL散度对偶式来度量分类损失(是最主要的损失) |
第二部分损失(Lo) | ![]() |
---|---|
含义 | 使用噪声标签与软标签的交叉熵损失,防止软标签与噪声标签偏差过多(前提是噪声标签大部分可信) |
第三部分损失(Le) | ![]() |
---|---|
含义 | 使用预测分布与自己的交叉熵损失,防止训练卡在局部最优(待议) |
标签的更新
接下来看一下PENCIL的算法流程,如下图所示。
更新涉及到的公式:
y
d
=
s
o
f
t
m
a
x
(
y
~
)
y^{d} = softmax(\widetilde{y})
yd=softmax(y
)
y
~
=
K
y
^
\widetilde{y} = K\hat{y}
y
=Ky^
如下图所示,为了更新label distribution(也就是软标签 y d y^{d} yd),我们需要计算第一部分损失(分类损失)对 y d y^{d} yd的偏导。图中两个公式分别是:对使用KL散度形式的 L c L_{c} Lc求相应偏导,和对使用KL散度对偶形式的 L c L_{c} Lc求相应偏导的结果。作者接下来想要证明后者更优。
注意,
f
j
(
x
i
;
θ
)
f_{j}(x_{i};\theta)
fj(xi;θ)是网络的预测结果,它与label distribution
y
d
y^{d}
yd之间的差距决定了网络参数
θ
\theta
θ如何更新。
(Q:为啥没有说第二部分损失对其偏导?)
具体是如何证明的呢,我们先看下图中的原文解释。
对于第
i
i
i个训练样本,假设它是第
j
j
j类。
f
j
(
x
i
;
θ
)
f_{j}(x_{i};\theta)
fj(xi;θ)是第
i
i
i个训练样本被网络预测成第
j
j
j类(即正确预测)的概率;
y
d
y^{d}
yd是label distribution即软标签,
y
i
d
y^{d}_{i}
yid是第
i
i
i个训练样本的label distribution,因此
y
i
j
d
y^{d}_{ij}
yijd是该样本label distribution中第
j
j
j列的值(也就是该软标签认为的该类别的置信度)。根据公式(10)和(11)我们可以得出以下结论:
- 结论1:如果 f j ( x i ; θ ) f_{j}(x_{i};\theta) fj(xi;θ)远大于 y i j d y^{d}_{ij} yijd。公式(10)由于有个log,所以计算出的梯度是medium negative;公式(11)计算出的梯度是large negative,梯度更大
- 结论2:如果 f j ( x i ; θ ) f_{j}(x_{i};\theta) fj(xi;θ)远小于 y i j d y^{d}_{ij} yijd。和上面一样的道理,公式(10)由于有个log,所以计算出的梯度是medium positive;公式(11)计算出的梯度是接近于0
假设于对第 i i i个训练样本 x i x_{i} xi,它的真实分类类别是7,但它的原始噪声标签 y ^ \hat{y} y^ (one-hot)分类类别是3,即在第三列( j = 3 j=3 j=3)数值最大, y ^ i , 3 = 1 \hat{y}_{i,3}=1 y^i,3=1。由于我们对 y i d y^{d}_{i} yid初始化时使用的是噪声标签,因此最开始的 y i d y^{d}_{i} yid在第三列数值最大( y i , 3 d y^{d}_{i,3} yi,3d will be the peak in label distribution)。为了让结果预测正确,网络内部的平滑操作需要使得预测结果 f j ( x i ; θ ) f_{j}(x_{i};\theta) fj(xi;θ)逐渐偏向正确的第7类,即 f j ( x i ; θ ) f_{j}(x_{i};\theta) fj(xi;θ) peak at j = 7 j=7 j=7。
为了达到上述目的,我们需要让 f 7 ( x i ; θ ) f_{7}(x_{i};\theta) f7(xi;θ) 远大于 y ^ i , 7 \hat{y}_{i,7} y^i,7,让 f 3 ( x i ; θ ) f_{3}(x_{i};\theta) f3(xi;θ) 远小于 y ^ i , 3 \hat{y}_{i,3} y^i,3。这样的效果是,让预测结果中正确类别的分数尽可能大,噪声标签对应类别的分数尽可能小。
我们继续结合上面的出的两条结论分析。
结论1可以套进“需要让
f
7
(
x
i
;
θ
)
f_{7}(x_{i};\theta)
f7(xi;θ) 远大于
y
^
i
,
7
\hat{y}_{i,7}
y^i,7”这个情景中,使用公式(11)可以以较大值的负梯度增加
y
i
,
7
d
y^{d}_{i,7}
yi,7d,这样可以实现
y
i
,
3
d
y^{d}_{i,3}
yi,3d尽可能地大,而公式(10)无法实现;
结论2可以套进“如果
f
j
(
x
i
;
θ
)
f_{j}(x_{i};\theta)
fj(xi;θ)远小于
y
i
j
d
y^{d}_{ij}
yijd”这个情境中,使用公式(11)由于梯度为0,所以一直不更新,
y
i
,
3
d
y^{d}_{i,3}
yi,3d一直不变,而公式(10)会以中等值的正梯度减小
y
i
,
3
d
y^{d}_{i,3}
yi,3d
(Q:不是希望 y i , 3 d y^{d}_{i,3} yi,3d越小越好吗?为什么选择让它保持不变?)
备注:
噪声标签
y
^
\hat{y}
y^的作用:
- 虽然他没有直接影响参数学习,但初始化label distribution y d y^{d} yd的时候需要间接用到它(因为 y ~ \widetilde{y} y 是用 y ~ = K y ^ \widetilde{y} = K\hat{y} y =Ky^这个式子进行的初始化,而 y d y^{d} yd与 y ^ \hat{y} y^又存在着联系 y d = s o f t m a x ( y ~ ) y^{d} = softmax(\widetilde{y}) yd=softmax(y ))
- 在计算第二部分损失的时候用到了 y ^ \hat{y} y^,以防止软标签与噪声标签偏差过多