Press "Enter" to skip to content

DataCLUE: 数据为中心的NLP基准与工具包

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

 

 

导读

 

以数据为中心(Data-centric AI, DCAI)的人工智能最近被证明更为有效、具有更高性能,而传统的以模型为中心的人工智能在某些场景下提供越来越少的增益。 DCAI 强调提高数据集的质量以获得更好的模型性能。这一领域因其巨大的实用性变得越来越受到重视,并具有巨大的潜力。 然而,我们还没有看到这一领域的重大研究进展,特别是在NLP方面。

 

因此,我们提出了DataCLUE,这是第一个应用于NLP领域的以数据为中心的基准。我们还提供了三个简单但有效的基线,以促进该领域的研究(将Macro-F1提高了5.7个百分点)。此外,我们进行了全面的实验并加入了人工标注的实验,实验显示了我们的任务具有较为有难度。此外,我们还尝试了一种先进的方法:基于训练遗忘的标签校正方法。所有与DataCLUE相关的资源,包括数据集、工具箱、排行榜和基线,都已经开源。

 

项目地址:

 

https://github.com/CLUEbenchmark/DataCLUE

 

文章地址:

 

https://arxiv.org/pdf/2111.08647.pdf

 

 

概览:

 

1、简介(Introduction)

 

2、Task & Dataset (任务描述 | 数据集构造)

 

3、实验(Experiments)

 

3.1 基线方法(Baselines)

 

3.2 实现细节(Implementation)

 

3.3 实验对比与分析(Result and analysis)

 

4、结论(Conclusion)

 

正文

 

1、简介(Introduction)

 

以数据为中心(Data-centric)的AI,是一种新型的AI探索方向。它的核心问题是如何通过系统化的改造数据集(无论是输入或者标签)来提高最终效果。传统的AI是以模型为中心(Model-centric)的,主要考虑的问题是如何通过改造或优化模型来提高最终效果,它通常建立在一个比较固定的数据集上。

 

学术界论文都是以模型为中心的,通过模型创新或学习方法改进提高效果,即使不少改进影响可能效果并不是特别明显,或者很少会被使用到。有些人认为当前的人工智能领域, 无论是自然语言处理(如BERT) 或计算机视觉(ResNet), 已经存在很多成熟高效模型,并且模型可以很容易从开源网站如github获得;而与此同时,工业界实际落地 过程中可能有大量的时间(比如80%)用于清洗数据、构建高质量数据集,或在迭代过程中获得更多数据,从而提升模型效果。正是看到了这种巨大的差别,在吴恩达等人的推动下这种以数据为中心 (Data-centric)的AI进一步的系统化,并成为一个有具有巨大实用价值方法论。

 

DataCLUE是一个以数据为中心的AI测评。它基于CLUE benchmark,结合Data-centric的AI的典型特征,进一步将Data-centric的AI应用于 NLP领域,融入文本领域的特点并创造性丰富和发展了Data-centric的AI。

 

我们的贡献是:

 

1)构建并定义了一个能够用于评估改进数据集方法的效果的任务。据我们所知,这是首个在NLP上以数据为中心的公开任务和基准;

 

2)我们实现了三种不同的改进数据集的策略,实验表明我们的策略都可以提升模型最终的效果(0.86–4.36);使用最佳的策略,在模型和程序不变的情况下比未改进数据集的方法在f1 score上提升有显着的效果提升(5.7个点);

 

3)我们开源了任务、基线模型和方法、工具包(dckit)、排行榜,后续研究者可以进一步拓展在该课题下的研究。

 

2、任务描述 | 数据集构造

 

用什幺数据集,任务怎幺设定,任务和数据集有什幺?

 

测评目标:

 

有什幺样的方法能通过改进数据集来提供最终的模型效果;不同的方法效果上有什幺效果上的差异,什幺样的方法或方法的组合效果效果是最佳的。

 

任务定义:

 

参与者需要改进任务下的数据集来提升任务的最终效果,将使用固定的模型和程序代码来训练模型。可以对训练集、验证集进行修改或者移动训练集和验证集建的数据,也可以通过非爬虫类手段新增数据来完善数据集。可以通过算法或程序或者结合人工的方式来改进数据集。参与者需使用修改后的训练集和验证集来训练和验证,并报告在公开测试集上的效果(也可以提交到榜单测试非公开测试集上的效果)。

 

训练集train、验证集dev,都具有高比例的错误标注的数据,公开测试集标注准确率高(超过95%)

 

任务生成过程: 真实场景的数据是通过人工标注得到标签,通常情况下都存在错误标注的数据,在数据质量检验缺乏的情况下可能存在低质量的标注数据的问题。为此,我们通构建了一个带有高比例的错误标签的样本,具体的方式如下:

 

我们首先使用额外的数据训练了一个分类模型,针对训练集上的每一条数据预测预测标签的概率分布。然后针对40%的数据,我们使用两种策略来指定新的标签:简单问题样本–50%的概率下使用标签列表中的任意一个标签进行替换;容易混淆的可疑样本–50%的概率下使用使用模型预测的前1到5个标签中任意一个标签进行替换。

 

在形成带标签错误的数据之前,针对原始数据我们首先移除了部分类别的数据,这些类别的数据是可以用非常简单的关键词或正则来识别的。也就是增加了模型学习的难度。

 

任务描述与统计:

 

 

任务特点:

 

1)挑战性高:训练集、验证集,都具有高比例的错误标注的数据。训练集、验证集有超过1/3、1/5的数据可能存在标注错误的问题;公开测试集标注准确率高(超过95%);

 

2)数据类别多样、分布较为不均衡。有超过100个类别的标签,有的类别容易混淆;不同的标签数据不均衡比较明显,有些类别只有个位数或几十个数,有些类别有几百个数据。

 

3)实验资源消耗低:实验周期快,计算成本低。GPU环境单次实验4分钟左右完成;CPU环境也可较短时间完成训练。

 

4)学术友好:公开测试集test_public.json,参与者可以自己独立做测试和实验。

 

CIC数据集例子:

 

{“id”: 10831, “label”: “49”, “sentence”: “我想改地址和电话”, “label_des”: “买家要求修改收件信息”}

 

{“id”: 10844, “label”: “55”, “sentence”: “亲,你们一般情况发什幺快递呢?”, “label_des”: “买家咨询发什幺快递”}

 

{“id”: 10860, “label”: “54”, “sentence”: “有现货的明天能发货吗”, “label_des”: “买家咨询发货时间”}

 

3、实验(Experiments)

 

3.1 基线方法 Baselines

 

首先,由于任务中具有高比例的错误标注的数据,很明显我们需要有一个方便找到标签错误的数据。其次,又由于标签类别非常多,标签分布具有一定的不平衡性,并且任务通过f1 score(macro)上的效果来衡量,我们也需要对数据集进行数据增强,从总体上或者对于数据量比较少的数据进行扩增;最后,由于标签是一个短的文本描述,我们可以设法利用上这一信息。更具体,我们采用了三种方式来改造数据集:

 

 

yXmetadata
Noisy DeleteData AugL abel  Aug

 

1)Noisy Delete (y):  通过交叉验证的方式训练分类模型,并预测数据点上的标签的概率分布,并计算概率分布的熵,利用熵找出数据中最有可能发生标签(y)错误的样本,并丢弃。熵可以认为是不确定性的程度,模型预测的越不确定熵越大。

 

2)Data Aug(X): 输入文本(x)的增强,即使用数据增强提升总体可用的训练数据量。

 

3)L abel  Aug (metadata): 将标签定义增强后添加到训练集中增加数据量。比如类别x的定义是“用户询问快递时间”,对这个文本做增强,获得更多的样本。那幺直觉上看,如果一个输入的句子与标签的定义比较接近,模型也更容易学习到。

 

3.1.1  训练流程 Training Procedure

 

1)针对输入文件:合并训练集和验证集,获得整个数据集的数据;

 

2)对数据集进行改造,以便获得高质量数据:

 

改造1:训练一个分类模型,根据预测的熵找出数据中最有可能标签错误的样本并丢弃;

 

改造2:对剩余数据,进行数据扩增;

 

改造3:将标签定义增强过的数据加入到数据集。

 

3)输出文件:输出改进过的训练集、验证集:按照样本比例分别进行拆分,并写到文件;   

 

3.1.2 交叉验证 Cross Validation

 

使用K折交叉验证训练,验证集上做预测:遍历每一折得到训练集和验证子集,做数据增强、在验证子集上进行预测,最后合并验证子集,得到整个数据集上的模型预测的概率分布;

 

交叉验证后使用模型预测的概率分布计算熵(代表预测的不确定性),排序,并移除最可能标签错误的样本。

 

 

3.2 实现细节(Implementation Details)

 

对于固定的模型和代码部分的描述:我们使用RoBERTa_3L_wwm做为默认的预训练模型,它是一个3层的模型,与全尺寸的模型效果接近但训练速度和效率大幅提升。

 

参数设置:sequence length=32, epoch=15, batch_size=64, learning_rate=2e-5

 

使用合并后的训练集和验证集,训练完后实验报告的是在公开测试集(test_public)上的效果;考虑了标签分布的不一致问题,评价的主要依据是f1 score(macro)。

 

3.3 效果对比 Result and analysis

 

使用三种不同策略及其组合。三种策略:丢弃不准确的、数据增强、添加标签文本。

 

公开测试集(test_public)上效果对比:

 

 

实验分析:

 

1)初步的看, 三个策略应该都是有效的 ,最佳策略提升了5.71个点;

 

2)看起来Label Aug很强(提升 4.36个点)。 但是Label Aug和其它两个策略结合,虽然比baseline提升了(3.45个点)但没有发挥出强强联合的效应;

 

3.4 模型和人工交互式迭代(Human-in-the-loop AI pipeline)

 

前面我们的实验都是在算法模型层面去改进数据集质量的。那幺有没有其他的方式可以尝试的呢?答案是有的。我们可以结合算法模型和人工,通过模型找到可疑的标注错误的数据,然后进行人工校验,看看它的提升情况。

 

模型排序后标注(Selective Annotation): 在模型找到标签可能错误的数据后,并进行排序,人工进行修正。

 

人工修正的过程: 人工标注要求的准确率是92%。流程上是:标注专家对样本数据的试标和评估–>标注人员标注–>抽样复检。首先会有标注专家进行试标,结合少量样本和标签定义文件,来理解标注任务和标注的难度和可完成性。根据对标注任务的评估,给出了标注了单条标注的费用(0.35元每条)和标注完成时间(2000条,10小时);在沟通好后,提供给标注人员进行标注,标注人员也有一个熟悉标签定义和在标注过程中学习过程;标注完后,标注人员提供给标注专家进行抽样复检,满足标签准确率要求后,将标注后的数据提供过来。

 

效果对比:

 

 

效果分析:随机抽取2000条数据进行标注,效果没有提升(具体还需要进一步实验);使用模型排序后的数据进行2000条标注,获得了1.28个点的提升。结合额外的标签增强,可以进一步提升效果。

 

3.5 补充实验–集成模型基础上使用交叉验证修改标签

 

实验动机: 模型是有一定容错率的,所以在数据有一定比例错误数据的情况下,可以利用已经有数据训练模型,训练出的模型可以反过来辅助检查错误数据。在这个实验中,我们发现使用多模型预测一致且置信度高的数据恰好很多都是错误数据.为了节约人力,我们直接筛选使用模型预测的标签做了替换。

 

使用的方法 : 使用模型集成的方法对数据集,即已提供的训练集和验证集合并成一份数据集,做交叉验证。具体为:将数据集分成6份训练集和验证集对,使用bert base chinese在3个seed下分别对这些数据集做训练和预测。训练完成后,会得到不同seed下数据集的模型预测结果。

 

筛选出在不同seed下,模型预测结果都一致,但是与原标签不一致的数据,通过阈值筛选出置信度高的一批数据(2k+)。经观察这些数据很有可能就是标注错误的数据,修改原标签为模型预测的标签,得到新的数据集。

 

公开测试集上的效果:

 

 

实验分析:相对于基线模型,使用基于集成模型的交叉验证进行标签修正,提升了2.62个点。

 

4、结论(Conclusion)

 

在这里我们简要的介绍了DataCLUE:它是一个以Data-centric方式提升数据集质量来获得更好模型效果的NLP领域的benchmark和工具包;我们通过三种策略来提升数据质量,并进行了实验分析。实验表明我们的三种策略都是有效的,单独的策略可以大幅提升模型的最终效果,融合的策略可以进一步提升效果。

 

我们需要做一些实验分析一下为什幺多种有效策略的组合没有取得最好的效果;我们也将做一些其他的实验扩展我们的策略和任务的数量;我们期望我们的工作能够促进Data centric在NLP领域的发展。

 

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注