Joint Entity and Relation Extraction with Set Prediction Networks

背景

  • 问题:当前seq2seq关系抽取时,受限于autoregresive decoder,需要固定triple relation的顺序,因此模型除了要学习抽取relation,还要避免顺序错误;然而relation之间一般是没有顺序的;
  • 方法:利用bipartite match(二部图匹配)并行预测关系,可以无需固定顺序

模型

  • 整体模型架构如下Joint Entity and Relation Extraction with Set Prediction Networks_第1张图片

  • 可以看出模型并不复杂,主要由3部分构成

    • Encoder:使用Bert以及BPE(byte pair encode)处理输入
    • NAD:非自回归decoder
    • BML:二部图匹配构造损失函数
  • NAD

    • Dec Input:固定输入为m个embeddings,m为超参数,表示预测关系(或者triple)的数目, 一般远超过(significantly larger than)句子真实包含关系的数目;
    • 注意m个embeddings对所有训练数据都是一样的;
    • transformer:input经过N个transformer层得到输出 H d ∈ R m ∗ d H_d\in R^{m*d} HdRmd;每个transformer层包含关系(triple)之间的self-attention以及 关系与句子 之间的inter-attention(cross-attention);
    • FFN:线性层,这一部分写在这里或者外面都一样,就认为是NAD的吧;具体做的事就是对上一步的每个输出做线性变换,分别计算关系类型 r r r的分布(注意除了真实的关系,还要加一个null表示没有关系),关系头实体(subject)的位置和关系尾实体(object)的位置,如下图所示:Joint Entity and Relation Extraction with Set Prediction Networks_第2张图片
  • BML

    • 这一部分是设计损失函数;直观的想法是,训练过程中,每个句子的真实关系随便与m个预测结果中的一个进行loss计算(如按顺序),累加该句子所有真实关系的loss作为句子总loss;
    • 这样显然是有问题的,比如m个预测结果的第1个到底要与哪个真实关系计算loss;所以作者想了一个办法,利用Bipartite Match(二部图匹配)寻找m个预测结果的一种排列,使该排列下预测结果和真实结果"距离"最接近,由此计算loss;
    • 假设当前句子含有 n n n m ≥ n m \ge n mn)个真实的关系,组成关系集合 Y Y Y ,其中每条关系是个tuple,形如 ( r , s s t a r t , s e n d , o s t a r t , o e n d ) (r, s^{start}, s^{end}, o^{start}, o^{end}) (r,sstart,send,ostart,oend);这里的s、o表示关系里的subject(头实体)和object(尾实体);预测结果是 Y ^ \hat Y Y^,由m个tuple组成;
    • 需要先padding,即往 Y Y Y中添加对应于上述null关系的tuple(作者似乎没有实际添加null而只是添加placeholder占个位);这样做是为了后面Bipartite-match能成对匹配;
    • 有了padding后的 Y Y Y Y ^ \hat Y Y^,就可以BML(二部图匹配损失),如下图所示,式(8)表示从 Y ^ \hat Y Y^中寻找一个最好的排列 π ∗ \pi^* π,该排列使 ∑ i = 1 m C m a t c h ( Y i , Y ^ π ∗ ) ( 由 式 ( 9 ) 计 算 ) 最 小 \sum_{i=1}^mC_{match}(Y_i, \hat Y_{\pi^*})(由式(9)计算)最小 i=1mCmatch(Yi,Y^π)(9),式(9)计算一个预测结果与另一个真实关系的距离,注意只针对非null的真实关系Joint Entity and Relation Extraction with Set Prediction Networks_第3张图片
    • 寻找排列=>典型的匈牙利算法(Hungarian algorithm),算法复杂度 O ( m 3 ) O(m^3) O(m3),paper最后有,也可查看wiki;
    • 注意到式(9)并不是使用 l o g p logp logp,这个对于寻找排列来说并没有问题;
    • 在寻找到预测结果的最优排列 π ∗ \pi^* π后,使用该排列计算最终的loss,如下:Joint Entity and Relation Extraction with Set Prediction Networks_第4张图片
    • 意义:
      • Bipartite Match Loss其实是做一个MinMin,即首先寻找最小配对损失(找一个预测结果的最优排列),然后再最小化该损失;
      • 笔者猜测这样可以使m个预测器有所专长,各自预测相近的关系,避免预测器间的无序预测和竞争;

实验

  • 在NYT、WebNLG数据集做的实验,结果如下
    • 部分匹配、准确匹配–部分匹配为 首or尾词匹配即可Joint Entity and Relation Extraction with Set Prediction Networks_第5张图片Joint Entity and Relation Extraction with Set Prediction Networks_第6张图片
  • 针对实体对、关系类型单独分析:
    • 结论是实体对决定整体效果;Joint Entity and Relation Extraction with Set Prediction Networks_第7张图片
  • 对NAD和BML的ablation分析:
    • cross-entropy loss应该是不搜索预测结果的最优排列,直接随机配对计算loss(作者没说);Joint Entity and Relation Extraction with Set Prediction Networks_第8张图片
  • 对overlap的分析:
    • Normal表示句子没有关系之间实体对发生重叠,SEO表示关系之间有部分实体重叠,EPO表示关系之间实体对完全重叠
      Joint Entity and Relation Extraction with Set Prediction Networks_第9张图片

补充

  • 匈牙利算法
    • 待续

你可能感兴趣的:(技术问题,#,深度学习,#,paper,算法,人工智能,深度学习)