用AI来帮助AI:Detect Label Error with Cross Validation

大模型机器学习数据库

引言

在NLP算法的落地过程中,工程师们可以深刻体会这句话的含义: garbage in,grabage out 。数据质量对模型的效果太重要了。

标注过程因为各种原因,难免会引入错误,问题是: 如何高效地识别标注错误(detect label error)

本文介绍一种基于交叉验证(cross validation)的思路,有需求的工程师们上手试试吧~

什么是交叉验证

识别标注错误的基本思路,是 利用模型进行交叉验证,进而挖掘疑似标注错误样本 。换句话说是 用AI来帮助AI找到标注问题

什么是交叉验证?以 2-fold cross validation 为例进行说明。

picture.image

首先,将一份数据D均分为D1、D2;

然后,在D1上训练模型Model1,并在D2上进行测试;在D2上训练模型Model2,并在D1上进行测试。这些测试结果(如预测的标签结果、loss等)即为交叉验证的输出。

拿到了交叉验证的结果,便可以开始detect label error了。

检测方法

方法1:对比标注和交叉验证结果

这是最直观的一种方法:拿到每个数据的交叉验证预测label, 原标注label != 预测label的样本都认为是疑似标错样本

这也是openai在研发内容审核算法[1]中使用的思路:通过这种方法,随机sample一些疑似标错样本,送往人工进行check,如果这部分数据里 超过30% 的标注结果有误,那么所有的疑似标错样本全部重新标注。

方法2:引入排序

方法1的一个小问题是:找到的疑似标错样本认为是“同等重要”的,假如量级特别大,该怎么提升检测效率?

EMNLP 2022的这篇论文:Detecting Label Errors by Using Pre-Trained Language Models[2]提出一种基于loss大小的排序方法:

首先,在下游任务上fine-tune PLM/LLM;

随后,在交叉验证时,按照loss由大到小排列样本,loss越大的越有可能是标注错误样本。

方法3:Ensemble一下会更好

在每个交叉验证时,可以只用1个模型;但如果用多个模型进行ensemble,那么效果会更好。

picture.image

Detecting Label Errors by Using Pre-Trained Language Models[2]论文中的实验结果如上图。

可以发现,FM Ensemble(绿线)的效果要比FM Loss(蓝线)的效果更好: 随着Recall增大,Precision始终更高

NER任务也可以用类似的思路去解决,以这篇论文[3]为例,作者使用了 17个模型 进行ensemble交叉验证,将 一半模型同意的、与原标注结果不同的 ,送往人工标注,最终在CoNLL-2003数据集上找到了1300+的标注错误数据。

以上各个方法可以进行组合使用;进行区分,是为了理解方便而已。

对本质的思考

为什么用交叉验证是有效的?

笔者的观点是: 因为模型具备泛化性 ,即 真的在某种程度上,学会了这个任务,而不仅仅是记住了训练样本。所以与模型预测结果不一致的,有可能是标注错误的。

那么根据这一本质,可以自然地推出这样一个观点: 模型越强大,那么检测标注错误的效果越好

这一观点也得到了Detecting Label Errors by Using Pre-Trained Language Models[2]的实验验证。

picture.image

还是这张图。可以发现,FM(即Foundation Model的简称,包括Bert、T5、GPT等)类方法的效果要 远好于 Baseline(word vector-based classifier)的效果: Baseline只能在非常小的Recall下保持高的Precision,而FM方法则可以一直保持较高的Precision

当然了,ensemble的效果更好也是出自同理。

picture.image

同时, 由于强大的基座模型出现,检测方法也可以回归简单 。作者将FM Loss方法,与Confident Learning(简称CL)[4]方法进行比较。最终发现FM方法远好于CL方法;而使用FM + CL之后,也没有带来什么提升。这说明:将Large Language Model作为基座模型,可以只使用 简单 的检测方法了,这是因为模型越来越鲁棒了。

总而言之,LLM的强泛化性、强鲁棒性,使得检测标注错误这件事变得 更简单、但效果却更好了, 就像其他场景一样。

总结

交叉验证 是进行标注错误检测的基本思路,笔者首先介绍了何谓 交叉验证,随后介绍了基本的检测方法及其优化方法,最后对其本质进行了简单总结: 模型的泛化性使交叉验证得以有效 ,进而得到 模型越强大,检测标注错误的效果越好、方法也可以更简单 的技术趋势。

显然,随着AI越来越强大, 用AI来帮助AI 的思想会应用在越来越多的地方,例如AI标注、AI合成数据等,当然也包括openai用AI来帮助scale human feedback[5]。

用AI来帮助AI的 好处 是什么?答案可能就是 Scale 吧。

关注笔者

欢迎关注笔者,了解更多有趣、有用的NLP知识~

参考资料

[1] A Holistic Approach to Undesired Content Detection in the Real World: https://ojs.aaai.org/index.php/AAAI/article/view/26752

[2] Detecting Label Errors by Using Pre-Trained Language Models: https://aclanthology.org/2022.emnlp-main.618.pdf

[3] Identifying Incorrect Labels in the CoNLL-2003 Corpus: https://aclanthology.org/2020.conll-1.16.pdf

[4] Confident Learning: Estimating Uncertainty in Dataset Labels: https://arxiv.org/abs/1911.00068

[5] openai blog - our approach to alignment research: https://openai.com/blog/our-approach-to-alignment-research

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论