论文笔记 – Graph Enhanced Dual Attention Network for Document-Level Relation Extraction

Bo Li, et al., “Graph Enhanced Dual Attention Network for Document-Level Relation Extraction”, COLING 2020

更新了一下论文笔记的模板。1 这部分争取让人能 2 分钟了解这篇文章的目的和做法。23 是具体的做法和结果,我争取不在 23 这两部分发表自己的意见,而是完全转述作者的思路,这样也比较客观,把我自己的想法全部移动到 4 这部分,这样也方便以后的回看思考。

1 简介

  • 姓名:GEDA
  • 任务:Doc RE
  • 流派:基于图(勉强算)
  • 动机:并非所有句子都有用,希望 sentence 和 relation 互相 attn 交互,来优化 relation 的表示
  • 方法:
    • 先用 doc 里所有 entity pair 表示 + bilinear 得到 priliminary relation instance 表示,然后用三步优化这个表示:
      1. 用句子对 relaiton 表示做 attn,加权聚合 relation 表示,得到“与 relation 相关的” sentence 表示
      2. 用这个 attned 句子和 priliminary entity 构图,更新 entity 表示,再用 pair + bilinear 更新 relation 表示
      3. 用 relation 对 sentence 做 attn,得到“与 sentence 相关的” relation 表示,最后用它分类。
    • 另外还引入两个 loss:
      1. 两次 attn 矩阵应该互为 transpose
      2. relation 对 sentence 的 attn 矩阵中,support evidence 的位置应该有大权重
  • 性能:性能垃圾且不讲武德,超过了一年前的 “sota”,半年前的工作都被无视掉了
  • 优点/最佳适用场景:想不出来
  • 缺点:想不出来
  • 短评:一顿操作相当于是别人四部曲中最后一步的改进,有非常多创新的地方。引入的两个 loss 也是思路清奇(不过我都觉得不对)

2 方法

本文其实不是基于图方法的四部曲,其实就是先用 Bi-LSTM 得到表示,再优化。即 encoder + graph-enhanced bi-directional attention(GEDA),encoder 不说啦,sentence 用最大池化得到,relation 用两个实体 bilinear 得到。下面就详细说后半部分的优化,整体分成三步:S2R、GCN、R2S,下面分别来讲。

2.1 S2R

用 sentence 做 query,relation instance 做 key 来 attn,attn score 使用 bilinear 计算,最后用 relation 加权求和,得到 relation-oriented sentence 的表示(我觉得有问题:4.4),同时也得到 sentence 和 relation 之间的 attn score 矩阵 $W_{S2R}$

2.2 GCN

建图:

  • node:entity 和 relation-oriented sentence
  • edge:
    1. 如果两个句子包含相同的实体,就连接这两个句子(很奇怪吧
    2. 如果两个实体在句子中共现,就连接这两个实体(很奇怪吧
    3. 实体在句子中,就连接这两个节点

为什么这样奇怪的建图?因为他的目的是为了引入实体的信息,优化句子的表示!这和之前 DocRED 其他文章的建图目的完全不一样。

过一层 GCN,得到更新的 sentence 和 entity 表示,entity pair + bilinear 又更新了 relation instance 表示。

2.3 R2S

同 S2R 是一个机制,只不过将 sentence 和 relation instance 对调。这一步最后用 GCN-refined relation-oriented sentence 的表示加权求和,得到 sentence-oriented relation 的表示;和一个 attn score 矩阵 $W_{R2S}$

2.4 attn duality

作者认为,2.2 和 2.4 的两个 attn score 矩阵应该是互为转置的,因为“the more attention a sentence pays to a relation in- stance, the more supporting evidence the sentence contains for the relation instance. Conversely, the relation instance should also pay more attention to the sentence to obtain a more accurate repre- sentation.”(我觉得有问题:4.1)

因此这项 loss 就用二范数的形式来表示(我觉得有问题:4.2):$$\frac{1}{balabala}\|W_{S2R} – W_{R2S}^T\|$$

2.5 support evidence

对于 $W_{R2S}$ 矩阵中的一列 $w_i$,表示一个 relation instance i 对各个句子的 attn score。作者觉得,这一列的分布应该尽量贴合 support evidence 的分布:$$c_i = [1/m, 0, 1/m, …]$$

这个式子表示,如果这个 relation instance 在 doc 中有 m 条 support evidence,就在这些 sp 的位置上赋值为 $1/m$,其余为 0,然后作者通过 kld 来约束这两个分布(我觉得有问题:4.3):$$\frac{1}{balabala}\sum \text{KLD}(c_i,w_i)$$

总的 loss 就是所有 loss 加一起

3 实验

  1. “sota” @ DocRED
  2. 每个模块都有用
  3. $W_{R2S}$ 打印出来,在 sp 上确实更深了

4 思考

  1. 两个矩阵互为转置,作者说是因为,当 sentence attn relation instance 时,relation instance 也应该更多的 attn 这个 sentenece。这个真的合理吗?我爱你,你就一定爱我吗?或者比如在图里,同一条边对其度大小不同的两个顶点,重要程度也不同(似乎这两个例子都不恰当)。个人感觉,如果这两个矩阵只是“是否关联”的 binary 的数字,那么这种对偶性是成立的,但如果是像这篇文章中一样的 attn score,那么这个从逻辑上就是错误的。比如:
  1. 另外,为了表示这个对偶性,作者是求 transpose 的差的二范数。这个操作本身是不是也有一些问题?如果作者的对偶理论成立,那么这个操作会不会让中间 GCN 变得 trivial?不过我对 GCN 了解还不太深,所以这个质疑我不是很有底气。
  2. 个人感觉用上 support evidence 是很好的监督信号,用来挑选有用的句子。但是我觉得是可以改进的:support evidence 的监督我觉得不应该是让 sp 的句子并非每一句都要更多,而应该是让 sp 集合总分更大(文章中“by incorporating duality constraints and supervised attention, correct sentences are assigned with more weights”应该就是这个意思)。而在实践这个想法时,作者却是让 attn score 去接近 sp 句子的平均分布(1/m)。事实上,并非 sp 的句子都是 of equal contribution,我觉得这部分的约束目标应该改成让非 sp 的句子 attn 值尽量接近于零。
  3. 这篇文章总体上的确是另辟蹊径。因为别人都在想用各种图结构优化 entity mention 的表示,这篇文章是在想办法优化 relation 的表示。这种 Bi-attention 的思想,感觉也看到过不少类似的做法,比如 BIDAF MLMAN,他们的 motivation 都是加强双方的交互。

但是这两篇文章的互相的 attn,是 FSL 的 support 和 query,或者 MRC 的 context 和 query 来交互,双方只是角色不同,但是是同一类事物(都是句子或者都是词),所以 attn score 可以被理解为“相似度”,bi-attn 可以被解释为“融合 query 和 context 中的信息”——这是为了方便接下来的匹配,匹配就是找更大的相似度,bi-attn 就是让句子内部的词,和对方相似的权重更大,因此对整个句子来说,是强化了这种相似度的信息。

而本文中,是 sentence 和 relation 互相交互,sentence 和 relation 之间的确是有着“相连”的对应关系,但是却没有“相似度”一说(我感觉不应该有,如果有,那和用 mention 匹配句子有什么区别?),同时最后的任务也不是让两者匹配,因此这就和前两篇文章的情景都不一样。如果没有所谓“相似度”,那么做 attn 真的合理吗?如果最后不是让二者匹配,那么 bi-attn 真的有效吗?

比如在 s2r 这一步中,这算出来的 s2r 矩阵,说他是代表“sentence 和 relation 连接”,这勉强说得通,但是用 relation 的表示 aggregate,得到 relation-oriented sentence 的表示,这绝对说不通吧?因为这俩不是同一种东西啊?并不是 dimension 一样的东西就都能暴力相加的吧?不过他搞了两次,最后 relation 的表示其实还是由一开始的 relation 表示组成的,在最后的结果上是合理的。中间的 bi-attn 想法我觉得不合理,或者说,把 aggregation 之后的向量解释成“A-oriented B”,我觉得不合理

  1. 这篇文章构图其实也挺有意思的,由于他构图的目的是 refine sentence 的表示,所以有很多创新的连边方式(所以他最多“勉强”算基于图的 docred)。这部分感觉做的是真不错,对我很有启发性,以后我感觉可以尝试总结一下,构图的时候,各种结点、各种边,都能在各种任务中,实现什么目的【#TODO1】,甚至这个总结可以不局限于文档级的关系抽取任务。

5 TODO

  1. 4.5 的总结

Leave a Comment

电子邮件地址不会被公开。