问题描述:
NER中样本不均衡,作者从以下两个角度描述这个问题。
- 实体类别不均衡。 以实体类别地点、人物、时间三类实体为例,训练集中人物出现100000个、地点1000个、时间400个。
- 单个样本中实体过少, 导致"O"标签与实体标签(“B”、“I”)分布不均衡。
知乎上有一个相关问题:nlp序列标注任务如何处理类别极度不平衡问题? - 知乎 https://www.zhihu.com/question/340333687
解决方案:
数据增强
常规的欠采样和过采样方法在序列标注任务上,稍微思考一下就是不靠谱的。在这个任务上如果直接在样本上操作,不能欠采样,导致样本多的类别也会表现不好。
少实体类别替换,丰富少数实体类别样本。具体讲,将少数实体类别的实体随机替换为同类别的其他实体。属于比赛的一个trick吧,直观来看一个实体的范围相对单个样本较短,应该产生过多的影响,但经过实际验证会一定的提升(但是不能保证)。
除第一点直接替换文本之外,还有基于词向量的同义词替换、单复数替换、代词替换等。
损失函数
以下两个损失函数都是从CV领域借鉴来的。
- 1、focal loss,由何铠明在论文《Focal Loss for Dense Object Detection》提出,最初用于解决目标检测下的样本不均衡问题。在介绍focal loss之前,先回顾下二分类的交叉熵计算公式:
focal loss 论文
focal loss 的计算也非常简单,增加了两个参数 和 控制正负样本所占loss权重,具体计算公式为:
Focal loss 推广到多分类,计算公式为:
p为softmax的结果。 - 2.Dice loss, 由VNET提出,香侬科技的2020ACL《Dice Loss for Data-imbalanced NLP Tasks》对原Dice Loss进行了改动,进而解决NLP中样本不均衡问题。主要思想是建立DSC与F1的联系,香侬科技在一篇博客中已经对其做出了解释,这里就不加赘述了,等到看完之后有了新的理解,再来更新。
原文:https://blog.csdn.net/weixin_29090677/article/details/112585993