置信学习寻找噪音样本(noisy label)在NLP任务中的实践

1.背景

之前看到吴恩达举办了一个以数据为中心的比赛,使用统一的模型,选手们通过改良扩展训练数据集以改进训练的效果,很感兴趣。今年有幸找到了中文语言理解测评基准CLUE,有一个nlp方向的类似的任务

CLUEbenchmark/DataCLUE: DataCLUE: 数据为中心的NLP基准和工具包 (github.com)https://github.com/CLUEbenchmark/DataCLUE置信学习寻找噪音样本(noisy label)在NLP任务中的实践_第1张图片

与其他任务很多人提交不一样,这个任务很少人关注,希望能有对数据感兴趣的人参与进来吧 

代码实现hgliyuhao/little_dinosaur: a database tool for nlp (github.com)

2.什么是noisy label

在数据集中,一些样本的类别被错误的标注,比如猫狗分类集中猫被标注成了狗狗。这些样本被称为noisy label

与此相对的我们还经常听到hard Sample。hard Sample用来描述标注正确但是模型难以学习的样本,比如一只很像猫的狗,虽然难以分辨,但是它的标签是正确的。如果一只猫的标签是狗 那么它就是一个noisy label

3.任务介绍

详细的任务介绍可以去官方的github,做的相当的完整。

置信学习寻找噪音样本(noisy label)在NLP任务中的实践_第2张图片

全部给出的数据有12000条,里面包含了大量的noisy label。我们的任务就是通过算法手段,找到这些noisy label,并对数据进行增强,让模型学到更多正确的信息。

这里主要介绍置信学习在分类任务中的实践

4.置信学习

[1911.00068] Confident Learning: Estimating Uncertainty in Dataset Labels (arxiv.org)https://arxiv.org/abs/1911.00068对12000条数据使用多次交叉验证,统计多次预测标签与人工标签不符合的case作为noisy label。因为在训练过程中发现这个数据集噪声非常的大,错误的标注估计有三分之一,意味着在交叉验证时我们的结果正确率也不高,所以定义noisy label的方法也更严格。最后可以找到3000条左右的noisy label。

在进行交叉验证的时候,划分数据集可以按照标签分类的比例划分,保证每个类别的比例在训练集和验证集内都基本一致,会对模型学习有很大的帮助

5.置信学习的瓶颈

1. 置信学习的效果会受到原有数据分布的影响。只有在原始数据质量高,数据量大的时候效果才会好。

比如在多分类任务中,类别A和类别B非常相近,但类别A的数量远远大于B的数量 在使用置信学习的时候所有的B样本都会被错误的识别成A,被认为是noisy label。

又比如A样本有100条,其中有90条是错误的,那10条正确的也会被认为是noisy label。

2.置信学习会受到模型本身的限制

比如在一个预训练模型下某个hard Sample是无法被正确学习的,那么通过置信学习是也是无法解决这个问题的。

3.置信学习的效率偏低

因为要对样本进行多次交叉验证,同时为了保证模型效果,使用预训练模型,置信学习的整体效率会很低,虽然通过算法一定程度上实现了自动化,但是效率也非常的低

4.是否可以扩充到其他任务 比如NER 抽取等任务

6.最后

以数据为中心是非常有意思的一个领域,目前流行的一些方法,比如随机替换,回译,uda,eda,更像面试时候的八股文,真正对我们工作研究有帮助的方法少之又少,希望有相同兴趣的人可以一起探索~

你可能感兴趣的:(python,自然语言处理,深度学习,自然语言处理,nlp)