Press "Enter" to skip to content

UniLM-UIE在多形态信息抽取比赛中的应用

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

 

©PaperWeekly 原创 · 作者 |  许皓天,傅佳琪,司靖辉

 

单位 |  阿里巴巴AAIG实验室

 

研究方向 |  信息抽取及预训练模型风险

 

 

Introduction

 

近年来,基于通用信息抽取(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), 非电力行业背景 )

 

注: 总分=0.9 *决赛模型分+0.1*文档分

 

并摸索出了一个实践中应用 UIE 的最佳实践路径。 本文主要介绍了我们在 UIE 比赛中提出的 UniLM-UIE 模型以及通用训练方案具体细节,以及在比赛中尝试过有效、无效的训练策略。 为大家在实际问题中应用 UIE 提供一份经过实战检验的参考。

 

 

UniLM-UIE

 

2.1 UniLM

 

我们提出了基于 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]

 

 

UniLM 的基本原理如下:

 

 

通过控制不同的 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。这里:

 

schema-type 为预先指定的一个 schema 类型,如地震;

 

element_1[unused1] 则表示一个要素。其中,element_1 为要素的文本描述,[unused1] 则为一个 sentinel token,代表该要素。不同的 element 对应不同的 sentinel token,即可实现不同 element 的区分;

 

2.2.2 输出形式

 

基于前面的输入形式,输出形式则定义为:

 

value_1[unused1]value_2[unused2]...<T>value_3[unused1]value_4[unsued2]...<T>[SEP]

 

value_1 为一个生成的值,通常为一个 token span,其类型则为  [unsued1]。根据输入 schema 的要素类型和 sentinel token 的对应关系,value_1 的类型为 element_1。

 

<T> 则实现了不同元组的区分即每一个
内的元组均为一个完整的结构化元组如  SPO、实体或者事件元组。

 

通过这种解码形式,我们可以实现要素之间的配对并输出一个完整的事件元组。相比传统的事件抽取如百度开源的 MRC-based UIE [18] , GPLINKER  [19] ,MRC-based 的 UIE 在同一个文本同一个事件类型存在多个不同的事件元组时,缺少事件要素的配对能力,仅适用于(事件类型,要素类型,要素值)的评估方法;GPLINKER 则提出了使用完全子图的方法划分事件,该方法面对复杂事件 schema 的时候存在划分错误的可能性尤其是不同事件共享部分要素的情况。而我们的建模方法直接解决了事件划分的问题,从而实现完整的事件元组抽取。

 

 

基于UniLM-UIE的多形态信息抽取

 

前面的章节我们系统描述了 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 类型易混淆等问题。

 

3.2 训练过程

 

本章节我们主要介绍 UniLM-UIE 完整的训练 pipline,也是我们在比赛中摸索出较优的实践方法。

 

 

具体地,我们提出了多阶段的 prefinetuning  [4] 包含无监督预训练、mixture-prefinetuning、task-prefinetuning 和 task-finetuning。

 

3.2.1 无监督预训练

 

基于我们的 UIE 输入输出构建方法,我们使用 Roberta-Large 初始化模型并使用 T5 的预训练方法,这里,使用 T5 的预训练方法主要有几个点:

 

Roberta-Large 只使用了 MLM 预训练且为双向 attention mask,对于复杂 Seq2Seq 任务效果较差(具体地,我们基于 bert4keras 实践了 duee 的 UniLM-UIE 事件抽取,在三元组的评估方式下,20-epoch 很难收敛);

 

我们构造的 UIE 输入输出形式与 T5 的预训练形式较为接近,与下游应用更匹配的预训练对于下游任务更有帮助  [3] ;

 

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 解码的配置。

 

除了数据集统一训练外,我们还进行了不同数据组合的训练:

 

全量抽取数据集+电力数据:实现了 A 和 B 的最佳结果,X 和 Y 下降 10 几个点;

 

AB 单独训练,XY 单独训练:实现了 X 的最佳结果;

 

最终,我们实现了 选拔赛 0.85163   的  TOP1   结果,同时, 选拔赛单模型(V3-UniLM-UIE) 也实现了   TOP1   的结果:

 

注: top2-4 均为 电力行业背景团队 如 国家电网(主办方单位) , 南方电网 , 国电南瑞 等:

 

 

注:由于前期后处理加入的较晚,做了很多模型训练配置的尝试,走了一些弯路。如果按照最佳实践:

 

 

任务有监、无监督数据+全量信息抽取数据集的 task-prefinetuning;

 

任务有监督数据的 task-finetuning;

 

少样本数据集 duplicate 10 份;

 

少样本数据均衡采样;

 

 

可能可以在 一周内 实现该比赛的最佳单模型以及最佳模型组合结果。

 

6.2 决赛

 

我们在决赛阶段主要对 Y 的句式做了一些扩充:

 

拓展前缀词。如拓展“功能依据”的前缀:根据、按照、依据;

 

拓展句式模板。功能依据+命令信息内容;

 

拓展句式模板。命令信息内容+功能依据;

 

加入易混淆数据。官方 word,ppt 易混淆数据构造;

 

多条件构造,句号分割—>不同的元组;

 

决赛结果如下:

 

 

决赛阶段,我们看到,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缺点

 

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 可能本身很难做到零样本的迁移,而基于少量数据的 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

 

[28]  2022年信创大比武“新型电力系统人工智能应用赛道”——圆满收官

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注