链接:https://arxiv.org/pdf/1906.01195v1.pdf

TL;DR

对于知识图谱中关系预测这一问题,目前基于CNN的方法在学习特征嵌入上取得了不错的效果,但是目前的方法只考虑了三元组实体的的特征并没有考虑到关系的特征。本文提出了基于注意力机制的特征嵌入模型,其中包含实体特征和关系特征来做实体间关系的预测。在当前数据集上取得了不错的效果。

Algorithm/Model

模型的pipeline如下所示:

详细的梳理一下attention layer的计算方式:

  • 输入:
    entity embedding:HRNe×T\mathbf{H} \in \mathbb{R}^{N_{e} \times T}
    relation embedding:GRNr×P\mathbf{G} \in \mathbb{R}^{N_{r}\times P}
  • 输出:
    entity embedding:HRNe×T\mathbf{H^{'}} \in \mathbb{R}^{N_{e} \times T^{'}}
    relation embedding:GRNr×P\mathbf{G^{'}} \in \mathbb{R}^{N_{r}\times P^{'}}

为学习实体eie_i的特征,结合邻近实体和关系的特征,如三元组tijk=(ei,rk,ej)t_{ij}^{k}=(e_{i}, r_{k}, e_{j}),计算方法如下所示:

cijk=W1[hihjgk]c_{i j k}^{-}=\mathbf{W}_{1}\left[\vec{h}_{i}\left\|\vec{h}_{j}\right\| \vec{g}_{k}\right]

然后学习每个三元组的重要性如下:(套路?)

bijk= LeakyReL U (W2cijk)b_{i j k}=\text { LeakyReL U }\left(\mathbf{W}_{2} c_{i j k}\right)

基于每个元组的重要性,然后利用softmax计算了attention value如下式:

αijk=softmaxjk(bijk)=exp(bijk)nNirRinexp(binr)\begin{aligned} \alpha_{i j k} &=\operatorname{softmax}_{j k}\left(b_{i j k}\right) \\ &=\frac{\exp \left(b_{i j k}\right)}{\sum_{n \in \mathcal{N}_{i}} \sum_{r \in \mathcal{R}_{i n}} \exp \left(b_{i n r}\right)} \end{aligned}

基于以上得到的注意力值,attention layer 实体嵌入特征输出的结果如下:

hi=σ(jNikRijαijkcijk)\overrightarrow{h_{i}^{\prime}}=\sigma\left(\sum_{j \in \mathcal{N}_{i}} \sum_{k \in \mathcal{R}_{i j}} \alpha_{i j k} c_{i j k}\right)

加入multi-head attention,则上述计算公式则变为一下形式:

hi=m=1Mσ(jNiαijkmcijkm)\overrightarrow{h_{i}^{\prime}}=\|_{m=1}^{M} \sigma\left(\sum_{j \in \mathcal{N}_{i}} \alpha_{i j k}^{m} c_{i j k}^{m}\right)

对于relation的嵌入学习,文中只是简单陈述了一个线性变换如下:(有点意料之外)

G=G.WRG^{\prime}=G . \mathbf{W}^{R}

模型的最后一层做了一个全局平均:

hi=σ(1Mm=1MjNikRijαijkmcijkm)\overrightarrow{h_{i}^{\prime}}=\sigma\left(\frac{1}{M} \sum_{m=1}^{M} \sum_{j \in \mathcal{N}_{i}} \sum_{k \in \mathcal{R}_{i j}} \alpha_{i j k}^{m} c_{i j k}^{m}\right)

为了防止丢失原本的特征,文中再将学习的特征加上了一个原本的特征:

H=WEHt+Hf\mathbf{H}^{\prime \prime}=\mathbf{W}^{E} \mathbf{H}^{t}+\mathbf{H}^{f}

损失函数为hinge-loss:

dtij=hi+gkhj1d_{t_{i j}}=\left\|\overrightarrow{h_{i}}+\overrightarrow{g_{k}}-\overrightarrow{h_{j}}\right\|_{1}

L(Ω)=tijStijSmax{dtijdtij+γ,0}L(\Omega)=\sum_{t_{i j} \in S} \sum_{t_{i j}^{\prime} \in S^{\prime}} \max \left\{d_{t_{i j}^{\prime}}-d_{t_{i j}}+\gamma, 0\right\}

对于以上的特征,文中使用了ConvKB作为一个Decoder对元组进行评分:

f(tijk)=(m=1ΩReLU([hi,gk,hj]ωm))Wf\left(t_{i j}^{k}\right)=\left(\prod_{m=1}^{\Omega} \operatorname{ReLU}\left(\left[\vec{h}_{i}, \vec{g}_{k}, \vec{h}_{j}\right] * \omega^{m}\right)\right) \mathbf{W}

损失函数如下:

L=tijk{SS}log(1+exp(ltijkf(tijk)))+λ2W22\mathcal{L}=\sum_{t_{i j}^{k} \in\left\{S \cup S^{\prime}\right\}} \log \left(1+\exp \left(l_{t_{i j}^{k}} \cdot f\left(t_{i j}^{k}\right)\right)\right)+\frac{\lambda}{2}\|\mathbf{W}\|_{2}^{2}

ltijk={1 for tijkS1 for tijkSl_{t_{i j}^{k}}=\left\{\begin{array}{ll}{1} & {\text { for } t_{i j}^{k} \in S} \\ {-1} & {\text { for } t_{i j}^{k} \in S^{\prime}}\end{array}\right.

Experiment Detail

联系作者