2019_NAACL_A Capsule Network-based Embedding Model for Knowledge Graph Completion and Search Persona

代码地址:https://github.com/daiquocnguyen/CapsE

摘要

本文提出一种嵌入模型,名为CapsE,用胶囊网络建模三元组关系。
用一个三列的矩阵表示每个三元组,每列表示三元组(subject, relation, object)中的一个元素。然后将这个三列的矩阵喂给卷积层,用不同的卷积核生成不同的feature map,输入胶囊网络进行打分操作。有效的三元组分数很高,无效的三元组分数很低。

动机

1.大多数KG embedding模型都是为给定三元组的相同维度上的条目建模而构造的,中每个维度几乎都捕获了实体的一些特定于关系的属性。然而,现有的模型中没有一个具有用于在相同维度上对三元组中的条目进行建模的“深度”结构。
To the best of our knowledge, however, none of the existing models has a “deep” architecture for modeling the entries in a triple at the same dimension.

CapsE模型

符号描述

v s , v r , v o v_s,v_r,v_o vs,vr,vo分别为(subject, relation, object)的k维embedding。
在CapsE中,将每个embedding三元组 [ v s , v r , v o ] [v_s,v_r,v_o] [vs,vr,vo]作为一个矩阵 A = [ v s , v r , v o ] ∈ R k × 3 \mathbf{A}=[v_s,v_r,v_o] \in \mathbb{R}^{k\times3} A=[vs,vr,vo]Rk×3
A i , : ∈ R 1 × 3 \mathbf{A}_{i,:}\in\mathbb{R}^{1\times3} Ai,:R1×3表示矩阵 A A A的第 i i i 行;
卷积层使用 w ∈ R 1 × 3 w\in\mathbb{R}^{1\times3} wR1×3的卷积核,使用该卷积核重复对 A A A的每一行做卷积操作,生成feature map q = [ q 1 , q 2 , . . . , q k ] ∈ R k \mathbf{q}=[q_1,q_2,...,q_k]\in\mathbb{R}^k q=[q1,q2,...,qk]Rk,其中, q i = g ( w ⋅ A i , : + b ) q_i=g(w\cdot\mathbf{A}_{i,:}+b) qi=g(wAi,:+b),该式中的 ⋅ \cdot 表示点乘, b ∈ R b\in\mathbb{R} bR为偏置项, g g g为非线性函数如ReLU,因此生成的 q i ∈ R k q_i\in\mathbb{R}^k qiRk
本文中使用的卷积核集合表示为 Ω \Omega Ω,总数表示为 N = ∣ Ω ∣ N=|\Omega| N=Ω,因此卷积层会生成 N N N k k k维的feature map,每一个特征映射可以捕获相同维度内的某个条目的某种特性。

模型架构

在这里插入图片描述

卷积层:

输入:矩阵 A = [ v s , v r , v o ] ∈ R k × 3 A=[v_s, v_r, v_o]\in\mathbb{R}^{k\times3} A=[vs,vr,vo]Rk×3,此例中 k = 4 k=4 k=4
卷积核 N N N个卷积核 w ∈ R 1 × 3 w\in\mathbb{R}^{1\times3} wR1×3,此例中 N = 5 N=5 N=5
激活函数:ReLU,有 q i = g ( w ⋅ A i , : + b ) q_i=g(w\cdot\mathbf{A}_{i,:}+b) qi=g(wAi,:+b)
输出:一个feature map表示为 q = [ q 1 , q 2 , . . . , q k ] ∈ R 1 × k \mathbf{q}=[q_1,q_2,...,q_k]\in\mathbb{R}^{1\times k} q=[q1,q2,...,qk]R1×k,此例中 k = 4 k=4 k=4,共4维,共5个fearture map。

第一层胶囊层:

k = 4 k=4 k=4个胶囊组成
输入:5个fearture map,一个feature map表示为 q = [ q 1 , q 2 , . . . , q k ] ∈ R k \mathbf{q}=[q_1,q_2,...,q_k]\in\mathbb{R}^{k} q=[q1,q2,...,qk]Rk
输出 u = [ u 1 , u 2 , . . . , u k ] \mathbf{u}=[u1,u2,...,u_k] u=[u1,u2,...,uk],其中, u i ∈ R N × 1 \mathbf{u}_i\in\mathbb{R}^{N\times1} uiRN×1

Routing process:

输入 u = [ u 1 , u 2 , . . . , u k ] \mathbf{u}=[u1,u2,...,u_k] u=[u1,u2,...,uk]
输出 u ^ i = W i u i \hat{\mathbf{u}}_i=\mathbf{W}_i\mathbf{u}_i u^i=Wiui W i ∈ R d × N \mathbf{W}_i\in\mathbb{R}^{d\times N} WiRd×N u i ∈ R N × 1 \mathbf{u}_i\in\mathbb{R}^{N\times1} uiRN×1 u ^ i ∈ R d × 1 \hat{\mathbf{u}}_i\in\mathbb{R}^{d\times1} u^iRd×1;
s = ∑ i c i u ^ i \mathbf{s}=\sum_ic_i\hat{\mathbf{u}}_i s=iciu^i s ∈ R d × 1 \mathbf{s}\in\mathbb{R}^{d\times1} sRd×1;
在这里插入图片描述

第二层胶囊层:

输入 s = ∑ i c i u ^ i \mathbf{s}=\sum_ic_i\hat{\mathbf{u}}_i s=iciu^i s ∈ R d × 1 \mathbf{s}\in\mathbb{R}^{d\times1} sRd×1;
输出 e = s q u a s h ( s ) \mathbf{e}=squash(\mathbf{s}) e=squash(s) s q u a s h ( s ) = ∣ ∣ s ∣ ∣ 2 1 + ∣ ∣ s ∣ ∣ 2 s ∣ ∣ s ∣ ∣ squash(\mathbf{s})=\frac{||\mathbf{s}||^2}{1+||\mathbf{s}||^2}\frac{\mathbf{s}}{||\mathbf{s}||} squash(s)=1+s2s2ss,耦合系数 c i c_i ci 由路由过程决定;

打分函数:输出向量 e \mathbf{e} e 的长度作为输入三元组的分数。打分函数如下:
f ( s , r , o ) = ∣ ∣ c a p s n e t ( g ( [ v s , v r , v o ] ∗ Ω ) ) ∣ ∣ f(s,r,o)=||capsnet(g([v_s,v_r,v_o]*\Omega))|| f(s,r,o)=capsnet(g([vs,vr,vo]Ω))

损失函数:对数损失函数,在KG embedding中很常见。
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值