论文阅读_基于知识的提示学习KnowPrompt

2022-04-17  本文已影响0人  xieyan0811

英文题目:KnowPrompt: Knowledge-aware Prompt-tuning with Synergistic Optimizationfor Relation Extraction
中文题目:KnowPrompt: 基于协同优化的知识感知快速调优关系提取
论文地址:https://arxiv.org/pdf/2104.07650.pdf
领域:自然语言处理,关系提取
发表时间:2021
作者:Xiang Chen(浙江大学&阿里巴巴)
出处:TheWebConf(WWW)
被引量:13
代码和数据:https://github.com/zjunlp/KnowPrompt
阅读时间:2022.04.15

泛读

精读

摘要

最近,提示调优(Prompt-tuning)在一些few-shot分类任务中取得了令人满意的结果。它的核心思想是通过插入文本,将分类任务转化为MASK语言模型(MASK原理详见BERT)。对于关系抽取问题,选择提示模板需要较多的领域知识和较大工作量,且在实体和边之间蕴藏的大量知识也不应该被忽略。文中提出了一种基于知识协同优化的调优方法(KnowPrompt)。通过学习模板词答案词,将实体和关系的知识注入模型,并在知识约束下协同优化它们的表示。

1. 介绍

关系抽取(RE)是文件抽取中的一个重要任务,抽取后的信息可供更多下游NLP任务使用,比如:信息检索、对话生成和问答。

之前自监督的自然语言模型(PLM)如BERT,它可以学习到带有上下文的表征,在很多RE任务中表现很好,而精调(fine-tuning)需要在模型顶部加层并需要额外的训练。它的效果依赖于耗时费力的大量标注,且不容易泛化到其它任务中。为解决此问题,出现了prompt-tuning:使用预训练的语言模型作为预测器实现完型填空任务。它在few-shot任务中表现良好。如图-1所示:

image.png

总之,Prompt-tuning的目标是找到合适的模板和答案空间。而此工作常需要领域知识,以及复杂而大量的计算。而且关系标签不一定能在词典中找到合适的词。另外,实体、关系、三元组中包含的词义也不应被忽略,如图-1的例子中,如果主语和宾语都是人,则"org:city_of_headquters"就不太可能成立。相对的,关系也可以约束主语和宾语的类型。

文中提出的解决方法是:先将知识注入提示,然后用提示调优模型实现知识抽取。具体方法是使用学习“虚拟模板词”和“虚拟答案词”。具体的方法是:使用集合实体嵌入初始化的实体周围的类型标记,作为可学习的虚拟模板词来注入实体类型知识。同时使用标签计算平均嵌入作为虚拟答案来注入关系知识。在这个结构中,实体和关系相互约束,虚拟词需要与上下文保持一致性,文中引入了协同优化来校正模板和答案词。

文章主要贡献如下:

2. 相关工作

2.1 知识抽取

知识抽取,早期使用基于模式的方法,基于CNN/RNN的方法,以及基于图的方法,后来,将预训练语言模型作为基础的知识提取成为主流,尤其是基于BERT的模型显示出比之前模型更好的效果。最近Xue等提出的基出BERT的多视图方法达到了目前最高水平。由于标注的限制,few-shot任务受到关注。

2.2 提示学习

提示学习方法源于GPT-3(2020年),其在很多NLP任务中达到更好的效果。有些研究基于人工构建提示;2021年Hu提出引入外部知识;2021年Ding使用实体类型学习,来构建面向实体的词生成器和模板;为避免大量的人工构建提示,2020年Gao等首次提出了自动构建模板和答案词,Shin又进一步提出了梯度自动搜索,来自动生成模板和打标签。最近,有人直接利用可学习的连续嵌入作为提示模板。

在知识抽取方面,2021年Han提出PTR,使用逻辑规则构建子提示。本文中方法的先进性在于:使用知识注入方法,学习虚拟模板和模拟答案来代替人工定义规则,可以泛化到多种任务之中。另外,使用知识约束协同优化模板和答案词,使嵌入相互关联。

3. 背景知识

定义D={X,Y},X是实例(句子),Y是关系标签,每个实例由词组成:x={w1,w2,ws...wo...wn},RE的目标是预测主语ws与宾语wo之间的关系y ∈ Y。

3.1 精调语言模型

预训练的自然语言模型是L,之前的fine-tuning模型将x作为模型的输入,加入类别[CLS]和分隔符[SEP],见图-2(a),其输出是隐藏层h,最后用h预测该实例属于各个类别CLS的概率,使用交叉熵作为多分类的损失函数,在训练过程中自然语言模型参数L和用于最终分类的参数W被训练。

3.2 提示调优语言模型

提示调优的目标是在预测模型和下游任务间建立桥梁,主要挑战是如何建立问题模板T(.)和可选答案标签V,将它们统称为提示P。对于每个实例x,模型构建它新的输入:xprompt=T(x)。它一般包含原始文本和附加文本;V使用自然语言模型L词表中词作为标签,定义M:Y->V作为注入映射表,连接任务标签Y(最终抽取的关系)和标签词V(用于回答提示问题)。

在保留了原有文本x的基础上,遮蔽(MASK)了xprompt中的一个或几个词,并用标签词替换,用模型L预测遮蔽位置的词,p用于描述V在MASK处的分布:
p(y|x)=p([MASK]=M(y)|x_{prompt})
如图-2(b)所示,在原始文本后又加了一段带有MASK的文本,此时,可以通过模型L计算MASK对应的向量,并计算概率分布p,用于描述V中各个可选项对于MASK位置的匹配程度,M映射对于两个可选项分别有:M(y = “per :data_of_birth”) → “birth”(当y分类per:data_of_birth,V是birth),M(y = “org :founded_by”) →“founder”(当y为org:founded_by,V为founder),然后判定哪个选项更合适。

4. 方法

此部分主要介绍KnowPrompt协同优化方法的实现,将实体类型和关系标签中的知识用于关系提取。4.1阐述构建方法,4.2阐述优化方法。

4.1 利用知识注入构建提示

典型的提示包括两部分:构建模板和答案集。本文目标是利用知识注入构建虚拟模板词和模拟答案词,以实现知识抽取任务。

实体知识注入

2021年Zhou提出了实体类型标注,他在实体前后加入了特征的标记[E]和[/E],详见图-2(a),这一技术在关系抽取中得到广泛使用。它用实体的类别信息提升模型效果,但是需要对类型进行额外的标注。然而,我们可以利用关系对实体的限制得到主语和宾语的大概范围,比如:当关系是““per:country_of_birth”时,主语是人,宾语是国家。此时可以得到主语和宾语候选集合Csub={"person","organization",...}和Cobj={"organization","data",...},及其中元素的分布φsub 和φobj。

如图-2所示,用可学习的连续数据来描述实体类别,具体来说,是利用加权平均实体类型作为嵌入来初始化虚拟模板词:

式中的esub和eobj也是嵌入,用于描述主语和宾语的类型(它不是一种具体的类型,而是一种综合类型,因此是虚拟的),它被插入到主语和宾语的前后(图-2中绿色框),而e()从语言模型的词嵌入层提取词嵌入。使用上述方法可以从知识中自动学习更丰富的实体类型,其效果与之前方法差不多,但不需要额外标注。

简言之,这里的模板,就是后加的那半句话,需要分别确定其 主语 和 谓语 的类型,而通过 谓语 可以大概估计出主语和宾语是什么类型。

关系知识注入

之前提示调优的研究主要是构建标签词和任务标签的一对一映射表,它不能表达关系标签中丰富的语义知识。我们设置虚拟答案词 v′∈V′,它能表达关系的语义,在模型L之后再加一层,用于学习关系嵌入,用虚拟答案集V'完全表示关系标签Y。用p(y|x)来表示V'在MASK位置的分布。

和实体类型嵌入类似,使用Crel来表示可能的关系集合,φrel表示其中各项的概率分布。通过对关系类型的分解,在关系语义词的候选集Crel上设置了概率分布φRel。具体方法是,计算关系中每个token的加权平均作为初始化嵌入,以此注入语义信息。比如:y1 =per : countries_of_residence,集合Crel1 = {“person”,“countries”, “residence” },具体方法如下:

4.2 使用知识约束实现协同优化

实体类型和关系标签之间存在着丰富的交互和联系,且这些虚拟模板词和答案词应该与周围的上下文相关联。因此进一步协同优化虚拟模板词和虚拟答案词的参数集:

根据上下文校准提示

尽管模拟模型和答案都基于语义信息初始化,但是它们可能不是最优的,且与上下文相关。因此,可用上下文进一步优化其表征。通过计算真实关系y和p(y|x)之间的交叉熵的损失函数来优化虚拟模板词和答案词,如下所示:

此处的|X|是训练集中的实例个数,可学习的连续表征可以通过模板和答案的协同优化,自适应地学习最优表征。

简言之,就是通过预测的关系和真实的关系计算损失优化模型。

隐含的结构约束

为注入结构信息,我们采用了知识嵌入(KE)目标函数作为约束。使用三元组 (s,r,o) 描述关系,s,o描述主和宾的类别,r是预定义的答案V‘的关系标签。我们直接用虚拟模板和虚拟答案输出的嵌入通过语言模型参与计算。损失函数定义如下:

带'的是负例;γ是边界;dr用于衡量头实体尾实体及关系(算法同TransE),三元组成立时其值趋于0,不成立时其值较大;n表示所有负采样。负采样时,使用正确的答案填充MASK位置,随机取主语和宾语,替换为不相关的类型以构造损坏的三元组。(这里更多细节请见代码)

y=-log(sigmoid(x))如下图所示:

括号里的值越大,最终损失函数越小;对于正例,d相对边界值γ越小越好,对于负例,d相对γ越大越好。

4.3 训练细节

训练分为两个阶段,第一阶段使用大学习率协同优化虚拟模板词和模拟答案词:

其中 λ是用于权衡两个损失函数的超参数。
第二阶段基于被优化的虚拟模板词和模拟答案词,仅利用J[MASK]损失函数为语言模型调参,用较小的学习率优化所有参数。

5. 实验

5.1 数据集

为全面测试,使用了表-1中列出的5个数据集

5.2 实验设置

使用BERT_LARGE作为基础模型。

基本配置

使用全部训练数据训练,与之前的四个模型对比。

低资源配置

使用LM-BFF提出的 8-, 16-, 32- (n为每种类别的样例个数)方法采样,从初始训练和验证集中抽取每个类的k个实例,以形成few-shot的训练和验证集。

5.3 实验结果

基本配置

低资源配置

可以看到,样例越少,KnowPrompt相对其它模型效果越好。

5.4 消融研究

代码解析

数据

dataset/*

代码

上一篇下一篇

猜你喜欢

热点阅读