
摘要
许多自然语言处理(NLP)任务,如词性标注和机器阅读理解,普遍面临严重的数据不平衡问题:负样本数量远超正样本,且大量背景样本(或称“易负样本”)在训练过程中占据主导地位,严重干扰模型学习。当前最常用的交叉熵(Cross Entropy, CE)损失函数本质上是一种以准确率为优化目标的准则,这导致了训练与测试阶段目标之间的不一致:在训练阶段,每个样本对损失函数的贡献是均等的;而在测试阶段,F1分数更关注正样本的识别效果。本文提出,针对数据不平衡的NLP任务,以Dice损失替代传统的交叉熵损失函数。Dice损失基于Sørensen-Dice系数或Tversky指数,能够对假阳性与假阴性赋予相似的重要性,因而对数据不平衡问题具有更强的鲁棒性。为进一步缓解训练过程中易负样本的主导影响,我们引入动态调整的样本权重机制,对易负样本进行弱化处理。理论分析表明,该策略有效缩小了评估阶段F1分数与训练阶段Dice损失之间的差距。在所提出的训练目标下,我们在一系列数据不平衡的NLP任务中均观察到显著的性能提升。特别地,在词性标注任务中,我们在CTB5、CTB6和UD1.4数据集上取得了当前最优(SOTA)结果;在命名实体识别任务中,于CoNLL03、OntoNotes5.0、MSRA和OntoNotes4.0数据集上同样达到SOTA水平;同时,在机器阅读理解与句子改写识别等任务上也获得了具有竞争力的性能表现。
代码仓库
ShannonAI/dice_loss_for_NLP
官方
pytorch
GitHub 中提及
fursovia/self-adj-dice
pytorch
GitHub 中提及
基准测试
| 基准 | 方法 | 指标 |
|---|---|---|
| chinese-named-entity-recognition-on-msra | BERT-MRC+DSC | F1: 96.72 |
| chinese-named-entity-recognition-on-ontonotes | BERT-MRC+DSC | F1: 84.47 |
| named-entity-recognition-ner-on-conll-2003 | BERT-MRC+DSC | F1: 93.33 |
| named-entity-recognition-ner-on-ontonotes-v5 | BERT-MRC+DSC | F1: 92.07 |
| question-answering-on-squad11-dev | XLNet+DSC | EM: 89.79 F1: 95.77 |
| question-answering-on-squad20-dev | XLNet+DSC | EM: 87.65 F1: 89.51 |