CNN 在分类任务上很不错!
However, this achievement is only possible because of large amount of labeled images.
大量的无误的 label 的获取 is a laborious task and takes a lot of time and money.
Our goal is to study the effect label noise on deep networks, and explore simple ways of improvement.
提出了两种解决方法,然后确实 can improve state-of-the-art recognition models
noisy layer 即为 Q,定义如下:
Q 是一个 probability matrix,每项都是 positive,each column sums to one,因为是条件概率,比如有猫、狗、老鼠三类, y ∗ y^* y∗为老鼠, y ∗ y^* y∗ 转化为猫、狗、老鼠的概率和应该为 1!
确认了这种 motivation,……,网络学出来 y ∗ y^* y∗,通过 Q Q Q 来 better match to the noisy labels,也即 y ~ \widetilde{y} y
没有 noisy label 的时候,可以设置 Q Q Q 为 identity matrix,有 noisy label 后 Q Q Q 通过 learning 学到,is linear,可以 backpropagation
加了 noisy layer 后,问题转化为求下面的式子,也即最大化释然估计!更细节的分析可以参考 【Noise-Label】《Training a Neural Network Based on Unreliable Human Annotation of Medical Images》
matrix Q 是 classes 行 classes 列的,当类别很多的时候,很难用 cross-validation 的方法来估计,那么如何求解呢?
作者的方法,用 clean data D ∗ D^* D∗ 训练出来的模型算一个 confusion matrix,然后用 noisy data D ~ \widetilde{D} D 训练出来的模型算一个 confusion matrix(confusion matrix 可以参考 【Keras-CNN】CIFAR-10 中的 2.7 小节,显示混淆矩阵
),两者的差值 should be the noise distribution Q.
有点懵?这样可以吗?答案是可以的
误差来自于下面两个方面
model mistakes 在 clean data 和 noisy data 训练出来的模型中都存在,difference 以后抵消了,然而,第二项 noisy label mistakes 仅 noisy data 训练出来的模型中存在!真是妙哉!!!
下面用公式来规范表示下上述作者的解法,The goal is to estimate the noise distribution of D ~ \widetilde{D} D
其中 c i j ∗ c_{ij}^* cij∗ 和 c ~ i j \widetilde{c}_{ij} c ij 的关系如下:
然后用 Bayes’ rule ,把 r i j r_{ij} rij 转化为 q j i q_{ji} qji
r i j r_{ij} rij 通过 confusion matrix 的 difference 可以求出, p ( y ~ = j ) p(\tilde{y}=j) p(y~=j) 可以通过标签求出,未知变量 q j i q_{ji} qji 和 p ( y ∗ = i ) p(y*=i) p(y∗=i),一个方程,两个变量无穷解,好在之前有个约束, ∑ j q j i = 1 \sum_{j}q_{ji} = 1 ∑jqji=1,这样两个方程两个解,可以求出我们需要的 q j i q_{ji} qji 了
对于上面形式的 R 的求法,作者说出了其弊端,
也即,如果 R R R 和 C ~ \widetilde{C} C 的相关性比较小,那么求逆的操作会放大存在的噪声!
作者用如下的形式来求 R R R,通过 L1 正则化,来加入 sparsity prior on R
加这种稀疏的先验也是有道理的,因为现实中的数据 are likely only be mislabeled with small set of other classes(医学图像处理领域就不好说咯,标注成本很高,很耗时)
求出了 R R R,就可以根据 Baye’s rule 来求 Noisy Distribution Q 了!
现实生活中,我们基本不可能有 100% clear data,这样的情况下,如何来评估 noisy distribution Q 呢?
我们用 noisy data 求出来的 noise distribution 为 Q ^ \hat{Q} Q^,用 clean data 求出来的为 Q Q Q,两者关系如下
Q ^ C = Q \hat{Q}C = Q Q^C=Q
Q ^ , C , Q \hat{Q},C,Q Q^,C,Q both probability matrix
作者证明,求 minimize t r ( Q ^ ) tr(\hat{Q}) tr(Q^) 的最优解,满足 Q ^ = Q \hat{Q} = Q Q^=Q
矩阵A的迹(用 tr(A) 表示)就等于A的特征值的总和,也即矩阵A的主对角线元素的总和!In practice,作者 t r ( Q ^ ) tr(\hat{Q}) tr(Q^) 落地方式为对 Q ^ \hat{Q} Q^ 进行 weight decay 约束!(很想看看 code)
这里意思是,约束 tr( Q ^ \hat{Q} Q^) 来使得 Q ^ \hat{Q} Q^ 更好的逼近 Q Q Q,作者证明了约束 tr( Q ^ \hat{Q} Q^) 会使得 Q ^ \hat{Q} Q^ 向 Q Q Q 靠拢,最优解就是 C 为 identity!
一开始固定 Q ^ \hat{Q} Q^ 为 identity,也就相当于不加 noisy layer 层,
训练到一定的阶段(validation error stops decreasing),来训练 weight decay 的 Q ^ \hat{Q} Q^ (开始训练 noisy layer 层)使得 Q ^ \hat{Q} Q^ 向真实的 Q Q Q 逼近,使得 C C C 向 identity 逼近,这样结果能进一步提升!
最后,validation error 不降的时候停止,防止 over-fitting
最后的结果
如果测试 clean data 的时候,我们要 remove Q ^ \hat{Q} Q^ 或者设置为 I I I,但是验证 noisy label 的时候,还是需要加上 learned Q ^ \hat{Q} Q^!
不是改变模型去拟合 noisy label,而是改变 noisy label,Given a noisy label is i i i, we replace it with vector label s i s_i si
S be the conversion matrix consisting from column vectors s i s_i si
1)Bottom-up Noise Model 的对数最大似然
2)Top-down Noise Model 的对数最大似然
不能直接求 S(原因参考原文)作者用如 α ⋅ I + ( 1 − α ) / K \alpha \cdot I +(1-\alpha)/K α⋅I+(1−α)/K 的形式来处理,也即 label smoothing!(参考【Inception-v3】《Rethinking the Inception Architecture for Computer Vision》)
降低 noisy data 的 weight,来结合 clear data 和 noisy data,这种方式在两种模型中都可以使用
实验两个思路展开
一个是在 clean data 的数据集下,人为加噪声来评估 bottom-up(clean、noisy版)和 top-down 两种结构(5.2 小节)
二是在 noisy data 的数据下,也即不晓得 noisy distribution(5.3 小节)
1)SVHN(32x32 images,600k for training,26k for testing)
2)CIFAR-10
all data are clean
3)CIFAR-10 with Tiny Images dataset
4)ImageNet with noisy images download from web search engines
其中1.3 M clean,1.4 noisy images 根据关键字在网上搜索,剔除掉和 imagenet 重合的部分!!!
下面一个图尽显 bottom-up 模型的优势(颜色越深,error 越高)
从我画的红线中可以看出,
前 50 epoch fixed Q ^ \hat{Q} Q^,后 70 epoch update Q ^ \hat{Q} Q^,weight decay 0.05 or 1
20 k clean data estimate Q
30 k noisy data 来 train final model
1)用 20 k 中的 10 k clean data 来 train 一个 model,30% test error,这就是 model mistakes
2)在 model 上,用 剩下的 10 k clean data 和 30 k noisy data 来算 two confusion matrix,difference 以后的结果为 R,然后计算出Q,名为 estimate Q ^ \hat{Q} Q^,下图的 estimate Q ^ \hat{Q} Q^ 有50%的噪声,estimate Q ^ \hat{Q} Q^ 和 true Q 相差不是很大!说明这个方法的可行性!
3)用 estimated Q ^ \hat{Q} Q^ 就可以来 train 带有 noisy label 的 data 了!
这个表可以看出,estimated 这种方式最 work,true Q 和 estimate Q ^ \hat{Q} Q^ 都是 fixed parameters 来 trained new model 的!!!
CIFAR-10 was originally created by cleaning up a subset of Tiny Images
两种模型结合, γ = 0.2 \gamma = 0.2 γ=0.2 时效果最好!给 noisy label 加权,看下效果
第四列对应着 figure 7,可以看出 bottom up 的效果一般,top-down 反而好,作者给出的解释是,因为 extra data 中有太多的非 10类的图片,violate the noise model ,而 top-down 表现好的原因是 impose a more uniform label distribution on these outside images!!!
作者用最后一列的实验来验证了他上述的 hypothesis,150k random 的label 为 uniform label,相当于 α = 0.1 \alpha=0.1 α=0.1,里面 not just the excluded set(Tiny Images),效果确实不错!如下是作者对 α = 0.1 \alpha=0.1 α=0.1 的总结!!!
作者应该只用 1.5 M 的clean data来 train model,然后 extra data 是配合 clean data 一起训练的
This demonstrates that noisy data can be very beneficial for training.
bottom-up clean 版(手头有100%的clean data)
bottom-up noisy版(手头的数据不干净,weight decay on Q)