通用抽取领域很新的一篇文章,使用指令微调的范式来指导预训练的大语言模型应用在通用抽取领域,希望能够通过这篇文章的阅读,学习当前通用抽取领域工作的思路,并找到更好的解决方案。
大模型在信息抽取任务上存在困难,本文提出了InstructUIE,一个基于指令微调的统一信息抽取框架,它在32个不同信息抽取数据集上进行了验证,实验结果表明该模型实现了与bert相当的性能,并且在零样本设置中显著优于gpt3.5和领域最优。
大语言模型通过多任务训练和统一编码可以展现巨大的泛化前景。最近有工作表明LLMs在信息抽取任务上存在明显的gap,因此有必要探索如何使用LLM构建统一的信息提取模板。
最近的UIE通过结构化抽取语言统一编码不同的抽取结构,并通过大规模预训练的文本到结构的模型去捕获常见的IE能力(如图一所示)。但是UIE需要针对不同的下游任务进行微调,导致其在低资源场景表现不佳。此外,Lou等人提出的USM,将IE任务解耦成两个基本任务,token-token链接以抽取标签不可知子结构以及label-token链接以提取标签不可知的子结构。该方法有两点主要缺陷,首先将IE转为语义匹配任务,难以和生成模型进行融合。其次该方法需要对每个单词进行语义匹配,导致训练和推理时间增加。
本文提出的InstructUIE是基于多任务指令微调的统一信息抽取框架。具体来说,作者将IE任务表示为自然语言生成任务。对于源句子,作者设计描述性指令让模型能够理解不同的任务并对输出空间进行约束,其次,需要预训练的语言模型以自然语言的形式生成目标结构和相应的类型。为了让模型能够捕获共同的结构信息并加深对不同语义的理解,作者为NER引入实体跨度抽取任务和实体类型任务,为关系抽取引入了实体对抽取任务和实体对关系识别任务,为事件抽取引入触发抽取任务和参数抽取任务。
为了评估模型的有效性,作者开发了名为IE INSTRUCTIONS的benchmark。该benchmark由32个不同的信息抽取数据集组成,并且已经统一好格式。允许对各种IE任务进行一致和标准化的评估。
本文的主要贡献如下:
指令微调是一种多任务学习框架 ,使用人类可读的指令来指导LLM的输出。给定源文本和特定任务的指令,去训练模型生成一系列表示所需输出结构及其相应的标签。
所有的任务在训练时提供指令,模型针对每个任务的标签数据进行微调。这允许模型学习特定于任务的特征并针对每个任务进行优化。在零样本设置下,仅在训练期间为任务的子集提供指令,在未见的任务上进行评估。
为了更好迁移和利用模型预训练学习到的知识,作者将IE任务重建为Seq2Seq形式,并通过微调LLM进行求解,如下图所示,每个任务实例都格式化为四个属性:任务指令,选项,文本和输出。
指导模型如何输出想要的结果。它包括待抽取信息的类型、输出结构的格式、需要遵循的约束等信息,示例如下表所示:
是模型输出的任务特定的标签约束,表示对于给定的输入,模型能够输出的标签集合。Options能够为模型提供结构化的输出空间,使其能够生成与任务底层语义结构一致的输出。
文本是任务实例的输入句子,和指令、选项一起输入到预训练语言模型中,让模型生成所需的序列。
输出是由样本的原始标签转换的句子。以各个任务为例,NER任务输出的格式是:“entity tag: entity span”,
RE任务的输出格式是:“relationship: head entity, tail entity”,对于EE任务,输出格式为:“event tag: trigger word, argument tag: argument span”。为了防止输入不包含任何与选项匹配的结构,将“None”分配给相应的输出。
辅助信息为任务提供补充的信息,使模型能够更好捕捉共同结构并加深对不同语义的理解。
对于命名实体识别任务,作者引入了跨度提取任务和实体类型识别任务。
对于关系抽取任务,作者引入实体对抽取任务和关系分类任务。
对于事件抽取任务,作者引入trigger抽取任务和参数抽取任务。前者目的是抽取事件的关键词,后者是抽取事件相关的参数。
IE INSTRUCTIONS收集了32个公开可用的数据集,涵盖三种类型的IE任务:NER、RE和EE。
上图是按照任务、领域和规模划分的基准测试,附录有详细的数据集统计和训练集、测试集拆分的方法。
作者采用了如下的数据处理流程:
benchmark为LLM在IE任务上提供了一个标准化的评估平台,有助于更精确比较各个模型,帮助IE任务开发更有效和稳健的模型。
本节在监督和零样本设置下进行了大量实验,以验证InstructUIE的有效性。作者选取11B的FlanT5作为backbone。
监督训练包括三个任务:命名实体识别,关系抽取和事件抽取。为了平衡数据集,采用了一个抽样策略,特别的,对于每个数据集随机抽样10000个样本,不足的采用全部的数据。
作者将提出的InstructUIE和以下强大的基准模型进行比较:
作者采用基于跨度偏移量的Micro-F1作为评估模型的主要指标。对于NER任务,遵循跨度评估设置,其中必须正确预测实体边界和实体类型;对于RE任务,需要正确预测实体主体、实体客体和实体关系的边界;对于事件抽取任务,提供了两种评估策略:
模型在20个NER数据集上取得了85.19%的平均F1,超越Bert的80.09%,并且在17个数据集上的表现都超过了Bert。在推特数据集上甚至比Bert高出了25%。
但是在ACE2005、Ontonotes和Polyglot-NER数据集上表现不如Bert,可能的原因是随机抽样的数据只有10000条,而原始数据集如Polyglot-NER多达420000条。
由于UIE和USM测试的数据集较少,无法进行明确的比较。
模型在8个数据集上取得了67.98%的平均F1,其中NYT数据集达到了90.47%。在SciERC数据集上远超UIE和USM。
模型几乎在所有数据集上都取得了SOTA。
为了评估InstructUIE的零样本性能,作者在18个NER数据集和6个RE数据集上训练模型,并在7个NER数据集和2个RE数据集上进行测试。由于训练和测试任务完全不重叠,而且跨多个领域,这种设置具有挑战性。
对于零样本NER和关系抽取,作者将InstructUIE与以下baseline进行比较:
上表展示了在零样本设置下各个模型在NER和RE任务上的表现。在NER任务上,InstructUIE除了Literature表现不佳,其余都优于USM,在RE任务上,InstructUIE也都优于其余两个模型。
与GPT系列模型相比,在NER任务上InstructUIE的表现要落后于ChatGPT,但优于davinci,在RE任务上InstructUIE明显优于ChatGPT。
指令微调是一种利用自然语言指导下游任务的大型语言模型的新范式,当前指令微调主要关注于问答和分类,而不是抽取任务。目前没有工作研究如何使用各种指令在广泛的IE任务上训练模型。
信息抽取旨在从结构化或半结构化数据中自动提取结构化信息。IE通常需要针对不同的IE任务设计特定的架构,但是费时费力,并且迁移能力差。InstructUIE利用指令将预训练的大模型引导到抽取任务中来应对这些挑战。
本文提出了一个用于通用信息抽取的端到端的框架InstructUIE,利用自然语言指令来指导预训练的语言模型用于IE任务。此外,本文还提出了一个新的benchmark数据集,允许对各种 IE 任务进行一致和标准化的评估。实验结果表明InstructUIE在监督和零样本场景都实现了最先进的结果。
在当前的通用抽取领域,利用指令微调来引导预训练的大模型完成通用抽取任务绝对是最为先进的范式,可能在单个任务上这种大模型的性能还比不上单任务处理的模型,比如在NER任务上,作者是拿InstructUIE和简单的Bert-base模型进行对比,在某些数据集上还处于落后,如果换成BART、T5等稍微更先进的模型,那可能比不过的就更多了。其原因我认为可能有如下几点:
此外指令微调的范式是一种离散的模板范式,这样很难知道最优的指令模板是什么,很容易陷入局部最优,并且不同指令的效果参差不齐,容易造成偏差过大,之后如果换成连续的模板,即学习如何生成连续的最优的指令(隐向量,非自然语言模板),会不会有更好的效果。