©PaperWeekly 原创 · 作者 |
许皓天,傅佳琪,司靖辉
研究方向 | 信息抽取及预训练模型风险
近年来,基于通用信息抽取(UIE)的范式在学术届、工业界引起了广泛的关注,一系列相关的顶会文章涌现出来 [1,2,3,4,5,6,7,8,9],涉及 信息抽取、问答、对话、分类、匹配、文本生成等不同的 NLP tasks。
工业界也随之推出了相关的比赛如 CCKS22 通用信息抽取比赛
[10]
、电力行业多模式知识图谱抽取
[11]
,这些比赛涉及通用、垂直场景以及多资源、少资源等抽取任务,为 UIE 在实践中的应用提供了充分的 benchmark。笔者及所在团队参加了这两个比赛,并取得了不错的成果:
CCKS22 通用信息抽取技术创新奖 [10,12,14]
电力抽取比赛选拔赛、决赛模型得分 TOP1 [11,15],总分 TOP2 [28](决赛模型分 85.54,总分 8 5.48(TOP1 总分 85.57),非电力行业背景)
并摸索出了一个实践中应用 UIE 的最佳实践路径。
本文主要介绍了我们在 UIE 比赛中提出的 UniLM-UIE 模型以及通用训练方案具体细节,以及在比赛中尝试过有效、无效的训练策略。
为大家在实际问题中应用 UIE 提供一份经过实战检验的参考。
我们提出了基于 UniLM
[13]
的 UIE 框架。UniLM 是微软提出的一个基于 decoder-only 的 unified LM,通过修改不同的 attention mask 实现双向、因果、seq2seq 等不同语言模型等建模,适配 NLU、unconditional generation(GPT)以及 conditional generatio(Seq2Seq)。这里,我们使用 UniLM 主要基于以下几点:
-
Decoder-only 相比 Seq2Seq,降低了模型复杂度
-
相比 Seq2Seq,Decoder-only 可以实现更大的基础模型如 GPE-MOE
[16]
、GLM
[17]
通过控制不同的 attention mask,实现一个模型完成多种 NLP 任务如 NLU、LM、Seq2Seq 等。
在信息抽取场景中,通常会给定一个文本、对应的 schema,然后输出目标序列,其形式与 Seq2Seq 类似。所以,在我们的 UniLM-UIE 中,使用了 Seq2Seq attention mask 即输入双向建模,输出单向建模,实现了条件生成。
UniLM-Seq2Seq 模型的训练则相对比较简单,输入序列包含 条件输入+输出序列,attention mask 根据输入、输出序列构建即可。
2.2 UIE
前面,我们主要介绍了 UniLM 的基本原理,下面,我们主要介绍 UIE 的输入和输出构造形式:
2.2.1 输入形式
输入形式与模型独立无关,不同的文章有不同的输入形式,当然,输入形式也决定了解码方法。这里,我们采用如下的输入形式:
instruction[SEP]text[SEP]schema-type[SEP]element_1[unused1]element_2[unused2]...[SEP]
这里,instruction 代表任务类型,如实体抽取、信息抽取、事件抽取。当然,也可以考虑加入领域如事件抽取-灾害意外等,构建更细粒度的 instruction。这里:
2.2.2 输出形式
value_1[unused1]value_2[unused2]...<T>value_3[unused1]value_4[unsued2]...<T>[SEP]
通过这种解码形式,我们可以实现要素之间的配对并输出一个完整的事件元组。相比传统的事件抽取如百度开源的 MRC-based UIE
[18]
,
GPLINKER
[19]
,MRC-based 的 UIE 在同一个文本同一个事件类型存在多个不同的事件元组时,缺少事件要素的配对能力,仅适用于(事件类型,要素类型,要素值)的评估方法;GPLINKER 则提出了使用完全子图的方法划分事件,该方法面对复杂事件 schema 的时候存在划分错误的可能性尤其是不同事件共享部分要素的情况。而我们的建模方法直接解决了事件划分的问题,从而实现完整的事件元组抽取。
前面的章节我们系统描述了 UniLM 以及 UIE 的细节,本节我们主要介绍完整的抽取方案。
3.1 类型负采样(negative learning)
由于我们的 UIE 输入需要指定 schema 类型,在训练时这个可以根据有监督数据获取,然而,在推理阶段,却需要一个辅助分类器获取 schema 类型。这使得 UniLM-UIE 并非一个完整的端到端抽取模型,且抽取效果依赖于 schema 分类结果。schema 分类器在少样本、schema 类型易混淆等场景下,容易成为性能瓶颈。为此,我们提出了使用类型负采样的训练策略 [20]:
在训练过程中,除了使用标注数据中的 schema 类型,同时,也会从剩余的schema 类型随机采样负样本且对应的输出序列为空序列。使用类型负采样的好处 在于:
UniLM-UIE 成为一个真的的端到端抽取系统,不必依赖 schema 分类器;
负采样使得模型学会根据输入内容、schema类型 决定是否输出目标序列(知之为知之,不知为不知);
类型负采样使得模型对错误 schema 类型具备一定的鲁棒性。
类型负采样(negative learning)在
[20]
中提出并应用于分类问题的噪声标签,通过类型负采样降低模型对错误标签的拟合能力,配合类型 filtering 机制,极大提高了噪声标签下的分类模型性能。同理,在我们的 UniLM-UIE 框架下,加入 negative learning 不仅能够避免使用额外分类器,同时,也能较好地解决特定 schema 少样本、schema 类型易混淆等问题。
本章节我们主要介绍 UniLM-UIE 完整的训练 pipline,也是我们在比赛中摸索出较优的实践方法。
具体地,我们提出了多阶段的 prefinetuning [4] 包含无监督预训练、mixture-prefinetuning、task-prefinetuning 和 task-finetuning。
3.2.1 无监督预训练
基于我们的 UIE 输入输出构建方法,我们使用 Roberta-Large 初始化模型并使用 T5 的预训练方法,这里,使用 T5 的预训练方法主要有几个点:
3.2.2 prefinetuning
prefinetuning 阶段,我们主要考虑了两个不同的训练方法,mixture-pre-finetuing 使用了全部的有监督(包括阅读理解、分类、匹配、抽取等)+无监督数据进行训练,旨在让模型学会使用有监督数据的标签信息,同时,加入无监督数据,避免模型过拟合。
task-prefinetuning 阶段则主要考虑了任务数据的有监督(信息抽取、事件抽取、实体抽取)+无监督训练。如果训练 budget 有限的情况下,直接进行 task-prefinetuning 也能达到较好的效果。
3.3 解码过程
由于信息抽取的要素值均位于原文,所以,我们采用约束解码 [21] 限制解码空间,同时,设置 beam-search-width=2。
talk is cheap, show me your results. 前面我们完整地描述了 UniLM-UIE 的模型、UIE 构建方法、训练过程、schema 类型识别等问题,下面,我们主要介绍我们在电力多模式信息抽取比赛中的具体实践效果 [10,11,12,14,15]。CCKS22 通用信息抽取的具体结果可以参考相关的知乎文章以及 B 站分享视频 [10,12,14]。
电力多模式抽取比赛是电力行业电力调度场景的事件抽取。其训练数据如下表所示:
相比 CCKS22 通用信息抽取,该比赛有几个不同点:
1. A 和 B 域调度指令包含枚举型要素抽取如 “抬高电压”, “调减功率” 等,A 域包含 10 类枚举型要素,B 域包含 10 类枚举型要素。平均到每个文本,可能每个枚举型要素只有不到 50 条数据,且不同的枚举型要素较难区分如 “调减功率”、“增加功率”、“控制功率” 等,增加了数据集的难度;
2. 结果评估不同。CCKS22 通用信息抽取比赛对事件抽取的评估方式类似于三元组评估:
[("事件类型1", “要素类型1”, "要素值1"), ..., ("事件类型1", “要素类型n”, "要素值n")]
[("事件类型1",“要素类型1”, "要素值11"), ..., ("事件类型12", “要素类型n”, "要素值1n")]
可能在一个文本中存在同一个事件类型但是完全不同的事件元组(同一个要素类型可能要素值不同如同样的“运行状态或条件”下,可能有不同的“发送对象”、“命令/信息内容”和“功能依据”)。相比三元组形式的评估,完整事件元组的评估对于抽取的完整性要求更高,这也与电力行业文本相关。
电力行业文本中往往一个事件类型包含多个不同的事件元组,不同元组的差别可能在于 “运行状态或条件”、“发送对象”等,如果按照 CCKS22 的事件评估方式,可能会难以区分不同的元组,导致实际生产出现较大的生产事故 如
“运行状态或条件”与“发送对象”发生错误配对
;
3. 本次比赛需要线上提交推理包在线推理,对推理时间(2小时)、压缩包大小(6G)有明确限制。限制了过多的模型集成等,更符合实际生产环境等应用。
我们的系统方案
1. 列表型要素值 {'要素类型':'v1','要素值':['u1','u2',..., 'un']}拆解为:
[{'要素类型':'v1','要素值':'u1'}, ..., {'要素类型':'v1','要素值':'un'}]
2. 针对评估方法,我们仅将列表型要素进行位置回标、排序、合并;
结果
比赛分为两个阶段,选拔赛和决赛。
6.1 选拔赛
下表为选拔赛结果:
选拔赛阶段,我们对比了百度 UIE-MRC-Base [18],在前期均不使用后处理的条件下,我们的 UniLM-UIE-Large 线上即可取得 0.703 的效果,远超 UIE-MRC-Base 的 0.589,以及官方 baseline 的 0.49。这里,由于评估指标为完整事件元组的评估,UIE-MRC 可以较好地完成给定类型的值抽取,但难以对抽取结果合理划分事件(如果数据集句式特殊,可能可以根据句式组合配对,但实用性较窄且方案不够简洁)。
-
加入 官方答疑视频 ppt 中的数据以及官方 word 文档里面的数据;
测试不同的 beam-search-size。
可以看到,基于我们 v2 版本的 UniLM-UIE(task-prefinetuning,没有包含电力比赛数据)加入均衡采样(基于事件类型)后,即可达到 0.808。进一步加入 官方资料中的数据后,可以进一步提升到 0.814。
而当我们将电力数据加入到 task-prefinetuning 后,v3-UniLM-UIE 即可实现
单模型 0.838
的
选拔赛 TOP1
结果:
同时,V3 版本 - no-upsampling 可以实现单模型 0.825 的效果。这里,我们可以看到,由于少样本场景,数据输入的顺序可能对模型效果产生较大影响 [27],使用均衡采样可以降低数据输入顺序对训练的影响。
此外,我们也评测了元组顺序、元组内的要素顺序 是否可变对最终结果的影响。我们发现元组顺序某种程度上可以降低过拟合(数据量充足的情况下),在少样本场景,则容易产生欠拟合(基于 V2 版本,结果在 0.80 左右,相比元组顺序固定的结果,降低了 1 个点左右)。
最后,我们发现 beam-search-size 对 Y 的影响较大,所以我们设置 beam-search-size=2 作为所有 UniLM-UIE 解码的配置。
除了数据集统一训练外,我们还进行了不同数据组合的训练:
最终,我们实现了
选拔赛 0.85163
的
TOP1
结果,同时,
选拔赛单模型(V3-UniLM-UIE)
也实现了
TOP1
的结果:
注:top2-4 均为电力行业背景团队如国家电网(主办方单位),南方电网,国电南瑞等:
注:由于前期后处理加入的较晚,做了很多模型训练配置的尝试,走了一些弯路。如果按照最佳实践:
任务有监、无监督数据+全量信息抽取数据集的 task-prefinetuning;
任务有监督数据的 task-finetuning;
少样本数据集 duplicate 10 份;
少样本数据均衡采样;
可能可以在一周内实现该比赛的最佳单模型以及最佳模型组合结果。
6.2 决赛
决赛结果如下:
决赛阶段,我们看到,UIE-MRC-Base 依然只有 0.5991 的效果,而我们的选拔赛最佳模型可达到 0.775 的结果;后续,我们也评测了选拔赛最佳单模型 0.838 在决赛数据集的效果:
可以看到,选拔赛最佳单模型与选拔赛最佳结果相差很小。相比选拔赛结果,决赛结果的 Y 和 X 下降较多,也说明了决赛数据和选拔赛数据可能在句式、实体层面存在较大的 GAP。最后,我们使用上述提到的数据增强(基于训练集 500 条样本),使得最终结果从 0.772 提升到 0.85541:
注:决赛 9.2 开始后仅一天(9.3)即可达到,也充分验证了 UniLM-UIE 强大的拟合能力。
最终,加入技术文档评分后,我们总分 TOP2(非电力行业背景)
[28]
:
总结
本次比赛,我们沿用了 CCKS22 通用信息抽取的基础模型和技术方案,并针对电力行业的数据特点、评估方式等做了微调,即可实现选拔赛单模型 TOP1、选拔赛最佳效果(0.8516)。相比其他团队,我们本身
不具备电力行业的从业背景
和
无监督数据
,仅能够使用官方提供的 500 + 数据,也间接说明我们的 UniLM-UIE 对于新领域、新场景的快速迁移、快速适配能力。
基于 task-prefinetuing,我们的 UniLM-UIE 能够从海量数据中学习抽取逻辑,即使面对垂直行业如电力行业,没有大量的无监督数据、以及行业背景等不利条件下,我们也能够借助 UniLM-UIE 从其他数据集学习到的抽取能力,实现优异的领域迁移效果,为垂直行业知识图谱构造等提供了新的方案和可能性,同时,保持整个抽取系统的简洁性。
UniLM-UIE 纵使有更好的少样本、领域迁移能力,其也存在一些问题:
生成式解码速度慢、schema 遍历慢,实际中可以使用更快的解码框架如 [22,23];
生成 token 序列,缺少 token 位置信息,对于基于位置信息评估的应用或者比赛,位置回标 可能存在 遗漏、重叠等问题;
长文本划窗处理,不同窗内的解码元组结果较难合并;
schema 顺序、目标序列的顺序对模型有影响 [10] 如数据多可能避免过拟合,数据少可能欠拟合等;
-
相比 MRC、word-pair 等方式,生成式仅有目标解码序列的似然值,难以通过阈值筛选等操作对解码结果做筛选和修正;
未来工作
后续,我们会和 EasyNLP [24] 合作,将 UniLM-UIE 适配到 EasyNLP 的框架以及 开源 V2 版本的 UniLM-UIE base 和 large 版本(包括 CCKS22 通用信息抽取的 task-finetuning 模型),方便更多同学在不同领域测试 UniLM-UIE 的抽取效果。
此外,我们也正在基于旋转位置编码的 roformer [25] 进行 bert 词表的预训练、UniLM-UIE 的完整训练流程,使得 UniLM-UIE 可以支持更长的文本序列,同时,可能也能提升效果如 GLM [17]。
目前,结构化信息抽取如 MRC-based、word-pair-based 等方法均需要筛选阈值输出结果,而阈值的选择往往基于 dev,但很难保证理想的置信度。我们后续将基于统计检验的方法,筛选阈值且在统计意义上以 90% 的概率满足给定的risk,提升结果的可信度,为实际应用提供更好的保障。
最后,我们也将尝试 soft-prompt 与大模型结合的 UIE,基于 GLM[17]、IDEA-CCNL [26]、GPT-MOE [16] 等,实现基于大模型的 UIE,为垂直行业的结构化抽取、图谱构建 提供更好的基础技术能力。该方案下,仅需要对不同行业和数据做 soft-prompt 微调即实现领域快速迁移,即使使用全量数据做 task-prefinetuning,也能够以较少的微调参实现。
相比我们目前的方案,训练开销会小很多(毕竟,加入全量数据的 task prefinetuning 的训练开销较大),而不同业务、不同领域的抽取可以仅依靠 领域定制的 soft-prompt 和基础模型即可实现,对于垂直行业的应用更加便捷,而行业基础大模型则能够持续依靠大数据、大算力持续提升效果。
UIE 可能本身很难做到零样本的迁移,而基于少量数据的 UIE+task-prefinetuning 的训练流程,是有可能实现垂直行业的快速领域适配。同时,结合大模型,可预计会达到更好的抽取效果。对于垂直行业,可以提供一个更简洁的方案,而如果想做一个模型在不同场景都通用,可能存在几个问题:
不同领域的抽取难度不同,生成式抽取对于多任务建模不需要引入额外参数,而输入数据的顺序、数据复制的比例、数据采样策略等对不同任务和数据集有不同的影响。比如笔者尝试将所有有监督抽取数据集合并训练,在电力选拔赛的 X 和 Y 上面下降 10 几个点;
不同的抽取任务需要的抽取能力不同,多个数据集混合训练,很可能使得模型产生 “抽取能力 bias” 即对于某些 pattern、schema 的抽取偏好,降低其在其他数据集的抽取效果;
多模态、NLP、CV、ASR 等都在走 Unified 的路径,可以极大降低模型碎片化的问题,集中力量办大事。
[1] UnifiedSKG: Unifying and Multi-Tasking Structured Knowledge Grounding with Text-to-Text Language Models
[2] Unified Structure Generation for Universal Information Extraction
[3] Unifying Language Learning Paradigms
[4] ExT5: Towards Extreme Multi-Task Scaling for Transfer Learning
[5] DEEPSTRUCT: Pretraining of Language Models for Structure Prediction
[6] ProQA: Structural Prompt-based Pre-training for Unified Question Answering
[7] ZeroPrompt: Scaling Prompt-Based Pretraining to 1,000 Tasks Improves Zero-Shot Generalization
[8] A Unified Generative Framework for Aspect-Based Sentiment Analysis
[9] A Unified Generative Framework for Various NER Subtasks
[10]
https://aistudio.baidu.com/aistudio/competition/detail/161/0/leaderboard
[11]
https://aistudio.baidu.com/aistudio/competition/detail/425/0/introduction
[12] 【信息抽取】基于UniLM的多任务多形态统一抽取框架——千言数据集-哔哩哔哩 https://b23.tv/7A2DPYf
[13] Unified Language Model Pre-training for Natural Language Understanding and Generation
[14] 记CCKS22通用信息抽取---One Model to Solve All Task https://zhuanlan.zhihu.com/p/550352511
[15] UniLM-UIE在电力行业多模式知识图谱抽取比赛中的应用 https://zhuanlan.zhihu.com/p/565478147
[16] 阿里云 PAI推出中文稀疏GPT大模型,登顶 ZeroCLUE榜单 https://www.sohu.com/a/581906245_100207435
[17] https://github.com/THUDM/GLM-130B
[18]
https://github.com/PaddlePaddle/PaddleNLP/tree/develop/model_zoo/uie
[19] https://spaces.ac.cn/archives/8926 GPLinker:基于GlobalPointer的事件联合抽取
[20] NLNL: Negative Learning for Noisy Labels
[21]
https://github.com/facebookresearch/GENRE/blob/main/examples_genre/examples.ipynb
[22]
https://github.com/PaddlePaddle/PaddleNLP/tree/develop/faster_generation
[23] https://github.com/NVIDIA/FasterTransformer
[24] https://github.com/alibaba/EasyNLP
[25] https://github.com/ZhuiyiTechnology/roformer
[26] https://huggingface.co/IDEA-CCNL
[27] TableFormer: Robust Transformer Modeling for Table-Text Encoding
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析、科研心得或竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。
📝 稿件基本要求:
• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注
• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题
• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算
📬 投稿通道:
• 投稿邮箱:hr@paperweekly.site
• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者
• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿
△长按添加PaperWeekly小编