KnowPrompt: Knowledge-aware Prompt-tuning with Synergistic Optimization for Relation Extraction

KnowPrompt: Knowledge-aware Prompt-tuning with Synergistic Optimization for Relation Extraction

本文仅供参考、交流、学习
论文地址:https://arxiv.org/abs/2104.07650
代码和数据集地址:https://github.com/zjunlp/KnowPrompt

1. 摘要

  最近,prompt-tuning(后称提示调优)在特定的小样本分类任务中取得了非常有前景的结果。提示调优的核心思想是将文本片段(即模板)插入输入文本中,并将分类任务中转换为掩蔽语言建模问题。但是对于关系抽取任务,确定合适的提示模板需要领域专家的帮助,并且获取合适的标签词即繁琐又耗时。此外,关系标签之间存在着丰富地不可忽视的语义和先验知识。为此,我们将重点放在将关系标签间的知识整合到提示调优中以提取关系,并提出了一种具有协同优化的知识感知提示调优方法——KnowPrompt。具体而言,我们将关系标签中蕴含的潜在知识注入到可学习的虚拟类型词和答案词的提示结构中。然后,利用结构化约束对其表示进行协同优化。在标准和小样本设置的5个数据集上的大量实验结果证明了我们的方法的有效性。

2. 方法

构造、优化KnowPrompt的细节图如下:
KnowPrompt: Knowledge-aware Prompt-tuning with Synergistic Optimization for Relation Extraction_第1张图片

2.1 基于知识注入的Prompt构建

  针对prompt由模板和标签词集两部分的特点,提出了基于知识注入的虚拟类型词和虚拟答案词的构造方法应用于关系抽取任务。

表1

KnowPrompt: Knowledge-aware Prompt-tuning with Synergistic Optimization for Relation Extraction_第2张图片

2.1.1 实体关系注入

  虽然 An Improved Baseline for Sentencelevel Relation Extraction 中所提出的类型标注方法可以额外引入实体的类型信息来提高性能,但是需要对类型信息进行额外的注释,这在某些数据集中是不可用的。但是,我们可以用包含在特定关系中的先验知识来获得潜在的实体类型范围而不是注释。例如,给定关系 “per:country_of_birth”,显然与该关系匹配的主体实体属于 “person” ,客体实体属于 “country”。直观来说,我们根据频率数据在潜在实体类型候选集 C s u b C_{sub} Csub C o b j C_{obj} Cobj上建立先验分布 ϕ s u b \phi_{sub} ϕsub ϕ o b j \phi_{obj} ϕobj。以表1中列出的部分关系标签 C s u b C_{sub} Csub C o b j C_{obj} Cobj为例, C s u b C_{sub} Csub的先验分布可以计算为: ϕ s u b = { “ o r g a n i z a t i o n ” : 3 / 6 , “ p e r s o n ” : 3 / 6 } \phi_{sub}=\{“organization”:3/6,“person”:3/6\} ϕsub={organization:3/6,person:3/6}。因此,我们给实体分配虚拟类型词,这些实体用潜在实体类型集的聚合嵌入进行初始化。由于初始化的虚拟类型词并不是特定实体的精确类型,所以这些虚拟类型词可以根据上下文动态学习调整,在关系抽取任务中起到弱化版类型标记的作用。具体的初始化方法如下:
e ^ [ s u b ] = ∑ ϕ s u b ⋅ e ( I ( C s u b ) ) , ( 1 ) e ^ [ o b j ] = ∑ ϕ o b j ⋅ e ( I ( C o b j ) ) , ( 2 ) \hat{e}_{[sub]}=\sum\phi_{sub}·e(I(C_{sub})),\qquad\qquad(1)\\ \hat{e}_{[obj]}=\sum\phi_{obj}·e(I(C_{obj})),\qquad\qquad(2) e^[sub]=ϕsube(I(Csub)),(1)e^[obj]=ϕobje(I(Cobj)),(2)
   e ^ [ s u b ] \hat{e}_{[sub]} e^[sub] e ^ [ o b j ] \hat{e}_{[obj]} e^[obj]代表主体和客体实体的虚拟词的嵌入, I ( ⋅ ) I(·) I()是集合中的去重操作, e e e是语言模型 L L L的词嵌入层。由于基于关系标签内的先验知识设计的虚拟类型词能够初步感知实体类型的范围,因此可以根据上下文进一步优化,表达接近实际实体类型的语义信息,起到类似类型标注的作用。

2.1.2 关系知识注入

  以往的提示调优往往采用自动生成的方法,将词表中的标签词和任务的标签一一对应,这一方法维持了搜索过程的高计算复杂度,且对于关系抽取任务不能充分利用关联标签中丰富的语义知识。为此,我们假设在预训练模型的词表空间中存在一个虚拟答案词 v ′ ∈ V ′ v'\in V' vV可以表示关系的隐式语义。从这个角度出发,我们将 L L L的MLM头层加入可学习的关系嵌入作为虚拟答案词集来完全表示对应的关系标签 y y y。因此,我们可以用掩码位置上 V ′ V' V的概率分布来重新定义 p ( y ∣ x ) p(y|x) p(yx)。我们提出了对标签语义知识的方法,方便了关系抽取的过程。具体地,我们设 ϕ R = [ ϕ r 1 , ϕ r 2 , . . . , ϕ r m ] \phi_R=[\phi_{r1},\phi_{r2},...,\phi_{rm}] ϕR=[ϕr1,ϕr2,...,ϕrm] C R = [ C r 1 , C r 2 , . . . , C r m ] C_R=[C_{r1},C_{r2},...,C_{rm}] CR=[Cr1,Cr2,...,Crm] ϕ r \phi_r ϕr代表通过分解关系标签 r r r得到的关系语义词集 C r C_r Cr的概率分布, m m m是关系标签的数量。此外,我们对 ϕ r \phi_r ϕr采用加权平均函数来平均 C r C_r Cr中的每个词的嵌入,来对这些可以注入语义知识的关系嵌入进行初始化。具体分解过程如表1所示,虚拟答案词 v ′ = M ( y ) v'=M(y) v=M(y)的可学习关系嵌入初始化如下:
e ^ [ r e l ] ( v ′ ) = ϕ r ⋅ e ( C r ) , ( 3 ) \hat{e}_{[rel]}(v')=\phi_r·e(C_r),\qquad\qquad(3) e^[rel](v)=ϕre(Cr),(3)
e ^ [ r e l ] ( v ′ ) \hat{e}_{[rel]}(v') e^[rel](v)是虚拟答案词 v ′ v' v的嵌入, e e e代表 L L L的词嵌入层。虚拟答案词的知识初始化过程可以看作是一个重要的锚点:我们可以根据上下文进一步优化它们,以表达最优的语义信息从而获得更好的性能。

2.2 基于知识约束的协同优化

  由于实体类型与关系标签之间存在着密切的相互作用和联系,且虚拟类型词和回答词应与上下文相关联,我们进一步引入了一种虚拟类型词和虚拟答案词的参数集{ e ^ [ s u b ] , e ^ [ o b j ] , e ^ [ r e l ] ( V ′ ) \hat{e}_{[sub]},\hat{e}_{[obj]},\hat{e}_{[rel]}(V') e^[sub],e^[obj],e^[rel](V)}上具有隐式结构约束的协同优化方法。

2.2.1 情境感知提示校准

  虽然我的虚拟类型和答案词是基于知识进行初始化的,但是它们在潜在变量空间可能不是最优的。它们应该与上下文相关联。因此,通过感知上下文来校准他们的表示来进一步优化是必要的。给定掩码位置上 V ′ V' V的概率分布 p ( y ∣ x ) = p ( [ M A S K ] = V ′ ∣ x p r o m p t ) p(y|x)=p([MASK]=V'|x_{prompt}) p(yx)=p([MASK]=Vxprompt),我们通过计算 y y y p ( y ∣ x ) p(y|x) p(yx)之间的交叉熵作为损失函数来优化虚拟类型词和答案词,如下所示:
J [ M A S K ] = − 1 ∣ X ∣ ∑ x ∈ X y l o g p ( y ∣ x ) , ( 4 ) J_{[MASK]}=-\frac{1}{|X|}\sum_{x\in X} ylogp(y|x),\qquad\qquad(4) J[MASK]=X1xXylogp(yx),(4)
   ∣ X ∣ |X| X代表训练集的个数。可学习词可以通过协同的类型和答案优化自适应地获得最优表示形式进行即时调整。

2.2.2 隐式结构约束

  为了将结构化知识集成到KnowPrompt中,我们采用了额外的结构化约束来优化提示符。特别地,我们用一个三元组 ( s , r , o ) (s,r,o) (s,r,o)来描述一个具体的关系,其中 s , o s,o s,o分别代表主体和客体实体的虚拟类型, r r r是预定义答案词集合 V ′ V' V中的关系标签。在KnowPrompt中,我们没有直接使用预训练好的知识图谱嵌入,而是通过语言模型直接利用虚拟类型词和虚拟答案词的输出嵌入参与计算。隐式结构化约束的损失函数 J s t r u c t J_{struct} Jstruct定义如下:
J s t r u c t u r e d = − l o g σ ( γ − d r ( s , o ) ) − ∑ i = 1 n 1 n l o g σ ( d r ( s i ′ , o i ′ ) − γ ) , ( 5 ) d r ( s , o ) = ∣ ∣ s + r − o ∣ ∣ 2 ( 6 ) J_{structured}=-log\sigma(\gamma-d_r(s,o))-\sum^n_{i=1}\frac{1}{n}log\sigma(d_r(s_i',o_i')-\gamma),\qquad\qquad(5)\\ d_r(s,o)=||s+r-o||_2\qquad\qquad(6) Jstructured=logσ(γdr(s,o))i=1nn1logσ(dr(si,oi)γ),(5)dr(s,o)=s+ro2(6)
  其中 ( s i ′ , r , o i ′ ) (s_i',r,o_i') (si,r,oi)是负样本, γ \gamma γ是边际, σ \sigma σ指sigmoid函数, d r d_r dr是得分函数。对于负采样,我们将正确的虚拟答案词分配在 [ M A S K ] [MASK] [MASK]的位置,随机抽样主体实体或客体实体,并将其替换为一个不相关的实体,构建损坏的三元组,其中实体具有当前关系的不可能类型。



实验细节待补充。。。

你可能感兴趣的:(python,知识图谱,神经网络,深度学习,人工智能)