当前位置: 首页 > 后端技术 > Python

在没有训练数据的情况下通过领域知识使用弱监督方法生成NLP大规模标记数据集

时间:2023-03-26 00:43:48 Python

在现实世界中开发机器学习(ML)模型的主要瓶颈之一是需要大量手动标记的训练数据。例如,Imagenet数据集包含超过1400万张手动标记的各种现实图像。虽然迁移学习的出现极大地缓解了这一要求,但仍然需要数百个标记示例进行微调。但获取此类人工标注往往费时费力,而且容易出现人为错误和偏差。那么,可以做些什么来改善这种情况呢?最近的弱监督(WS)框架可以通过利用多样性减少手动标记工作,并且可以利用领域主题专家(SME)的广泛知识来提高模型性能。这篇文章将介绍EdelmanDxI数据科学团队在使用弱监督解决NLP问题方面的一些最新进展!弱监督学习的数据编程是指使用启发式标记函数结合标记模型以编程方式创建标记数据集。弱监督使用由标记模型创建的标记数据集来训练下游模型,其主要工作是泛化超出标记模型的输出。正如Snorkel论文中所述,可以通过三个步骤实现对数据集的弱监督。编写标签函数(LFS):标签函数是任何可以将数据作为输入的python函数,该函数通过使用一些规则为该行输出标签。例如,如果我们的任务是“垃圾邮件检测”,我们可以构建一个如下所示的标签函数。每个标记函数独立运行以标记每一行数据。在二进制分类问题的情况下,标签为0(没有标签)或1(有标签)或-1(信息不足,没有标签)。将弱标签与标签模型(LM)相结合:如果我们有M行数据和N个LFS,运行所有LFS将得到总共Mxn个标签,因此需要聚合n个单独LFS的输出,使得每一行都有只有一个显着的结果。投票模型是将多个LF聚合到一个标签中的最简单方法。但是有更好的方法可以通过聚合方法来做到这一点,这些方法可以从跨M行的LF的相同和不同结果中学习。比如DataProgrammingPaper、MeTaLPape、FlyingSquidpaper这三篇论文中提到的一些方法。训练下游模型(EM):微调下游模型,例如BERT,使用标记模型的输出作为训练数据。由于LFS是一个程序标签源,我们可以在整个未标记的语料库上运行步骤1和2,在步骤3中生成许多标签和训练的模型可以受益于在步骤1和2中创建的更广泛的训练数据集。上图中的Snorkel是一个使用数据编程进行弱监督学习的python库。它提供了一个易于使用的API来实现和评估步骤1和2。我们可以使用高级MLAPI(例如HuggingFace的转换器或Sklearn)来实现步骤3。在一些方法中,步骤2和3也可以合并为一个步骤。但总的来说,两阶段方法优于单阶段方法,因为可以选择LM和EM的任意组合,并且可以通过不同的组合找到最佳性能。因此,本文仍将步骤1和步骤2分开进行。WeaklySupervisedFrameworks在WeaklySupervisedBenchmarks中,作者对各种弱监督框架进行了基准测试,并将它们与完全监督的基准进行了比较,如下所示。对于NLP任务,CosineRoberta(RC)始终优于其他模型(EM),包括VanillaRoberta(R),因此我们可以安全地选择RC作为我们的两阶段方法的最终模型!从上图还可以看出,没有单标签模型(LM)框架始终优于其他框架,这表明我们必须在数据集中尝试不同的LMS才能选择最佳的。COSINE(RC,BC)COSINE是CONtrastiveSelf-trainingforfine-Tuning的缩写,是近年来弱监督领域最有前途的研究进展之一。该算法有五个步骤。1.初始化:使用来自标签模型的弱标签来微调语言模型,例如在初始化步骤中使用交叉熵损失。然后将微调的BERT模型对整个数据集的概率预测用作软伪标签。然后使用这些软伪标签使用复合损失迭代地继续微调BERT模型,如下式所示。2.样本加权:根据其预测概率重新加权,使得预测概率高的样本具有较高的权重,预测概率低的样本具有相应较低的权重。3.高置信度样本的分类损失:因为使用了软伪标签。因此使用高于预定义权重阈值ξ的样本来计算基于Kullback-LeiblerDivergence的加权分类损失。4.Contrastivelossonhigh-confidencesamples:在上述步骤中使用相同的样本来计算contrastiveloss,可以使伪标签相似的样本靠得更近,而伪标签不同的样本在向量空间上的距离更远。这里正样本和负样本之间的边缘差异是一个超参数。5.ConfidenceRegularizationonAllSamples::上面的整个方法只有在confidence(预测概率)正确且被错误标记的样本置信度很低的情况下才有效。所以最后的Loss是一个基于置信度的正则化器,它可以防止错误标记的样本获得过高的置信度(overconfidence)。超参数λ可以调整正则化强度。通过以上步骤,COSINE的方法对弱标签中的噪声具有很强的鲁棒性。它也是基准测试中对小标签数据执行初始化步骤的最佳方法之一。SnorkelSnorkel可以说是所有弱监督标签模型方法的鼻祖,可以说是弱监督标签模型方法之母!创造“数据编程”一词的斯坦福大学研究人员也发明了Snorkel。Snorkel的前提很简单:给定启发式标签函数(LFS)的集合,将每个函数中的弱标签组合成每个样本的单个标签。Snorkel提供了一个易于使用的框架来聚合多个不同的弱LFS。组合多个弱标签的一种方法是仅使用多数票,而MV确实是基准测试中某些数据集的最佳LM。但是LF中的方法可能是相关的,从而导致特定特征在MV模型中被过度表示。因此,Snorkel实现了一个更复杂的LM,以使用一些数学矩阵求逆来组合单个LF的输出。启发式LF选择Snorkel易于使用,但根据LFS的质量,在Snorkel获得的标签上训练的最终模型(EM)的准确性可能会有很大差异。因此提出了启发式LF选择,该过程仅使LF的子集在小型手工标记的验证集上具有最佳精度。启发式LF选择允许我们从少量LFS开始,并随着时间的推移增长和完善它们。通过在每次迭代中分析每个LFS的性能,我们可以识别LFS中的问题,并在下一轮更新或添加新的条件到LF中。这种分析还可以揭示对问题域的理解上的差距!总结这篇文章介绍了弱监督的概念,以及如何使用它来将专家的领域知识编码到机器学习模型中。我还讨论了一些标记模型。在两步弱监督方法中结合这些框架可以实现与完全监督的ML模型相当的准确性,而无需收集大量手动标记的训练数据集!引用:想降低标签成本?GPT-3CanHelpX-Class:具有极弱监督的文本分类OptimSeed:具有无监督误差估计的弱监督文本分类的种子词选择ASTRA:具有弱监督的自我训练SPEAR:具有子集选择的半监督数据编程重新访问训练集,QuicklySnorkel:RapidTrainingDataCreationwithWeakSupervisionFine-TuningPre-trainedLanguageModelwithWeakSupervision:AContrastive-RegularizedSelf-TrainingApproachTrainingComplexModelswithMulti-TaskWeakSupervisionFastandthree-rious:SpeedUpwithWeakSupervisionMethodshttps://avoid.overfit训练复杂模型与多任务弱监督.cn/post/82ca4ceb918d41ba95bfc53db3ebd14e作者:MarieStephenLeo