引言
在NLP算法的落地过程中,工程师们可以深刻体会这句话的含义: garbage in,grabage out 。数据质量对模型的效果太重要了。
标注过程因为各种原因,难免会引入错误,问题是: 如何高效地识别标注错误(detect label error) ?
本文介绍一种基于交叉验证(cross validation)的思路,有需求的工程师们上手试试吧~
什么是交叉验证
识别标注错误的基本思路,是 利用模型进行交叉验证,进而挖掘疑似标注错误样本 。换句话说是 用AI来帮助AI找到标注问题 。
什么是交叉验证?以 2-fold cross validation 为例进行说明。
首先,将一份数据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,那么效果会更好。
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]的实验验证。
还是这张图。可以发现,FM(即Foundation Model的简称,包括Bert、T5、GPT等)类方法的效果要 远好于 Baseline(word vector-based classifier)的效果: Baseline只能在非常小的Recall下保持高的Precision,而FM方法则可以一直保持较高的Precision 。
当然了,ensemble的效果更好也是出自同理。
同时, 由于强大的基座模型出现,检测方法也可以回归简单 。作者将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