基线提升至 96.45%:2022 司法杯犯罪事实实体识别 + 数据蒸馏 + 主动学习
本项目给出本次法研杯详细的技术方案,从 UIE-base 开始到 UIE 数据蒸馏以及主动学习的建议,欢迎大家尝试,ps:主动学习标注需要自行实现,参考项目,楼主就不标注了。
项目链接:https://aistudio.baidu.com/aistudio/projectdetail/4911042?contributionType=1
0.法研杯 LAIC2022 司法人工智能挑战赛犯罪事实实体识别
0.1 比赛简介
任务介绍
本赛道由中国司法大数据研究院承办。
犯罪事实实体识别是司法 NLP 应用中的一项核心基础任务,能为多种下游场景所复用,是案件特征提取、类案推荐等众多 NLP 任务的重要基础工具。本赛题要求选手使用模型抽取出犯罪事实中相关预定义实体。
与传统的实体抽取不同,犯罪事实中的实体具有领域性强、分布不均衡等特性。
官网:http://data.court.gov.cn/pages/laic.html
数据介绍
(1) 本赛题数据来源于危险驾驶罪的犯罪事实,分为有标注样本和无标注样本,供选手选择使用;
(2) 数据格式:训练集数据每一行表示为一个样本,context 表示犯罪事实,entities 表示实体对应的标签(label)及其位置信息(span);entities_text 表示每个标签 label 对应的实体内容;
(3) 两条标注样本之间以换行符为分割;
(4) 训练集:有标注训练样本:200 条(分初赛、复赛两次提供,数据集包括验证集,不再单独提供验证集,由选手自己切分);无标注样本 10000 条;
(5) 标注样本示例:
评价方式:
其中:精确率(precision):识别出正确的实体数/识别出的实体数,召回率(recall):识别出正确的实体数 / 样本的实体数
相关要求及提交说明
初赛阶段采用上传预测答案的方式进行测评,复赛需上传模型,请选手严格按照以下说明规范提交:
赛程安排
结果预览:
0.2 数据集预览:
无标注:
有标注:
实体类型:
1.baseline——模型训练预测(UIE model)
UIE 模型使用情况参考下面链接,写的很详细了要考虑了工业部署情况方案
参考链接:
UIE Slim满足工业应用场景,解决推理部署耗时问题,提升效能!
PaddleNLP之UIE信息抽取小样本进阶(二)[含doccano详解]
Paddlenlp之UIE模型实战实体抽取任务【打车数据、快递单】
1.1 数据处理
1.2 模型训练验证
训练结果预览:
1.3 模型预测
部分结果预览:
base 比赛结果
2.全量训练
项目链接:https://aistudio.baidu.com/aistudio/projectdetail/4911042?contributionType=1
3.UIE Slim 数据蒸馏
上面方法只关注了标注数据集,下面通过训练好的 UIE 定制模型预测无监督数据的标签。项目链接:https://aistudio.baidu.com/aistudio/projectdetail/4911042?contributionType=1
4.主动学习方案:
参考项目:主动学习(Active Learning)综述以及在文本分类和序列标注应用
1.主动学习简介
主动学习是指对需要标记的数据进行优先排序的过程,这样可以确定哪些数据对训练监督模型产生最大的影响。
主动学习是一种学习算法可以**交互式查询用户(teacher 或 oracle)**,用真实标签标注新数据点的策略。主动学习的过程也被称为优化实验设计。
主动学习的动机在于认识到并非所有标有标签的样本都同等重要。
主动学习是一种策略/算法,是对现有模型的增强。而不是新模型架构。主动学习背后的关键思想是,如果允许机器学习算法选择它学习的数据,这样就可以用更少的训练标签实现更高的准确性。——Active Learning Literature Survey, Burr Settles。通过为专家的标记工作进行优先级排序可以大大减少训练模型所需的标记数据量。降低成本,同时提高准确性。
主动学习不是一次为所有的数据收集所有的标签,而是对模型理解最困难的数据进行优先级排序,并仅对那些数据要求标注标签。然后模型对少量已标记的数据进行训练,训练完成后再次要求对最不确定数据进行更多的标记。
通过对不确定的样本进行优先排序,模型可以让专家(人工)集中精力提供最有用的信息。这有助于模型更快地学习,并让专家跳过对模型没有太大帮助的数据。这样在某些情况下,可以大大减少需要从专家那里收集的标签数量,并且仍然可以得到一个很好的模型。这样可以为机器学习项目节省时间和金钱!
4.1 active learning 的基本思想
主动学习的模型如下:
A=(C,Q,S,L,U),
其中 C 为一组或者一个分类器,L 是用于训练已标注的样本。Q 是查询函数,用于从未标注样本池 U 中查询信息量大的信息,S 是督导者,可以为 U 中样本标注正确的标签。学习者通过少量初始标记样本 L 开始学习,通过一定的查询函数 Q 选择出一个或一批最有用的样本,并向督导者询问标签,然后利用获得的新知识来训练分类器和进行下一轮查询。主动学习是一个循环的过程,直至达到某一停止准则为止。这个准则可以是迭代次数,也可以是准确率等指标达到设定值
在各种主动学习方法中,查询函数的设计最常用的策略是:不确定性准则(uncertainty)和差异性准则(diversity)。 不确定性越大代表信息熵越大,包含的信息越丰富;而差异性越大代表选择的样本能够更全面地代表整个数据集。
对于不确定性,我们可以借助信息熵的概念来进行理解。我们知道信息熵是衡量信息量的概念,也是衡量不确定性的概念。信息熵越大,就代表不确定性越大,包含的信息量也就越丰富。事实上,有些基于不确定性的主动学习查询函数就是使用了信息熵来设计的,比如熵值装袋查询(Entropy query-by-bagging)。所以,不确定性策略就是要想方设法地找出不确定性高的样本,因为这些样本所包含的丰富信息量,对我们训练模型来说就是有用的。
那么差异性怎么来理解呢?之前说到或查询函数每次迭代中查询一个或者一批样本。我们当然希望所查询的样本提供的信息是全面的,各个样本提供的信息不重复不冗余,即样本之间具有一定的差异性。在每轮迭代抽取单个信息量最大的样本加入训练集的情况下,每一轮迭代中模型都被重新训练,以新获得的知识去参与对样本不确定性的评估可以有效地避免数据冗余。但是如果每次迭代查询一批样本,那么就应该想办法来保证样本的差异性,避免数据冗余。
从上图也可以看出来,在相同数目的标注数据中,主动学习算法比监督学习算法的分类误差要低。这里注意横轴是标注数据的数目,对于主动学习而言,相同的标注数据下,主动学习的样本数>监督学习,这个对比主要是为了说明两者对于训练样本的使用效率不同:主动学习训练使用的样本都是经过算法筛选出来对于模型训练有帮助的数据,所以效率高。但是如果是相同样本的数量下去对比两者的误差,那肯定是监督学习占优,这是毋庸置疑的。
4.2active learning 与半监督学习的不同
很多人认为主动学习也属于半监督学习的范畴了,但实际上是不一样的,半监督学习和直推学习(transductive learning)以及主动学习,都属于利用未标记数据的学习技术,但基本思想还是有区别的。
如上所述,主动学习的“主动”,指的是主动提出标注请求,也就是说,还是需要一个外在的能够对其请求进行标注的实体(通常就是相关领域人员),即主动学习是交互进行的。
而半监督学习,特指的是学习算法不需要人工的干预,基于自身对未标记数据加以利用。
4.3.主动学习基础策略(小试牛刀)
常见主动学习策略
在未标记的数据集上使用主动学习的步骤是:
首先需要做的是需要手动标记该数据的一个非常小的子样本。
一旦有少量的标记数据,就需要对其进行训练。该模型当然不会很棒,但是将帮助我们了解参数空间的哪些领域需要首标记。
训练模型后,该模型用于预测每个剩余的未标记数据点的类别。
根据模型的预测,在每个未标记的数据点上选择分数
一旦选择了对标签进行优先排序的最佳方法,这个过程就可以进行迭代重复:在基于优先级分数进行标记的新标签数据集上训练新模型。一旦在数据子集上训练完新模型,未标记的数据点就可以在模型中运行并更新优先级分值,继续标记。
通过这种方式,随着模型变得越来越好,我们可以不断优化标签策略。
参考项目:主动学习(Active Learning)综述以及在文本分类和序列标注应用
5.总结
简单归纳一下:增加标注量是关键
数据标注占比很重要,未利用的 1w 数据需要利用起来,而且小样本数据下数据覆盖面需要用一定方法维持,目前得分高的应该都是额外增加标注量了
提升预测速度,UIE 数据蒸馏方案推荐使用(GlobalPointer),并可以在这个基础上优化,用 mini 等更小的模型
主动学习用起来,筛选出困难样本,争取达到 30%标注量实现全样本效果!通过多轮迭代实现在这个任务的智能标注
最后感谢肝王 @javaroom 之前提供的 baseline 的数据预处理过程和提交数据转换,剩了编写处理时间。
参考项目:主动学习(Active Learning)综述以及在文本分类和序列标注应用
UIE 模型使用情况参考下面链接,写的很详细了要考虑了工业部署情况方案
参考链接:
UIE Slim满足工业应用场景,解决推理部署耗时问题,提升效能!
PaddleNLP之UIE信息抽取小样本进阶(二)[含doccano详解]
Paddlenlp之UIE模型实战实体抽取任务【打车数据、快递单】
评论