赞
踩
对于监督学习来说,如何获取大量带有标签的数据无疑是一个关键的问题,人工标注的方式费时费力,而一些自动化的方式(比如直接利用社交网络上带有标签的图片)虽然可以快速得到海量的样本,但是却无法保证标签是准确的,往往会带有一些噪声,将这样的数据集直接用于DNN,会令模型对噪声样本过拟合,导致其泛化性能变差。因此,如果能够针对这个问题设计一个框架,使得它对含有噪声标签的数据集是鲁棒的,那么就能很好地减轻工业中的数据标注困难。
这次准备介绍的DivideMix和SELF两篇论文均来自于ICLR2020,它们各自从不同的角度解决了噪声标签的问题,接下来我们就开始对它们一一介绍。
核心思想:模型将它认为是噪声标签的样本分离出来,把它们作为无标签样本,然后用半监督学习(semi-supervised learning, SSL)来对有标签+无标签样本进行学习。
Co-divide
首先是对于噪声样本的判别,这里用到了高斯混合模型(Gaussian Mixture Model, GMM),具体来说对于训练集样本
这样我们就得到了N个样本loss变量,我们认为这N个变量是由两个高斯分布的混合分布产生的,其中均值较大的那个分布是噪声样本,均值较小的是干净样本,那么接下来基于该设定,我们就可以根据每个样本的loss,分别求出它属于干净样本的概率
得到
Confidence Penalty
为了让模型收敛,我们需要在划分数据之前,先用全部的数据对模型训练几个epochs,以达到“预热”的目的。然而“预热”过程会导致模型对非对称噪声样本(例如一共0、1、2三类标签,原始标签是1的样本,其噪声标签大量集中在0,少部分在2)过拟合,从而使得噪声样本也具有较小的loss,这样GMM就不好判别了,会影响到后面的训练。为了解决这个问题,我们在“预热”训练时的,可以在原先交叉熵损失的基础上加入额外的正则项
Co-refinement+Co-guess+MixMatch
对训练数据进行划分之后,我们就可以利用一些现成的半监督学习方法来训练模型,论文中采用的是目前常用的MixMatch方法,不过再用MixMatch之前,论文还做了co-refinement与co-guess的改进,具体如下:
然后对有标签样本集
最后,考虑到在噪声样本较多的情况下,模型更容易将所有样本都预测为同一类,因此这里在加一个正则项,来迫使模型将样本平均地预测为多类,正则项如下所示:
其中
这样模型完整的损失函数为:
整体流程
介绍完DivideMix模型具体的各个部分之后,接下来看一下整体流程,流程图如下所示
算法如下:
我们按照伪代码将整体流程再过一遍,主要步骤如下:
实验结果
论文将DivideMix模型与目前主流的一些模型做了对比,部分结果如下所示,更多实验结果和实验细节可见论文实验和附录部分。
SELF模型的全称是self-ensemble label filtering,其核心思想是:模型将它认为是噪声标签的样本剥离出来,只对剩下的干净数据做监督学习。
这篇论文的思路比较简单,先说一下论文是如何剥离噪声数据的,主要是基于这样的观察:对于那些噪声标签的样本,模型在训练的过程中往往预测的波动较大。因此一个自然的想法就是对模型取平均来去除波动,论文这里采用了两种方法:
这样我们就可以根据平均的预测结果来识别出噪声样本,具体来说,检查该样本的标签
SELF模型的流程图如下所示:
算法如下:
算法很直观,这里再简单概括一下:
实验结果
下面是SELF模型与目前主流的一些模型的对比,部分结果如下所示,更多实验结果和实验细节可见论文实验和附录部分。
这次我们介绍的两篇论文都是关于含噪声标签学习的,面对同样的问题,两篇论文从不同的思路给出了相应的解决办法。含噪声标签学习主要分为两个步骤:1、对噪声样本的分离,2、模型训练。对于噪声样本的分离问题,DivideMix模型采用的是GMM来分离噪声样本,而SELF模型则通过模型+预测的ensemble对样本进行筛选。对于模型训练,DivideMix将其看作是一个半监督学习问题,而SELF则只对过滤后的样本进行监督学习。
[1] DivideMix: Learning with Noisy Labels as Semi-supervised Learning
[2] SELF: Learning to Filter Noisy Labels with Self-Ensembling
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。