论文笔记 – Global Context-enhanced Graph Convolutional Networks for Document-level Relation Extraction

Huiwei Zhou, et al., “Global Context-enhanced Graph Convolutional Networks for Document-level Relation Extraction”, COLING 2020

1 简介

  • 姓名:GCGCN
  • 任务:文档级关系抽取
  • 流派:基于图
  • 动机:要把上下文的信息融入 GCN
  • 方法:
    • 总体上还是四部曲,encoder – CAGGC – MAGGC – classification
    • encoder:Bi-LSTM or BERT
    • 魔改的 GCN:用 entity 对 sentence 做 attn 聚合,得到一个 sentence 的 entity-aware 表示,再对两个 entity 之间的所有 sentence 做 gated attn 聚合,得到 edge 的表示;input 包含边和节点的表示(这里真是魔改,相当于边和节点直接拼);layer 之间 dense 连接;下面两个图都使用这个魔改的 GCN
    • CAGGC:用来更新 entity 表示。entity 作为 node,adj 矩阵基于“entity pair 和 edge”的 attn score
    • MAGGC:用来多跳推理。和 AGGCN 一样,adj matrix 基于 entity pair 的 attn score matrix
    • classification:前面三个模块的输出拼一起,再拼一些特征,bilinear + linear 分类
  • 性能:垃圾
  • 短评:它主要的创新“上下文信息的引入”,或者说“GCN 的输入拼上边的表示”,感觉没啥道理,其它就都是一些 trick 的堆积,搞得很复杂,个人不太喜欢。更何况他还引入了 entity type 的信息(我印象里别人应该是没用过),他搞的远程监督预训练 IgnF1 提升了 0.5 点左右,不知道属于什么水平。

2 方法

四部曲,第一步略,得到词的表示——第 i 句子中的第 j 个词的表示 $h_{i,j}$;和其他文章一样,再 aggregate 得到整体的 entity representation 矩阵 $P^{(0)}$

2.1 建图

entity 作为 node,连接所有共现于同一句的 entity。这里的“链接”可不是单纯搞一个 binary 邻接矩阵,后面是要构建边的表示的。

建图的时候,还有一个被叫做 extend 的小 trick:如果相邻的两句话里面,后一句里面有介词指向前一句,就把这两句话合并成一个句子。这样就可以轻松地解决指代消解的问题。

2.2 魔改 GCN

它的 GCN 不仅用了 node embedding $P$,还用上了边的 embedding $\hat{h}$:$$P_v^k = \sigma(\sum_{u\in \mathcal{N}(v)} A_{u,v}(W_{node}^k\tilde{P}_u^{k-1} + W_{edge}^k\hat{h}_{u,v} + b^k))$$

其中 $\mathcal{N}(v)$ 表示 v 的邻居,$\tilde{P}$ 表示前面 k-1 层 GCN 输出 densely 输入(拼接 + reshape),$A_{u,v}$ 就是算的 uv 两节点之间的相似度(或者说,邻接矩阵的一项)。

最后 GCN 也是 dense 输出,即每一层输出拼接,再 reshape。

2.3 Context-aware Attention Guided Graph Convolution (CAGGC)

这一环节是用来引入上下文信息,优化 encoder 的 entity 表示。分成两步:先是计算边的表示和邻接矩阵,然后输入魔改的 GCN。下面就只说第一步了。

边是什么呢?别人都是算一个相似度,作为两个 entity 的边权;或者用简单的规则来连接,得到一个 binary 邻接矩阵。本文是把句子当做边,具体来说,把包含两个 entity 的所有句子 aggregate,作为边的表示。因此首先要计算一个句子的表示:$$\begin{aligned} h_i &= W[h_i^u;h_i^v] + b \\ h_i^u &= \sum \alpha_{i,j}^u h_{i,j} \\ h_i^v &= \sum \alpha_{i,j}^v h_{i,j} \\ \alpha_{i,j}^u &= \text{softmax}(W^T\text{tanh}(Wh_{i,j} + Wx_{pos(i,j)}^u + b)) \\ \alpha_{i,j}^v &= \text{softmax}(W^T\text{tanh}(Wh_{i,j} + Wx_{pos(i,j)}^v + b)) \\ \end{aligned}$$ 

五个式子:

  • 1: 句子 i 的表示由 分别对两个 entity 做 attn aggregation 的结果(词 agg 成句子)拼接 + linear 得到;
  • 2,4: 句子 i 对 entity u 的 attn aggregation 由每个词权重相加得到;权重是式子 4 得到的,其中 $x_{pos(i,j)}$ 是当前词和 entity u 的相对距离;
  • 3,5: 对称的 v 同理。

式子里面的所有权重我就都简写成 $W$ 了,反正也不重要。

得到包含 entity pair u,v 的一个句子表示后,边就由所有包含 u,v 的句子 attn aggregation 得到:$$\begin{aligned} \hat{h}_{u,v} &= W[\hat{h}_{u,v}^u;\hat{h}_{u,v}^v] + b \\ \hat{h}_{u,v}^u &= \frac{1}{S}\sum_{i=1}^S \beta_{i}^u h_{i} \\ \hat{h}_{u,v}^v &= \frac{1}{S}\sum_{i=1}^S \beta_{i}^v h_{i} \\ \beta_{i}^u &= \sigma(W^T\text{tanh}(Wh_{i} + WP_u + b)) \\ \beta_{i}^v &= \sigma(W^T\text{tanh}(Wh_{i} + WP_v + b)) \\ \end{aligned}$$ 

五个式子:

  • 1: uv 之间的边的表示由 分别对两个 entity attn aggregation 的结果(句子 agg 成边)拼接 + linear 得到;
  • 2,4: uv 的边由所有包含 uv 的句子加权平均得到;权重是式子 4 得到的,其中的 $P_u$ 是 entity u 的表示,$\sigma$ 就是将分数归一化的一个 gate(4.5);
  • 3,5: 对称的 v 同理。

到这里,我们终于得到了边的表示的矩阵 $\hat{H}$。下一步就是计算邻接矩阵:$$A_{u,v} = \frac{\exp(\text{tanh}(W^T(WP_u + WP_v + W\hat{h}_{u,v})))}{\sum_{u\in\mathcal{N}(v)}\exp(\text{tanh}(W^T(WP_u + WP_v + W\hat{h}_{u,v})))}$$

真的是非常复杂,把所有能用的信息都用上了。

2.4 Multi-head Attention Guided Graph Convolution (MAGGC)

这一步也是,先用 entity 表示计算 sentence 表示,使用的也是上面的十个式子,然后计算邻接矩阵的时候稍微简单了一点,就 node 之间做 self-attn,只不过要做多头的再平均一下。

2.5 classification

把 ① encoder ② CAGGC ③ MAGGC 得到的 entity 表示拼一起,一层 linear,得到最后的 entity 表示,再拼上 entity type 和相对位置的表示,bilinear 得到分类结果。

3 实验

  1. sota @ DocRED
  2. ablation: 都有用,每一条解释都是废话
  3. 只用 CAGGC 和只用 MAGGC 对比:CAGGC 更注重 local info,一两跳表现更好;MAGGC 能提取 global 信息,多跳表现更好(4.7)
  4. 在远程监督的数据上先 pretrain:使用 curriculum learning 的想法训练。cl 的想法是训练时先易后难,本文是先难后易(4.1, 4.2),最后性能有了一定的提升
  5. case study 给了一个例子,发现 LSTM 都能预测出的关系,GCGCN 预测不出来,作者说因为“global information from the whole document brings an undesirable impact on local information”(4.6)

4 思考

  1. curriculum learning 和 active learning 不就是相反的想法吗?却都能 work。这就是一个很好的“motivation 和使用场景要对应”的例子
  2. 不过这篇文章中,作者说是 curriculum learning,实际却用的 active learning 的想法,从难到易… 不过场景毕竟和 active learning 不一样,这样的说法也可以理解。
  3. 综合 1 和 2,难道是先难后易先易后难并不重要?重要的是把不同难度的样本分开?个人猜测,这样就引进了一个新的约束:原先的噪声可能是多个不同 $\sigma$ 高斯分布的混合,按“难易”拆开样本,或许就把这些高斯分布拆开了?(啊我在说什么…
  4. 一开始我在疑惑,作者让节点和边作为 GCN 的输入,这合理吗?拉普拉斯算子可以让节点平滑,在节点之间信息传递,难道还能让边也平滑了?我觉得不合理。不过,其实我一直觉得随便一个权重放那里代替 GCN 文章中的 $\hat{A}$ 不太合理,这样就没有平滑的意思了啊?可是大家好像都这样用,于是我就把它理解成,可能是把 $D^{-1}$ 放在了 $W$ 里面吧。但是这个解释也无法解释本文的魔改方法。
  5. gate 的这一类方法,如果每个 gate 都是 0,那咋办?不过从另外一个角度想,其实就是 attn 当做一个 layer,后面加上 activate function。应该也不是问题。
  6. 我认为作者在 case study 中说的“undesirable impact”是因为仍然存在过平滑的问题:在传统的 GCN 中,由于信息的传递,多阶邻居的表示也逐渐融入了 caselberg 的表示,所以 caselberg 和高阶邻居的相似度随着信息的传递上升;但是对于一阶邻居 EWW,caselberg 的信息只在第一跳时与 EWW 融合,后面的几跳,相当于都是削弱了 caselberg 在 EWW 中的信息(因为 EWW 还要接受更多其他邻居的信息)。结合上面两点,caselberg 的一阶邻居随着多跳,和 caselberg 的相似度逐渐变小,而高阶邻居随着多跳,相似度逐渐变大,这是不合理的。引入 res、dense 之后,可能能缓解这种情况,但是我觉得不够彻底:是不是可以加一个约束,在 GCN inference 得到节点表示之后,在计算 attn score 之前,对 caselberg 的邻居做一个 re-ranking?让 k 阶邻居的相似度一定大于 k+1 阶邻居,引入这样的约束,对于 reasoning 是不是更加合理?但是这种方法太不优雅了,能不能在 GCN 信息传递的时候就搞一个 decay,或者约束呢?
  7. 3.3 说的 global 和 local,与 GLRE 正相反,不过也都能自圆其说:本文的 global 与 local 是 inference 时开不开 global 的上帝视角,GLRE 的 global 和 local 是在表示 entity 的时候,用 global 还是 local 的信息。

发表评论