在科学研究中,从方法论上来讲,都应“先见森林,再见树木”。当前,人工智能学术研究方兴未艾,技术迅猛发展,可谓万木争荣,日新月异。对于AI从业者来说,在广袤的知识森林中,系统梳理脉络,才能更好地把握趋势。为此,我们精选国内外优秀的综述文章,开辟“综述专栏”,敬请关注。
地址:https://www.zhihu.com/people/qing-xiang-bai-lian-7
很多时候训练模型所用的数据都是人工标注的,那么往往甚至不可避免的存在一些错标的数据,尤其是标注的准则或者流程不是很完善时,错标就更常见。如果直接用这些存在错标的数据训练模型,那么模型的上限将受限与标注的准确率,那么如何利用这种存在错标的数据更好的训练模型呢?本文将介绍一种叫做置信学习(confident learning)的技术来处理这个问题。01
如何用存在错标的样本训练模型呢?其实无论什么方法都是建立在如何区分正确的label与错误的label上,目前主要有三种方法:直接建模:建立一个概率模型,直接估计每个样本标注正确或错误的概率,剔除正确率低的数据;迭代法:根据模型预测的损失初选一些正确或错误的样本,然后过滤掉错误的样本,在此基础上重新训练并进行反复迭代;加权法:接受所有样本,只是根据每个样本的正确率赋予不同的权重,构建一个加权的loss function进行训练。02
置信学习综合运用了上述处理三种方法,主要是通过估计noisy label与真实label的联合分布实现的,实现正确与错误样本的区分的。其基本假设为:数据错标的概率与类别有关,但与数据本身无关,如美洲豹可能被错标为美洲虎的可能性较高,但不大可能被错标为浴缸。在进行统计建模时,假设存在一个潜在的真实label,然后使用计数法估计真实label与观察到的noisy label的联合分布。得到每个类别错标的联合分布后,根据每个样本的prediction score进行过滤,然后基于每个样本所属的类别的confidence score计算权重进行训练,主要包含以下几个步骤:初步训练:先用原始数据通过交叉验证的方式训练模型,并对每一个样本进行打分,得到每个样本对每个类别的分数;计数(Count):这一步主要是用每个样本的得分来预估其标注正确的置信度;净化(Clean):过滤掉标注正确的置信度较低的样本;重新训练(Re-train):用过滤过后的样本重新训练模型。03
假设人工标注的noisy label为 ,真实标签为 ,样本总数为 ,类别总数为 ,其它变量的定义如下
完成通过交叉验证计算第 样本在第 个类别下的概率 后,就可以用来估计 与 的联合分布了,主要分为以下几步:
step 1 : 计算每个人工标定类别 下的平均概率 作为置信度阈值,对于样本 ,其真实标签 为 ,其中满足 且 ;step 2: 计算计数矩阵 (类似于混淆矩阵),例如 意味着,人工标记为dog但实际为fox的样本为40个。step1与step2的具体流程如下:
step 3 : 标定计数矩阵:其目的是为了让计数总和与人工标记的样本总数相同。计算公式如下,其中 表示人工标记标签 的样本数量:
step 4 : 估计噪声标签 和真实标签的联合分布,公式如下:完成这个联合分布的估计流程后就可以进行下一步的去噪声数据流程了。
04
在得到噪声标签和真实标签的联合分布 后,可以采用下列5种方法过滤错误样本。Method 1: ,选取 的样本进行过滤,即选取 最大概率对应的下标 与人工标签不一致的样本。Method 2: ,选取构造计数矩阵 过程中、进入非对角单元的样本进行过滤。Method 3: Prune by Class (PBC) ,即对于人工标记的每一个类别 ,选取 个样本过滤,并按照最低概率 排序。Method 4: Prune by Noise Rate (PBNR) ,对于计数矩阵 的非对角单元,选取 个样本进行过滤,并按照最大间隔 排序。Method 5: C+NR,同时采用Method 3和Method 4.
05
在过滤掉错误样本后,根据联合分布 将每个类别i下的损失权重修正为: ,其中 .然后采取Co-Teaching方法进行重新训练。Co-teaching是由两个模型不断迭代的训练方式,其基本假设是认为noisy label的loss要比clean label的要大,它并行地训练了两个神经网络A和B,在每一个Mini-batch训练的过程中,每一个神经网络把它认为loss比较小的样本,送给它其另外一个网络,这样不断进行迭代训练。06
本文介绍了针对存在noise label的样本的置信度学习,其主要流程如下图所示,先在原始数据上用交叉验证的方式predict每个个样本所属类别的概率分布,然后用计数法估计真实label与noisy label的联合分布,最后再过滤掉可能错标的数据重新训练模型。这些都不需要自己实现,如果要使用,可直接调用开源工具包cleanlab(https://github.com/cgnorthcutt/cleanlab)。
07
Confident Learning: Estimating Uncertainty in Dataset Labels;
https://arxiv.org/abs/1911.00068Robust training of deep neural networks with extremely noisy labels.
https://arxiv.org/pdf/1804.06872v2.pdf
本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。
“综述专栏”历史文章
更多综述专栏文章,
请点击文章底部“阅读原文”查看
分享、点赞、在看,给个三连击呗!