本文做为第2部分,主要根据原始论文介绍几篇基础的工做,主要包括GNN,GCN及变体,DCNN,Tree-LSTM,包括模型的详解和模型训练,以及模型评价。html
1. The Graph Neural Network Model
这篇论文是第一个提出Graph Neural Network模型的论文,它将神经网络使用在图结构数据上,并细述了神经网络模型告终构组成、计算方法、优化算法、流程实现等等。论文后面还对模型的复杂度进行了评估,以及在现实任务上进行了实验和比较(比较算法为NL、L、FNN)。该报告暂时主要关注模型设计部分和实验结果部分,忽略复杂性评估部分 。node
图领域应用
对于图领域问题,假设函数
τ
\tau
τ 是将一个图
G
G
G 和图中的一个节点
n
n
n 转化为一个实值向量的函数
τ
(
G
,
n
)
∈
R
m
\tau(G,n)\in{R^m}
τ ( G , n ) ∈ R m 那么监督学习的任务就在于从已知样本中学习获得这样的函数。python
图领域的应用主要能够分为两种类型:专一于图的应用(graph-focused)和专一于节点的应用(node-focused) 。对于graph-focused的应用,函数
τ
\tau
τ 和具体的节点无关,(即
τ
(
G
)
\tau(G)
τ ( G ) ),训练时,在一个图的数据集中进行分类或回归。对于node-focused的应用,
τ
\tau
τ 函数依赖于具体的节点
n
n
n ,即
τ
(
G
,
n
)
\tau(G,n)
τ ( G , n ) ,以下: web
图 (a) 是一个化学分子结构,可以使用图
G
G
G 进行表示,函数
τ
(
G
)
\tau(G)
τ ( G ) 可能用于估计这种化学分子对人体有害的几率,所以,咱们并不关注分子中具体的原子(至关于节点),因此属于graph-focused应用。
图 (b) 是一张城堡的图片,图片中的每一种结构都由节点表示,函数
τ
(
G
,
n
)
\tau(G,n)
τ ( G , n ) 可能用于预测每个节点是否属于城堡(图中的黑点)。这种类型属于node-focused应用。
GNN模型详述
GNN模型基于信息传播机制,每个节点经过相互交换信息来更新本身的节点状态,直到达到某一个稳定值 ,GNN的输出就是在每一个节点处,根据当前节点状态分别计算输出。算法
有以下定义:json
一个图
G
G
G 表示为一对
(
N
,
E
)
(\boldsymbol{N}, \boldsymbol{E})
( N , E ) ,其中,
N
\boldsymbol{N}
N 表示节点集合,
E
\boldsymbol{E}
E 表示边集。网络
n
e
[
n
]
ne[n]
n e [ n ] 表示节点
n
n
n 的邻居节点集合app
c
o
[
n
]
co[n]
c o [ n ] 表示以
n
n
n 节点为顶点的全部边集合框架
l
n
∈
R
l
N
\boldsymbol{l}_{n} \in \mathbb{R}^{l_{N}}
l n ∈ R l N 表示节点
n
n
n 的特征向量ide
l
(
n
1
,
n
2
)
∈
R
l
E
\boldsymbol{l}_{\left(n_{1}, n_{2}\right)} \in \mathbb{R}^{l_{E}}
l ( n 1 , n 2 ) ∈ R l E 表示边
(
n
1
,
n
2
)
(n_1,n_2)
( n 1 , n 2 ) 的特征向量
l
\boldsymbol{l}
l 表示全部特征向量叠在一块儿的向量
注 :原论文里面
l
\boldsymbol{l}
l 表示label,但论文中的label指的是features of objects related to nodes and features of the relationships between the objects
,也就是相关特征,因此这里一概使用特征向量翻译。
论文将图分为positional graph和nonpositional graph,对于positional graph,对于每个节点
n
n
n ,都会给该节点的邻居节点
u
u
u 赋予一个position值
ν
n
(
u
)
\nu_{n}(u)
ν n ( u ) ,该函数称为injective function,
ν
n
:
n
e
[
n
]
→
{
1
,
…
∣
N
∣
}
\nu_{n} : \mathrm{ne}[n] \rightarrow\{1, \ldots|\mathbf{N}|\}
ν n : n e [ n ] → { 1 , … ∣ N ∣ } 。
假设存在一个图-节点对的集合
D
=
G
×
N
\mathcal{D}=\mathcal{G} \times \mathcal{N}
D = G × N ,
G
\mathcal{G}
G 表示图的集合,
N
\mathcal{N}
N 表示节点集合,图领域问题能够表示成一个有以下数据集的监督学习框架
L
=
{
(
G
i
,
n
i
,
j
,
t
i
,
j
)
∣
G
i
=
(
N
i
,
E
i
)
∈
G
;
n
i
,
j
∈
N
i
;
t
i
,
j
∈
R
m
,
1
≤
i
≤
p
,
1
≤
j
≤
q
i
}
\mathcal{L}=\left\{\left(\boldsymbol{G}_{i}, n_{i, j}, \boldsymbol{t}_{i, j}\right)| \boldsymbol{G}_{i}=\left(\boldsymbol{N}_{i}, \boldsymbol{E}_{i}\right) \in \mathcal{G}\right.;n_{i, j} \in \boldsymbol{N}_{i} ; \boldsymbol{t}_{i, j} \in \mathbb{R}^{m}, 1 \leq i \leq p, 1 \leq j \leq q_{i} \}
L = { ( G i , n i , j , t i , j ) ∣ G i = ( N i , E i ) ∈ G ; n i , j ∈ N i ; t i , j ∈ R m , 1 ≤ i ≤ p , 1 ≤ j ≤ q i } 其中,
n
i
,
j
∈
N
i
n_{i, j} \in \boldsymbol{N}_{i}
n i , j ∈ N i 表示集合
N
i
∈
N
\boldsymbol{N}_{i} \in \mathcal{N}
N i ∈ N 中的第
j
j
j 个节点,
t
i
,
j
\boldsymbol{t}_{i, j}
t i , j 表示节点
n
i
j
n_{ij}
n i j 的指望目标(即标签)。
节点
n
n
n 的状态用
x
n
∈
R
s
\boldsymbol{x}_{n} \in \mathbb{R}^{s}
x n ∈ R s 表示,该节点的输出用
o
n
\boldsymbol{o}_{\boldsymbol{n}}
o n 表示,
f
w
f_{\boldsymbol{w}}
f w 为local transition function ,
g
w
g_{\boldsymbol{w}}
g w 为local output function ,那么
x
n
\boldsymbol{x}_{n}
x n 和
o
n
\boldsymbol{o}_{\boldsymbol{n}}
o n 的更新方式以下
x
n
=
f
w
(
l
n
,
l
c
o
[
n
]
,
x
n
e
[
n
]
,
l
n
e
[
n
]
)
o
n
=
g
w
(
x
n
,
l
n
)
\begin{array}{l}{\boldsymbol{x}_{n}=f_{\boldsymbol{w}}\left(\boldsymbol{l}_{n}, \boldsymbol{l}_{\mathrm{co}[n]}, \boldsymbol{x}_{\mathrm{ne}[n]}, \boldsymbol{l}_{\mathrm{ne}\left[n\right]}\right)} \\ {\boldsymbol{o}_{n}=g_{\boldsymbol{w}}\left(\boldsymbol{x}_{n}, \boldsymbol{l}_{n}\right)}\end{array}
x n = f w ( l n , l c o [ n ] , x n e [ n ] , l n e [ n ] ) o n = g w ( x n , l n ) 其中,
l
n
,
l
co
[
n
]
,
x
n
e
[
n
]
,
l
n
e
[
n
]
\boldsymbol{l}_{n}, \boldsymbol{l}_{\operatorname{co}[n]}, \boldsymbol{x}_{\mathrm{ne}[n]}, \boldsymbol{l}_{\mathrm{ne}[n]}
l n , l c o [ n ] , x n e [ n ] , l n e [ n ] 分别表示节点
n
n
n 的特征向量、与节点
n
n
n 相连的边的特征向量、节点
n
n
n 邻居节点的状态向量、节点
n
n
n 邻居节点的特征向量。
假设
x
,
o
,
l
,
l
N
\boldsymbol{x}, \boldsymbol{o}, \boldsymbol{l}, \boldsymbol{l}_{N}
x , o , l , l N 分别为全部的状态、全部的输出、全部的特征向量、全部节点的特征向量的叠加起来的向量,那么上面函数能够写成以下形式
x
=
F
w
(
x
,
l
)
o
=
G
w
(
x
,
l
N
)
\begin{array}{l}{\boldsymbol{x}=F_{\boldsymbol{w}}(\boldsymbol{x}, \boldsymbol{l})} \\ {\boldsymbol{o}=\boldsymbol{G}_{\boldsymbol{w}}\left(\boldsymbol{x}, \boldsymbol{l}_{\boldsymbol{N}}\right)}\end{array}
x = F w ( x , l ) o = G w ( x , l N ) 其中,
F
w
F_{\boldsymbol{w}}
F w 为global transition function ,
G
w
G_{\boldsymbol{w}}
G w 为global output function ,分别是
f
w
f_{\boldsymbol{w}}
f w 和
g
w
g_{\boldsymbol{w}}
g w 的叠加形式。
根据Banach的不动点理论,假设
F
w
F_{\boldsymbol{w}}
F w 是一个压缩映射函数,那么式子有惟一不动点解,并且能够经过迭代方式逼近该不动点
x
(
t
+
1
)
=
F
w
(
x
(
t
)
,
l
)
\boldsymbol{x}(t+1)=F_{\boldsymbol{w}}(\boldsymbol{x}(t), \boldsymbol{l})
x ( t + 1 ) = F w ( x ( t ) , l ) 其中,
x
(
t
)
\boldsymbol{x}(t)
x ( t ) 表示
x
\boldsymbol{x}
x 在第
t
t
t 个迭代时刻的值,对于任意初值,迭代的偏差是以指数速度减少的,使用迭代的形式写出状态和输出的更新表达式为
x
n
(
t
+
1
)
=
f
w
(
l
n
,
l
c
o
[
n
]
,
x
n
e
[
n
]
(
t
)
,
l
n
e
[
n
]
)
o
n
(
t
)
=
g
w
(
x
n
(
t
)
,
l
n
)
,
n
∈
N
\begin{aligned} \boldsymbol{x}_{n}(t+1) &=f_{\boldsymbol{w}}\left(\boldsymbol{l}_{n}, \boldsymbol{l}_{\mathrm{co}[n]}, \boldsymbol{x}_{\mathrm{ne}[n]}(t), \boldsymbol{l}_{\mathrm{ne}[n]}\right) \\ \boldsymbol{o}_{n}(t) &=g_{\boldsymbol{w}}\left(\boldsymbol{x}_{n}(t), \boldsymbol{l}_{n}\right), \quad n \in \boldsymbol{N} \end{aligned}
x n ( t + 1 ) o n ( t ) = f w ( l n , l c o [ n ] , x n e [ n ] ( t ) , l n e [ n ] ) = g w ( x n ( t ) , l n ) , n ∈ N GNN的信息传播流图以及等效的网络结构以下图所示
根据上图所示,顶端的图是原始的Graph,中间的图表示状态向量和输出向量的计算流图,最下面的图表示将更新流程迭代
T
T
T 次,并展开以后获得等效网络图。
网络的学习算法设计
GNN的学习就是估计参数
w
\boldsymbol{w}
w ,使得函数
φ
w
\varphi_{\boldsymbol{w}}
φ w 可以近似估计训练集
L
=
{
(
G
i
,
n
i
,
j
,
t
i
,
j
)
∣
G
i
=
(
N
i
,
E
i
)
∈
G
;
n
i
,
j
∈
N
i
;
t
i
,
j
∈
R
m
,
1
≤
i
≤
p
,
1
≤
j
≤
q
i
}
\mathcal{L}=\left\{\left(\boldsymbol{G}_{i}, n_{i, j}, \boldsymbol{t}_{i, j}\right)| \boldsymbol{G}_{i}=\left(\boldsymbol{N}_{i}, \boldsymbol{E}_{i}\right) \in \mathcal{G}\right.;n_{i, j} \in \boldsymbol{N}_{i} ; \boldsymbol{t}_{i, j} \in \mathbb{R}^{m}, 1 \leq i \leq p, 1 \leq j \leq q_{i} \}
L = { ( G i , n i , j , t i , j ) ∣ G i = ( N i , E i ) ∈ G ; n i , j ∈ N i ; t i , j ∈ R m , 1 ≤ i ≤ p , 1 ≤ j ≤ q i } 其中,
q
i
q_i
q i 表示在图
G
i
G_{i}
G i 中监督学习的节点个数,对于graph-focused的任务,须要增长一个特殊的节点,该节点用来做为目标节点,这样,graph-focused任务和node-focused任务都能统一到节点预测任务上,学习目标能够是最小化以下二次损失函数
e
w
=
∑
i
=
1
p
∑
j
=
1
q
i
(
t
i
,
j
−
φ
w
(
G
i
,
n
i
,
j
)
)
2
e_{\boldsymbol{w}}=\sum_{i=1}^{p} \sum_{j=1}^{q_{i}}\left(\boldsymbol{t}_{i, j}-\varphi_{\boldsymbol{w}}\left(\boldsymbol{G}_{i}, n_{i, j}\right)\right)^{2}
e w = i = 1 ∑ p j = 1 ∑ q i ( t i , j − φ w ( G i , n i , j ) ) 2 优化算法基于随机梯度降低的策略,优化步骤按照以下几步进行
按照迭代方程迭代
T
T
T 次获得
x
n
(
t
)
x_{n}(t)
x n ( t ) ,此时接近不动点解:
x
(
T
)
≈
x
\boldsymbol{x}(T) \approx \boldsymbol{x}
x ( T ) ≈ x
计算参数权重的梯度
∂
e
w
(
T
)
/
∂
w
\partial e_{\boldsymbol{w}}(T) / \partial \boldsymbol{w}
∂ e w ( T ) / ∂ w
使用该梯度来更新权重
w
\boldsymbol{w}
w
这里假设函数
F
w
F_{\boldsymbol{w}}
F w 是压缩映射函数,保证最终可以收敛到不动点。另外,这里的梯度的计算使用backpropagation-through-time algorithm 。
为了代表前面的方法是可行的,论文接着证实了两个结论
理论1(可微性):令
F
w
F_{\boldsymbol{w}}
F w 和
G
w
G_{\boldsymbol{w}}
G w 分别是global transition function和global output function,若是
F
w
(
x
,
l
)
F_{\boldsymbol{w}}(\boldsymbol{x}, \boldsymbol{l})
F w ( x , l ) 和
G
w
(
x
,
l
N
)
G_{\boldsymbol{w}}\left(\boldsymbol{x}, \boldsymbol{l}_{\boldsymbol{N}}\right)
G w ( x , l N ) 对于
x
\boldsymbol{x}
x 和
w
\boldsymbol{w}
w 是连续可微的,那么
φ
w
\varphi_{\boldsymbol{w}}
φ w 对
w
\boldsymbol{w}
w 也是连续可微的。
理论2(反向传播):令
F
w
F_{\boldsymbol{w}}
F w 和
G
w
G_{\boldsymbol{w}}
G w 分别是global transition function和global output function,若是
F
w
(
x
,
l
)
F_{\boldsymbol{w}}(\boldsymbol{x}, \boldsymbol{l})
F w ( x , l ) 和
G
w
(
x
,
l
N
)
G_{\boldsymbol{w}}\left(\boldsymbol{x}, \boldsymbol{l}_{\boldsymbol{N}}\right)
G w ( x , l N ) 对于
x
\boldsymbol{x}
x 和
w
\boldsymbol{w}
w 是连续可微的。令
z
(
t
)
\boldsymbol{z}(t)
z ( t ) 定义为
z
(
t
)
=
z
(
t
+
1
)
⋅
∂
F
w
∂
x
(
x
,
l
)
+
∂
e
w
∂
o
⋅
∂
G
w
∂
x
(
x
,
l
N
)
z(t)=z(t+1) \cdot \frac{\partial F_{w}}{\partial x}(x, l)+\frac{\partial e_{w}}{\partial o} \cdot \frac{\partial G_{w}}{\partial x}\left(x, l_{N}\right)
z ( t ) = z ( t + 1 ) ⋅ ∂ x ∂ F w ( x , l ) + ∂ o ∂ e w ⋅ ∂ x ∂ G w ( x , l N ) 那么,序列
z
(
T
)
,
z
(
T
−
1
)
,
…
\boldsymbol{z}(T), \boldsymbol{z}(T-1), \ldots
z ( T ) , z ( T − 1 ) , … 收敛到一个向量,
z
=
lim
t
→
−
∞
z
(
t
)
z=\lim _{t \rightarrow-\infty} z(t)
z = lim t → − ∞ z ( t ) ,而且收敛速度为指数级收敛以及与初值
z
(
T
)
\boldsymbol{z}(T)
z ( T ) 无关,另外,还存在
∂
e
w
∂
w
=
∂
e
w
∂
o
⋅
∂
G
w
∂
w
(
x
,
l
N
)
+
z
⋅
∂
F
w
∂
w
(
x
,
l
)
\frac{\partial e_{w}}{\partial \boldsymbol{w}}=\frac{\partial e_{\boldsymbol{w}}}{\partial \boldsymbol{o}} \cdot \frac{\partial G_{\boldsymbol{w}}}{\partial \boldsymbol{w}}\left(\boldsymbol{x}, \boldsymbol{l}_{N}\right)+\boldsymbol{z} \cdot \frac{\partial F_{\boldsymbol{w}}}{\partial \boldsymbol{w}}(\boldsymbol{x}, \boldsymbol{l})
∂ w ∂ e w = ∂ o ∂ e w ⋅ ∂ w ∂ G w ( x , l N ) + z ⋅ ∂ w ∂ F w ( x , l ) 其中,
x
\boldsymbol{x}
x 是GNN的稳定状态。
算法流程以下 FORWARD 用于迭代计算出收敛点,BACKWARD 用于计算梯度。
Transition和Output函数实现
在GNN中,函数
g
w
g_{\boldsymbol{w}}
g w 不须要知足特定的约束,直接使用多层前馈神经网络,对于函数
f
w
f_{\boldsymbol{w}}
f w ,则须要着重考虑,由于
f
w
f_{\boldsymbol{w}}
f w 须要知足压缩映射的条件,并且与不动点计算相关。下面提出两种神经网络和不一样的策略来知足这些需求
Linear(nonpositional) GNN :
对于节点
n
n
n 状态的计算,将
f
w
f_{\boldsymbol{w}}
f w 改为以下形式
x
n
=
∑
u
∈
ne
∣
n
]
h
w
(
l
n
,
l
(
n
,
u
)
,
x
u
,
l
u
)
,
n
∈
N
\boldsymbol{x}_{n}=\sum_{u \in \text { ne } | n ]} h_{\boldsymbol{w}}\left(\boldsymbol{l}_{n}, \boldsymbol{l}_{(n, u)}, \boldsymbol{x}_{u}, \boldsymbol{l}_{u}\right), \quad n \in \boldsymbol{N}
x n = u ∈ ne ∣ n ] ∑ h w ( l n , l ( n , u ) , x u , l u ) , n ∈ N 至关因而对节点
n
n
n 的每个邻居节点使用
h
w
h_{\boldsymbol{w}}
h w ,并将获得的值求和来做为节点
n
n
n 的状态。
由此,对上式中的函数
h
w
h_{\boldsymbol{w}}
h w 按照以下方式实现
h
w
(
l
n
,
l
(
n
,
a
)
,
x
u
,
l
u
)
=
A
n
,
u
x
u
+
b
n
h_{\boldsymbol{w}}\left(\boldsymbol{l}_{n}, \boldsymbol{l}_{(n, \mathfrak{a})}, \boldsymbol{x}_{u}, \boldsymbol{l}_{u}\right) = \boldsymbol{A}_{n, u} \boldsymbol{x}_{u}+\boldsymbol{b}_{n}
h w ( l n , l ( n , a ) , x u , l u ) = A n , u x u + b n 其中,向量
b
n
∈
R
s
\boldsymbol{b}_{n} \in \mathbb{R}^{s}
b n ∈ R s ,矩阵
A
n
,
u
∈
R
s
×
s
\boldsymbol{A}_{n, u} \in \mathbb{R}^{s \times s}
A n , u ∈ R s × s 定义为两个前向神经网络的输出。更确切地说,令产生矩阵
A
n
,
u
\boldsymbol{A}_{n, u}
A n , u 的网络为transition network ,产生向量
b
n
\boldsymbol{b}_{n}
b n 的网络为forcing network
transition network表示为
ϕ
w
\phi_{\boldsymbol{w}}
ϕ w
ϕ
w
:
R
2
l
N
+
l
E
→
R
s
2
\phi_{\boldsymbol{w}} : \mathbb{R}^{2 l_{N}+l_{E}} \rightarrow \mathbb{R}^{s^{2}}
ϕ w : R 2 l N + l E → R s 2 forcing network表示为
ρ
w
\rho_{\boldsymbol{w}}
ρ w
ρ
w
:
R
l
N
→
R
s
\rho_{\boldsymbol{w}} : \mathbb{R}^{l_{N}} \rightarrow \mathbb{R}^{s}
ρ w : R l N → R s 由此,能够定义
A
n
,
u
\boldsymbol{A}_{n, u}
A n , u 和
b
n
\boldsymbol{b}_{n}
b n
A
n
,
u
=
μ
s
∣
ne
[
u
]
∣
⋅
Ξ
b
w
=
ρ
w
(
l
n
)
\begin{aligned} \boldsymbol{A}_{\boldsymbol{n}, \boldsymbol{u}} &=\frac{\mu}{s|\operatorname{ne}[u]|} \cdot \boldsymbol{\Xi} \\ \boldsymbol{b}_{\boldsymbol{w}} &=\rho_{\boldsymbol{w}}\left(\boldsymbol{l}_{n}\right) \end{aligned}
A n , u b w = s ∣ n e [ u ] ∣ μ ⋅ Ξ = ρ w ( l n ) 其中,
μ
∈
(
0
,
1
)
\mu \in(0,1)
μ ∈ ( 0 , 1 ) ,
Ξ
=
resize
(
ϕ
w
(
l
n
,
l
(
n
,
u
)
,
l
u
)
)
\Xi=\operatorname{resize}\left(\phi_{\boldsymbol{w}}\left(\boldsymbol{l}_{n}, \boldsymbol{l}_{(n, u)}, \boldsymbol{l}_{u}\right)\right)
Ξ = r e s i z e ( ϕ w ( l n , l ( n , u ) , l u ) ) ,
resize
(
⋅
)
\text{resize}(\cdot)
resize ( ⋅ ) 表示将
s
2
s^2
s 2 维的向量整理(reshape)成
s
×
s
s\times{s}
s × s 的矩阵,也就是说,将transition network的输出整理成方形矩阵,而后乘以一个系数就获得
A
n
,
u
\boldsymbol{A}_{n, u}
A n , u 。
b
n
\boldsymbol{b}_{n}
b n 就是forcing network的输出。
在这里,假定
∥
ϕ
w
(
l
n
,
l
(
n
,
u
)
,
l
u
)
∥
1
≤
s
\left\|\phi_{\boldsymbol{w}}\left(\boldsymbol{l}_{n}, \boldsymbol{l}_{(\boldsymbol{n}, \boldsymbol{u})}, \boldsymbol{l}_{u}\right)\right\|_{1} \leq \boldsymbol{s}
∥ ∥ ϕ w ( l n , l ( n , u ) , l u ) ∥ ∥ 1 ≤ s ,这个能够经过设定transition function的激活函数来知足,好比设定激活函数为
t
a
n
h
(
)
tanh()
t a n h ( ) 。在这种状况下,
F
w
(
x
,
l
)
=
A
x
+
b
F_{\boldsymbol{w}}(\boldsymbol{x}, \boldsymbol{l})=\boldsymbol{A} \boldsymbol{x}+\boldsymbol{b}
F w ( x , l ) = A x + b ,
A
\boldsymbol{A}
A 和
b
\boldsymbol{b}
b 分别是
A
n
,
u
\boldsymbol{A}_{n, u}
A n , u 的块矩阵形式和
b
n
\boldsymbol{b}_{n}
b n 的堆叠形式,经过简单的代数运算可得
∥
∂
F
w
∂
x
∥
1
=
∥
A
∥
1
≤
max
u
∈
N
(
∑
n
∈
ne
[
u
]
∥
A
n
,
u
∥
1
)
≤
max
u
∈
N
(
μ
s
∣
ne
[
u
]
∣
⋅
∑
n
∈
n
e
[
u
]
∥
Ξ
∥
1
)
≤
μ
\begin{aligned}\left\|\frac{\partial F_{\boldsymbol{w}}}{\partial \boldsymbol{x}}\right\|_{1} &=\|\boldsymbol{A}\|_{1} \leq \max _{u \in \boldsymbol{N}}\left(\sum_{n \in \operatorname{ne}[u]}\left\|\boldsymbol{A}_{n, u}\right\|_{1}\right) \\ & \leq \max _{u \in N}\left(\frac{\mu}{s|\operatorname{ne}[u]|} \cdot \sum_{n \in \mathrm{ne}[u]}\|\mathbf{\Xi}\|_{1}\right) \leq \mu \end{aligned}
∥ ∥ ∥ ∥ ∂ x ∂ F w ∥ ∥ ∥ ∥ 1 = ∥ A ∥ 1 ≤ u ∈ N max ⎝ ⎛ n ∈ n e [ u ] ∑ ∥ A n , u ∥ 1 ⎠ ⎞ ≤ u ∈ N max ⎝ ⎛ s ∣ n e [ u ] ∣ μ ⋅ n ∈ n e [ u ] ∑ ∥ Ξ ∥ 1 ⎠ ⎞ ≤ μ 该式表示
F
w
F_{\boldsymbol{w}}
F w 对于任意的参数
w
\boldsymbol{w}
w 是一个压缩映射。
矩阵
M
M
M 的1-norm定义为
∥
M
∥
1
=
max
j
∑
i
∣
m
i
,
j
∣
\|M\|_{1}=\max _{j} \sum_{i}\left|m_{i, j}\right|
∥ M ∥ 1 = j max i ∑ ∣ m i , j ∣
Nonelinear(nonpositional) GNN :在这个结构中,
h
w
h_{\boldsymbol{w}}
h w 经过多层前馈网络实现,可是,并非全部的参数
w
\boldsymbol{w}
w 都会被使用,由于一样须要保证
F
w
F_{\boldsymbol{w}}
F w 是一个压缩映射函数,这个能够经过惩罚项来实现
e
w
=
∑
i
=
1
p
∑
j
=
1
q
i
(
t
i
,
j
−
φ
w
(
G
i
,
n
i
,
j
)
)
2
+
β
L
(
∥
∂
F
w
∂
x
∥
)
e_{\boldsymbol{w}}=\sum_{i=1}^{p} \sum_{j=1}^{q_{i}}\left(\boldsymbol{t}_{i, j}-\varphi_{\boldsymbol{w}}\left(\boldsymbol{G}_{i}, n_{i, j}\right)\right)^{2}+\beta L\left(\left\|\frac{\partial F_{\boldsymbol{w}}}{\partial \boldsymbol{x}}\right\|\right)
e w = i = 1 ∑ p j = 1 ∑ q i ( t i , j − φ w ( G i , n i , j ) ) 2 + β L ( ∥ ∥ ∥ ∥ ∂ x ∂ F w ∥ ∥ ∥ ∥ ) 其中,惩罚项
L
(
y
)
L(y)
L ( y ) 在
y
>
μ
y>\mu
y > μ 时为
(
y
−
μ
)
2
(y-\mu)^2
( y − μ ) 2 ,在
y
≤
μ
y\le{\mu}
y ≤ μ 时为0,参数
μ
∈
(
0
,
1
)
\mu\in(0,1)
μ ∈ ( 0 , 1 ) 定义为但愿的
F
w
F_{\boldsymbol{w}}
F w 的压缩系数。
实验结果
论文将GNN模型在三个任务上进行了实验:子图匹配(subgraph matching)任务,诱变(mutagenesis)任务和网页排序(web page ranking)任务。在这些任务上使用linear和nonlinear的模型测试,其中nonlinear模型中的激活函数使用sigmoid函数。
子图匹配任务为在一个大图
G
G
G 上找到给定的子图
S
S
S (标记出属于子图的节点),也就是说,函数
τ
\tau
τ 必须学习到,若是
n
i
,
j
n_{i,j}
n i , j 属于子图
G
G
G ,那么
τ
(
G
i
,
n
i
,
j
)
=
1
\tau(G_i,n_{i,j})=1
τ ( G i , n i , j ) = 1 ,不然,
τ
(
G
i
,
n
i
,
j
)
=
−
1
\tau(G_i,n_{i,j})=-1
τ ( G i , n i , j ) = − 1 。实验结果中,nonlinear模型的效果要好于linear模型的效果,两个模型都要比FNN模型效果更好。
诱变问题任务是对化学分子进行分类,识别出诱变化合物,采用二分类方法。实验结果是nonlinear效果较好,但不是最好。
网页排序任务是学会网页排序。实验代表虽然训练集只包含50个网页,可是仍然没有产生过拟合的现象。
模型实现
在模拟的节点分类任务上实现该论文的GNN模型。
任务要求 为输入一个graph,该graph的全部节点都有标签,而后对部分节点进行训练,在验证阶段使用另一部分节点进行验证。输入的数据图以下图:
其中,该graph总共有18个节点,分别是
{
n
1
,
n
2
,
.
.
.
,
n
18
}
\{n1,n2,...,n18\}
{ n 1 , n 2 , . . . , n 1 8 } ,不一样颜色的节点表示不一样的节点类别。模拟的问题中节点类别有三类,分别用
{
0
,
1
,
2
}
\{0,1,2\}
{ 0 , 1 , 2 } 表示,在训练阶段,使用节点
{
n
1
,
n
2
,
n
3
,
n
7
,
n
8
,
n
9
,
n
13
,
n
14
,
n
15
}
\{n1,n2,n3,n7,n8,n9,n13,n14,n15\}
{ n 1 , n 2 , n 3 , n 7 , n 8 , n 9 , n 1 3 , n 1 4 , n 1 5 } 进行训练,至关于每一类取出三个节点训练,其他的节点用于在验证阶段进行验证。
输入的数据为(node,label)
列表和(node1, node2)
边列表,表示以下
N = [ ( "n{}" . format ( i) , 0 ) for i in range ( 1 , 7 ) ] + \
[ ( "n{}" . format ( i) , 1 ) for i in range ( 7 , 13 ) ] + \
[ ( "n{}" . format ( i) , 2 ) for i in range ( 13 , 19 ) ]
E = [ ( "n1" , "n2" ) , ( "n1" , "n3" ) , ( "n1" , "n5" ) ,
( "n2" , "n4" ) ,
( "n3" , "n6" ) , ( "n3" , "n9" ) ,
( "n4" , "n5" ) , ( "n4" , "n6" ) , ( "n4" , "n8" ) ,
( "n5" , "n14" ) ,
( "n7" , "n8" ) , ( "n7" , "n9" ) , ( "n7" , "n11" ) ,
( "n8" , "n10" ) , ( "n8" , "n11" ) , ( "n8" , "n12" ) ,
( "n9" , "n10" ) , ( "n9" , "n14" ) ,
( "n10" , "n12" ) ,
( "n11" , "n18" ) ,
( "n13" , "n15" ) , ( "n13" , "n16" ) , ( "n13" , "n18" ) ,
( "n14" , "n16" ) , ( "n14" , "n18" ) ,
( "n15" , "n16" ) , ( "n15" , "n18" ) ,
( "n17" , "n18" ) ]
N
N
N 为节点集合,
E
E
E 为边集合。
模型部分使用论文的linear函数来设计
f
w
f_w
f w 和
g
w
g_w
g w ,并且,这两个函数在graph全部的节点上进行共享。模型部分实现了
Ξ
\Xi
Ξ ,
ρ
\rho
ρ 函数,以及完整的forward传播部分,以下简化代码:
class Xi ( nn. Module) :
def __init__ ( self, ln, s) :
. . .
def forward ( self, X) :
. . .
class Rou ( nn. Module) :
def __init__ ( self, ln, s) :
. . .
def forward ( self, X) :
. . .
class Hw ( nn. Module) :
def __init__ ( self, ln, s, mu= 0.9 ) :
. . .
def forward ( self, X, H, dg_list) :
. . .
class AggrSum ( nn. Module) :
def __init__ ( self, node_num) :
. . .
def forward ( self, H, X_node) :
. . .
class OriLinearGNN ( nn. Module) :
def __init__ ( self, node_num, feat_dim, stat_dim, T) :
. . .
def forward ( self, X_Node, X_Neis, dg_list) :
. . .
for t in range ( self. T) :
H = torch. index_select( self. node_states, 0 , X_Node)
H = self. Hw( X, H, dg_list)
self. node_states = self. Aggr( H, X_Node)
. . . 能够看出,在模型训练阶段,每次forward,都会直接循环计算T次
f
w
f_w
f w 函数计算不动点,而后再计算output。
模型训练部分按照常规的分类模型进行训练,采用Adam优化器,学习率保持为0.01,权重衰减为0.01,使用交叉熵做为损失函数,模型训练部分代码以下
def CalAccuracy ( output, label) :
. . .
def train ( node_list, edge_list, label_list, T, ndict_path= "./node_dict.json" ) :
. . .
. . .
. . .
. . .
train_node_list = [ 0 , 1 , 2 , 6 , 7 , 8 , 12 , 13 , 14 ]
train_node_label = [ 0 , 0 , 0 , 1 , 1 , 1 , 2 , 2 , 2 ]
test_node_list = [ 3 , 4 , 5 , 9 , 10 , 11 , 15 , 16 , 17 ]
test_node_label = [ 0 , 0 , 0 , 1 , 1 , 1 , 2 , 2 , 2 ]
model = OriLinearGNN( node_num= len ( node_list) ,
feat_dim= 2 ,
stat_dim= 2 ,
T= T)
optimizer = torch. optim. Adam( model. parameters( ) , lr= 0.01 , weight_decay= 0.01 )
criterion = nn. CrossEntropyLoss( size_average= True )
min_loss = float ( 'inf' )
node_inds_tensor = Variable( torch. Tensor( node_inds) . long ( ) )
node_neis_tensor = Variable( torch. Tensor( node_neis) . long ( ) )
train_label = Variable( torch. Tensor( train_node_label) . long ( ) )
for ep in range ( 500 ) :
res = model( node_inds_tensor, node_neis_tensor, dg_list)
train_res = torch. index_select( res, 0 , torch. Tensor( train_node_list) . long ( ) )
test_res = torch. index_select( res, 0 , torch. Tensor( test_node_list) . long ( ) )
loss = criterion( input = train_res,
target= train_label)
loss_val = loss. item( )
train_acc = CalAccuracy( train_res. cpu( ) . detach( ) . numpy( ) , np. array( train_node_label) )
test_acc = CalAccuracy( test_res. cpu( ) . detach( ) . numpy( ) , np. array( test_node_label) )
optimizer. zero_grad( )
loss. backward( retain_graph= True )
optimizer. step( )
if loss_val < min_loss:
min_loss = loss_val
print ( "==> [Epoch {}] : loss {:.4f}, min_loss {:.4f}, train_acc {:.3f}, test_acc {:.3f}" . format ( ep, loss_val, min_loss, train_acc, test_acc) )
模型的训练和评估结果以下图: 第一条曲线为训练loss曲线,第二条曲线为训练的acc曲线,第三条曲线为评估的acc曲线,能够看出,训练的loss很快达到了最低0.56左右,而准确率达到了1.0,基本已通过拟合,而验证集的准确率一直很低,最高在第500个epoch处上升到0.667,约为
2
3
\frac{2}{3}
3 2 左右。
2. Graph Convolutional Networks
图卷积的演变
按照图傅里叶变换的性质,能够获得以下图卷积的定义
(
f
∗
h
)
G
=
Φ
diag
[
h
^
(
λ
1
)
,
…
,
h
^
(
λ
n
)
]
Φ
T
f
(\boldsymbol{f} * \boldsymbol{h})_{\mathcal{G}}=\boldsymbol{\Phi} \operatorname{diag}\left[\hat{h}\left(\lambda_{1}\right), \ldots, \hat{h}\left(\lambda_{n}\right)\right] \mathbf{\Phi}^{T} \boldsymbol{f}
( f ∗ h ) G = Φ d i a g [ h ^ ( λ 1 ) , … , h ^ ( λ n ) ] Φ T f 其中
对于图$ \boldsymbol{f}
的
傅
里
叶
变
换
为
的傅里叶变换为
的 傅 里 叶 变 换 为 \boldsymbol{\hat{f}}=\mathbf{\Phi}^{T} \boldsymbol{f}$
对于卷积核的图傅里叶变换:
h
^
=
(
h
^
1
,
…
,
h
^
n
)
\hat{h}=\left(\hat{h}_{1}, \ldots, \hat{h}_{n}\right)
h ^ = ( h ^ 1 , … , h ^ n ) ,其中
h
^
k
=
⟨
h
,
ϕ
k
⟩
,
k
=
1
,
2
…
,
n
\hat{h}_{k}=\left\langle h, \phi_{k}\right\rangle, k=1,2 \ldots, n
h ^ k = ⟨ h , ϕ k ⟩ , k = 1 , 2 … , n 按照矩阵形式就是
h
^
=
Φ
T
h
\hat{\boldsymbol{h}}=\mathbf{\Phi}^{T} \boldsymbol{h}
h ^ = Φ T h
对二者的傅里叶变换向量
f
^
∈
R
N
×
1
\hat{f} \in \mathbb{R}^{N \times 1}
f ^ ∈ R N × 1 和
h
^
∈
R
N
×
1
\hat{h} \in \mathbb{R}^{N \times 1}
h ^ ∈ R N × 1 求element-wise乘积,等价于将
h
\boldsymbol{h}
h 组织成对角矩阵 ,即
diag
[
h
^
(
λ
k
)
]
∈
R
N
×
N
\operatorname{diag}\left[\hat{h}\left(\lambda_{k}\right)\right] \in \mathbb{R}^{N \times N}
d i a g [ h ^ ( λ k ) ] ∈ R N × N ,而后再求
diag
[
h
^
(
λ
k
)
]
\operatorname{diag}\left[\hat{h}\left(\lambda_{k}\right)\right]
d i a g [ h ^ ( λ k ) ] 和
f
\boldsymbol{f}
f 矩阵乘法。
求上述结果的傅里叶逆变换,即左乘
Φ
\mathbf{\Phi}
Φ 。
深度学习中的卷积就是要设计trainable的卷积核 ,从上式能够看出,就是要设计
diag
[
h
^
(
λ
1
)
,
…
,
h
^
(
λ
n
)
]
\operatorname{diag}\left[\hat{h}\left(\lambda_{1}\right), \ldots, \hat{h}\left(\lambda_{n}\right)\right]
d i a g [ h ^ ( λ 1 ) , … , h ^ ( λ n ) ] ,由此,能够直接将其变为卷积核
diag
[
θ
1
,
…
,
θ
n
]
\operatorname{diag}\left[\theta_{1}, \ldots, \theta_{n}\right]
d i a g [ θ 1 , … , θ n ] ,而不须要再将卷积核进行傅里叶变换 ,由此,至关于直接将变换后的参量进行学习。
第一代GCN
第一代GCN为
y
output
=
σ
(
Φ
g
θ
Φ
T
x
)
=
σ
(
Φ
diag
[
θ
1
,
…
,
θ
n
]
Φ
T
x
)
\boldsymbol{y}_{\text {output}}=\sigma\left(\mathbf{\Phi} \boldsymbol{g}_{\theta} \mathbf{\Phi}^{T} \boldsymbol{x}\right)=\sigma\left(\boldsymbol{\Phi} \operatorname{diag}\left[\theta_{1}, \ldots, \theta_{n}\right] \mathbf{\Phi}^{T} \boldsymbol{x}\right)
y output = σ ( Φ g θ Φ T x ) = σ ( Φ d i a g [ θ 1 , … , θ n ] Φ T x ) 其中,
x
\boldsymbol{x}
x 就是graph上对应每一个节点的feature构成的向量,
x
=
(
x
1
,
x
2
,
…
,
x
n
)
x=\left(x_{1}, x_{2}, \ldots, x_{n}\right)
x = ( x 1 , x 2 , … , x n ) ,这里暂时对每一个节点都使用标量,而后通过激活以后,获得输出
y
output
\boldsymbol{y}_{\text {output}}
y output ,以后传入下一层。
一些缺点:
须要对拉普拉斯矩阵进行谱分解来求
Φ
\mathbf{\Phi}
Φ ,在graph很大的时候复杂度很高。另外,还须要计算矩阵乘积,复杂度为
O
(
n
2
)
O(n^2)
O ( n 2 ) 。
卷积核参数为
n
n
n ,当graph很大的时候,
n
n
n 会很大。
卷积核的spatial localization很差。
第二代GCN
图傅里叶变换是关于特征值(至关于普通傅里叶变换的频率)的函数,也就是
F
(
λ
1
)
,
…
,
F
(
λ
n
)
F\left(\lambda_{1}\right), \ldots, F\left(\lambda_{n}\right)
F ( λ 1 ) , … , F ( λ n ) ,即
F
(
Λ
)
F(\mathbf{\Lambda})
F ( Λ ) ,所以,将卷积核
g
θ
\boldsymbol{g}_{\theta}
g θ 写成
g
θ
(
Λ
)
\boldsymbol{g}_{\theta}(\Lambda)
g θ ( Λ ) ,而后,将
g
θ
(
Λ
)
\boldsymbol{g}_{\theta}(\Lambda)
g θ ( Λ ) 定义为以下k阶多项式
g
θ
′
(
Λ
)
≈
∑
k
=
0
K
θ
k
′
Λ
k
g_{\theta^{\prime}}(\mathbf{\Lambda}) \approx \sum_{k=0}^{K} \theta_{k}^{\prime} \mathbf{\Lambda}^{k}
g θ ′ ( Λ ) ≈ k = 0 ∑ K θ k ′ Λ k 将卷积公式带入,能够获得
g
θ
′
∗
x
≈
Φ
∑
k
=
0
K
θ
k
′
Λ
k
Φ
T
x
=
∑
k
=
0
K
θ
k
′
(
Φ
Λ
k
Φ
T
)
x
=
∑
k
=
0
K
θ
k
′
(
Φ
Λ
Φ
T
)
k
x
=
∑
k
=
0
K
θ
k
′
L
k
x
\begin{aligned} g_{\theta^{\prime}} * x & \approx \Phi \sum_{k=0}^{K} \theta_{k}^{\prime} \mathbf{\Lambda}^{k} \mathbf{\Phi}^{T} \boldsymbol{x} \\ &=\sum_{k=0}^{K} \theta_{k}^{\prime}\left(\mathbf{\Phi} \mathbf{\Lambda}^{k} \mathbf{\Phi}^{T}\right) x \\ &=\sum_{k=0}^{K} \theta_{k}^{\prime}\left(\mathbf{\Phi} \mathbf{\Lambda} \mathbf{\Phi}^{T}\right)^{k} x \\ &=\sum_{k=0}^{K} \theta_{k}^{\prime} \boldsymbol{L}^{k} x \end{aligned}
g θ ′ ∗ x ≈ Φ k = 0 ∑ K θ k ′ Λ k Φ T x = k = 0 ∑ K θ k ′ ( Φ Λ k Φ T ) x = k = 0 ∑ K θ k ′ ( Φ Λ Φ T ) k x = k = 0 ∑ K θ k ′ L k x 能够看出,这一代的GCN不须要作特征分解了,能够直接对Laplacian矩阵作变换,经过事先将Laplacian矩阵求出来,以及
L
k
\boldsymbol{L}^{k}
L k 求出来,前向传播的时候,就能够直接使用,复杂度为
O
(
K
n
2
)
O(Kn^2)
O ( K n 2 ) 。
对于每一次Laplacian矩阵
L
\boldsymbol{L}
L 和
x
\mathbf{x}
x 相乘,对于节点
n
n
n ,至关于从邻居节点
n
e
[
n
]
ne[n]
n e [ n ] 传递一次信息给节点
n
n
n ,因为连续乘以了
k
k
k 次Laplacian矩阵,那么至关于n节点的k-hop以内的节点可以传递信息给
n
n
n ,所以,实际上只利用了节点的K-Localized信息 。
另外,可使用切比雪夫展开式来近似
L
k
\boldsymbol{L}^{k}
L k ,任何k次多项式均可以使用切比雪夫展开式来近似 ,由此,引入切比雪夫多项式的
K
K
K 阶截断得到
L
k
\boldsymbol{L}^{k}
L k 近似,从而得到对
g
θ
(
Λ
)
g_{\theta}(\mathbf{\Lambda})
g θ ( Λ ) 的近似
g
θ
′
(
Λ
)
≈
∑
k
=
0
K
θ
k
′
T
k
(
Λ
~
)
g_{\theta^{\prime}}(\mathbf{\Lambda}) \approx \sum_{k=0}^{K} \theta_{k}^{\prime} T_{k}(\tilde{\mathbf{\Lambda}})
g θ ′ ( Λ ) ≈ k = 0 ∑ K θ k ′ T k ( Λ ~ ) 其中,
Λ
~
=
2
λ
max
Λ
−
I
n
\tilde{\mathbf{\Lambda}}=\frac{2}{\lambda_{\max }} \mathbf{\Lambda}-\boldsymbol{I}_{n}
Λ ~ = λ max 2 Λ − I n ,
θ
′
∈
R
K
\boldsymbol{\theta}^{\prime} \in \mathbb{R}^{K}
θ ′ ∈ R K 为切比雪夫向量,
θ
k
′
\theta_{k}^{\prime}
θ k ′ 为第
k
k
k 个份量,切比雪夫多项式
T
k
(
x
)
T_{k}(x)
T k ( x ) 使用递归的方式进行定义:
T
k
(
x
)
=
2
x
T
k
−
1
(
x
)
−
T
k
−
2
(
x
)
T_{k}(x)=2 x T_{k-1}(x)-T_{k-2}(x)
T k ( x ) = 2 x T k − 1 ( x ) − T k − 2 ( x ) ,其中,
T
0
(
x
)
=
1
,
T
1
(
x
)
=
x
T_{0}(x)=1, T_{1}(x)=x
T 0 ( x ) = 1 , T 1 ( x ) = x 。
此时,带入到卷积公式
g
θ
′
∗
x
≈
Φ
∑
k
=
0
K
θ
k
′
T
k
(
Λ
~
)
Φ
T
x
≈
∑
k
=
0
K
θ
k
′
(
Φ
T
k
(
Λ
~
)
Φ
T
)
x
=
∑
k
=
0
K
θ
k
′
T
k
(
L
~
)
x
\begin{aligned} \boldsymbol{g}_{\boldsymbol{\theta}^{\prime}} * \boldsymbol{x} & \approx \mathbf{\Phi} \sum_{k=0}^{K} \theta_{k}^{\prime} T_{k}(\tilde{\boldsymbol{\Lambda}}) \mathbf{\Phi}^{T} \boldsymbol{x} \\ &\approx \sum_{k=0}^{K} \theta_{k}^{\prime}\left(\mathbf{\Phi} T_{k}(\tilde{\mathbf{\Lambda}}) \mathbf{\Phi}^{T}\right) x \\ &=\sum_{k=0}^{K} \theta_{k}^{\prime} T_{k}(\tilde{\boldsymbol{L}}) \boldsymbol{x} \end{aligned}
g θ ′ ∗ x ≈ Φ k = 0 ∑ K θ k ′ T k ( Λ ~ ) Φ T x ≈ k = 0 ∑ K θ k ′ ( Φ T k ( Λ ~ ) Φ T ) x = k = 0 ∑ K θ k ′ T k ( L ~ ) x 其中,
L
~
=
2
λ
max
L
−
I
n
\tilde{\boldsymbol{L}}=\frac{2}{\lambda_{\max }} \boldsymbol{L}-\boldsymbol{I}_{n}
L ~ = λ max 2 L − I n 。
所以,能够获得输出为
y
output
=
σ
(
∑
k
=
0
K
θ
k
′
T
k
(
L
~
)
x
)
\boldsymbol{y}_{\text {output}}=\sigma\left(\sum_{k=0}^{K} \theta_{k}^{\prime} T_{k}(\tilde{\boldsymbol{L}}) \boldsymbol{x}\right)
y output = σ ( k = 0 ∑ K θ k ′ T k ( L ~ ) x )
第三代GCN
这一代GCN直接取切比雪夫多项式中
K
=
1
K=1
K = 1 ,此时模型是1阶近似
将
K
=
1
K=1
K = 1 ,
λ
max
=
2
\lambda_{\max }=2
λ max = 2 带入能够获得
g
θ
′
∗
x
≈
θ
0
′
x
+
θ
1
′
(
L
−
I
n
)
x
=
θ
0
′
x
+
θ
1
′
(
L
−
I
n
)
x
=
θ
0
′
x
−
θ
1
′
(
D
−
1
/
2
W
D
−
1
/
2
)
x
\begin{aligned} \boldsymbol{g}_{\boldsymbol{\theta}^{\prime}} * \boldsymbol{x} & \approx \boldsymbol{\theta}_{0}^{\prime} \boldsymbol{x}+\theta_{1}^{\prime}\left(\boldsymbol{L}-\boldsymbol{I}_{n}\right) \boldsymbol{x} \\ &=\boldsymbol{\theta}_{0}^{\prime} \boldsymbol{x}+\theta_{1}^{\prime}\left(\boldsymbol{L}-\boldsymbol{I}_{n}\right) \boldsymbol{x} \\ &=\theta_{0}^{\prime} \boldsymbol{x}-\theta_{1}^{\prime}\left(\boldsymbol{D}^{-1 / 2} \boldsymbol{W} \boldsymbol{D}^{-1 / 2}\right) \boldsymbol{x} \end{aligned}
g θ ′ ∗ x ≈ θ 0 ′ x + θ 1 ′ ( L − I n ) x = θ 0 ′ x + θ 1 ′ ( L − I n ) x = θ 0 ′ x − θ 1 ′ ( D − 1 / 2 W D − 1 / 2 ) x 其中,归一化拉普拉斯矩阵
L
=
D
−
1
/
2
(
D
−
W
)
D
−
1
/
2
=
I
n
−
D
−
1
/
2
W
D
−
1
/
2
\boldsymbol{L}=\boldsymbol{D}^{-1 / 2}(\boldsymbol{D}-\boldsymbol{W}) \boldsymbol{D}^{-1 / 2}=\boldsymbol{I}_{n}-\boldsymbol{D}^{-1 / 2} \boldsymbol{W} \boldsymbol{D}^{-1 / 2}
L = D − 1 / 2 ( D − W ) D − 1 / 2 = I n − D − 1 / 2 W D − 1 / 2 。为了进一步简化,令
θ
0
′
=
−
θ
1
′
\theta_{0}^{\prime}=-\theta_{1}^{\prime}
θ 0 ′ = − θ 1 ′ ,此时只含有一个参数
θ
\theta
θ
g
θ
′
∗
x
=
θ
(
I
n
+
D
−
1
/
2
W
D
−
1
/
2
)
x
g_{\theta^{\prime}} * x=\theta\left(I_{n}+D^{-1 / 2} W D^{-1 / 2}\right) x
g θ ′ ∗ x = θ ( I n + D − 1 / 2 W D − 1 / 2 ) x 因为
I
n
+
D
−
1
/
2
W
D
−
1
/
2
\boldsymbol{I}_{n}+\boldsymbol{D}^{-1 / 2} \boldsymbol{W} \boldsymbol{D}^{-1 / 2}
I n + D − 1 / 2 W D − 1 / 2 的谱半径
[
0
,
2
]
[0,2]
[ 0 , 2 ] 太大,使用归一化的trick
I
n
+
D
−
1
/
2
W
D
−
1
/
2
→
D
~
−
1
/
2
W
~
D
~
−
1
/
2
\boldsymbol{I}_{n}+\boldsymbol{D}^{-1 / 2} \boldsymbol{W} \boldsymbol{D}^{-1 / 2} \rightarrow \tilde{\boldsymbol{D}}^{-1 / 2} \tilde{\boldsymbol{W}} \tilde{\boldsymbol{D}}^{-1 / 2}
I n + D − 1 / 2 W D − 1 / 2 → D ~ − 1 / 2 W ~ D ~ − 1 / 2 其中,
W
~
=
W
+
I
n
\tilde{\boldsymbol{W}}=\boldsymbol{W}+\boldsymbol{I}_{n}
W ~ = W + I n ,
D
~
i
j
=
Σ
j
W
~
i
j
\tilde{D}_{i j}=\Sigma_{j} \tilde{W}_{i j}
D ~ i j = Σ j W ~ i j 。
由此,带入卷积公式
g
θ
′
∗
x
⏟
R
n
×
1
=
θ
(
D
~
−
1
/
2
W
~
D
~
−
1
/
2
⏟
R
n
×
n
)
x
⏟
R
n
×
1
\underbrace{g_{\theta^{\prime}} * x}_{\mathbb{R}^{n \times 1}}=\theta\left(\underbrace{\tilde{D}^{-1 / 2} \tilde{W} \tilde{D}^{-1 / 2}}_{\mathbb{R}^{n \times n}}\right) \underbrace{x}_{\mathbb{R}^{n \times 1}}
R n × 1
g θ ′ ∗ x = θ ( R n × n
D ~ − 1 / 2 W ~ D ~ − 1 / 2 ) R n × 1
x 若是推广到多通道 ,至关于每个节点的信息是向量
x
∈
R
N
×
1
→
X
∈
R
N
×
C
x \in \mathbb{R}^{N \times 1} \rightarrow X \in \mathbb{R}^{N \times C}
x ∈ R N × 1 → X ∈ R N × C 其中,
N
N
N 是节点数量 ,
C
C
C 是通道数,或者称做表示节点的信息维度数 。
X
\mathbf{X}
X 是节点的特征矩阵 。
相应的卷积核参数变化
θ
∈
R
→
Θ
∈
R
C
×
F
\theta \in \mathbb{R} \rightarrow \Theta \in \mathbb{R}^{C \times F}
θ ∈ R → Θ ∈ R C × F 其中,
F
F
F 为卷积核数量。
那么卷积结果写成矩阵形式为
Z
⏟
R
N
×
F
=
D
~
−
1
/
2
W
~
D
~
−
1
/
2
⏟
R
N
×
N
X
⏟
R
N
×
C
Θ
⏟
R
C
×
F
\underbrace{Z}_{\mathbb{R}^{N \times F}}=\underbrace{\tilde{D}^{-1 / 2} \tilde{W} \tilde{D}^{-1 / 2}}_{\mathbb{R}^{N \times N}} \underbrace{X}_{\mathbb{R}^{N \times C}} \underbrace{\mathbf{\Theta}}_{\mathbb{R}^{C \times F}}
R N × F
Z = R N × N
D ~ − 1 / 2 W ~ D ~ − 1 / 2 R N × C
X R C × F
Θ 上述操做能够叠加多层,对上述输出激活一下,就能够做为下一层节点的特征矩阵 。
这一代GCN特色:
取
K
=
1
K=1
K = 1 ,至关于直接取邻域信息,相似于
3
×
3
3\times{3}
3 × 3 的卷积核。
因为卷积核宽度减少,能够经过增长卷积层数来扩大感觉野,从而加强网络的表达能力。
增长了参数约束,好比
λ
max
≈
2
\lambda_{\max } \approx 2
λ max ≈ 2 ,引入归一化操做。
论文模型
论文采用两层的GCN,用来在graph上进行半监督的节点分类任务,邻接矩阵为
A
A
A ,首先计算出
A
^
=
D
~
−
1
2
A
~
D
~
−
1
2
\hat{A}=\tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}}
A ^ = D ~ − 2 1 A ~ D ~ − 2 1 ,由此,前向网络模型形式以下
Z
=
f
(
X
,
A
)
=
softmax
(
A
^
ReLU
(
A
^
X
W
(
0
)
)
W
(
1
)
)
Z=f(X, A)=\operatorname{softmax}\left(\hat{A} \operatorname{ReLU}\left(\hat{A} X W^{(0)}\right) W^{(1)}\right)
Z = f ( X , A ) = s o f t m a x ( A ^ R e L U ( A ^ X W ( 0 ) ) W ( 1 ) ) 其中,
W
(
0
)
∈
R
C
×
H
W^{(0)} \in \mathbb{R}^{C \times H}
W ( 0 ) ∈ R C × H 为输入层到隐藏层的权重矩阵,隐藏层的特征维度为
H
H
H ,
W
(
1
)
∈
R
H
×
F
W^{(1)} \in \mathbb{R}^{H \times F}
W ( 1 ) ∈ R H × F 为隐藏层到输出层的权重矩阵,softmax激活函数定义为
softmax
(
x
i
)
=
1
Z
exp
(
x
i
)
\operatorname{softmax}\left(x_{i}\right)=\frac{1}{\mathcal{Z}} \exp \left(x_{i}\right)
s o f t m a x ( x i ) = Z 1 exp ( x i ) ,
Z
=
∑
i
exp
(
x
i
)
\mathcal{Z}=\sum_{i} \exp \left(x_{i}\right)
Z = ∑ i exp ( x i ) ,至关于对每一列作softmax,由此,获得交叉熵损失函数 为
L
=
−
∑
l
∈
Y
L
∑
f
=
1
F
Y
l
f
ln
Z
l
f
\mathcal{L}=-\sum_{l \in \mathcal{Y}_{L}} \sum_{f=1}^{F} Y_{l f} \ln Z_{l f}
L = − l ∈ Y L ∑ f = 1 ∑ F Y l f ln Z l f 其中,
Y
L
\mathcal{Y}_{L}
Y L 为带有标签的节点集合。
上图中左图为GCN图示,输入为
C
C
C 个通道,输出为
F
F
F 个通道,
Y
1
Y_1
Y 1 和
Y
2
Y_2
Y 2 为节点标签。右图为在一数据集上进行训练获得的隐藏层激活值通过t-SNE降维可视化后的结果,能够看出聚类效果较好。
实验结果
论文在以下几个任务中进行实验
在citation network中进行半监督的document classification。
在从knowledge graph中提取的bipartite graph中进行半监督的entity classification
实验数听说明以下 前三个Dataset是citation network数据集,节点表示文档,边表示引用的链接,label rate表示用来有监督训练的节点数量占总节点数量比例,第四个Dataset是bipartite graph数据集。
结果以下:
能够看出,在比较的几种算法中,论文GCN的在准确率和时间上都最好。
3. DCNN
该模型对每个节点(或边、或图)采用H个hop的矩阵进行表示,每个hop都表示该邻近范围的邻近信息,由此,对于局部信息的获取效果比较好,获得的节点的representation的表示能力很强。
DCNN模型详述
假设有以下定义
一个graph数据集
G
=
{
G
t
∣
t
∈
1
…
T
}
\mathcal{G}=\left\{G_{t} | t \in 1 \ldots T\right\}
G = { G t ∣ t ∈ 1 … T }
graph定义为
G
t
=
(
V
t
,
E
t
)
G_{t}=\left(V_{t}, E_{t}\right)
G t = ( V t , E t ) ,其中,
V
t
V_t
V t 为节点集合,
E
t
E_t
E t 为边集合
全部节点的特征矩阵定义为
X
t
X_t
X t ,大小为
N
t
×
F
N_t\times{F}
N t × F ,其中,
N
t
N_t
N t 为图
G
t
G_t
G t 的节点个数,
F
F
F 为节点特征维度
边信息
E
t
E_t
E t 定义为
N
t
×
N
t
N_t\times{}N_t
N t × N t 的邻接矩阵
A
t
A_t
A t ,由此能够计算出节点度(degree)归一化 的转移几率矩阵
P
t
P_t
P t ,表示从
i
i
i 节点转移到
j
j
j 节点的几率。
对于graph来讲没有任何限制,graph能够是带权重的或不带权重的,有向的或无向的。
模型的目标为预测
Y
Y
Y ,也就是预测每个图的节点标签,或者边的标签,或者每个图的标签,在每一种状况中,模型输入部分带有标签的数据集合,而后预测剩下的数据的标签 。
DCNN模型输入图
G
\mathcal{G}
G ,返回硬分类预测值
Y
Y
Y 或者条件分布几率
P
(
Y
∣
X
)
\mathbb{P}(Y|X)
P ( Y ∣ X ) 。该模型将每个预测的目标对象(节点、边或图)转化为一个diffusion-convolutional representation,大小为
H
×
F
H\times{}F
H × F ,
H
H
H 表示扩散的hops。所以,对于节点分类任务,图
t
t
t 的confusion-convolutional representation为大小为
N
t
×
H
×
F
N_t\times{H}\times{F}
N t × H × F 的张量,表示为
Z
t
Z_t
Z t ,对于图分类任务,张量
Z
t
Z_t
Z t 为大小为
H
×
F
H\times{F}
H × F 的矩阵,对于边分类任务,张量
Z
t
Z_t
Z t 为大小为
M
t
×
H
×
F
M_t\times{H}\times{F}
M t × H × F 的矩阵。示意图以下
对于节点分类任务 ,假设
P
t
∗
P_t^*
P t ∗ 为
P
t
P_t
P t 的power series,大小为
N
t
×
H
×
N
t
N_t\times{H}\times{N_t}
N t × H × N t ,那么对于图
t
t
t 的节点
i
i
i ,第
j
j
j 个hop,第
k
k
k 维特征值
Z
t
i
j
k
Z_{tijk}
Z t i j k 计算公式为
Z
t
i
j
k
=
f
(
W
j
k
c
⋅
∑
l
=
1
N
t
P
t
i
j
l
∗
X
t
l
k
)
Z_{t i j k}=f\left(W_{j k}^{c} \cdot \sum_{l=1}^{N_{t}} P_{t i j l}^{*} X_{t l k}\right)
Z t i j k = f ( W j k c ⋅ l = 1 ∑ N t P t i j l ∗ X t l k ) 使用矩阵表示为
Z
t
=
f
(
W
c
⊙
P
t
∗
X
t
)
Z_{t}=f\left(W^{c} \odot P_{t}^{*} X_{t}\right)
Z t = f ( W c ⊙ P t ∗ X t ) 其中
⊙
\odot
⊙ 表示element-wise multiplication,因为模型只考虑
H
H
H 跳的参数,即参数量为
O
(
H
×
F
)
O(H\times{F})
O ( H × F ) ,使得diffusion-convolutional representation不受输入大小的限制 。
在计算出
Z
Z
Z 以后,过一层全链接获得输出
Y
Y
Y ,使用
Y
^
\hat{Y}
Y ^ 表示硬分类预测结果,使用
P
(
Y
∣
X
)
\mathbb{P}(Y|X)
P ( Y ∣ X ) 表示预测几率,计算方式以下
Y
^
=
arg
max
(
f
(
W
d
⊙
Z
)
)
\hat{Y}=\arg \max \left(f\left(W^{d} \odot Z\right)\right)
Y ^ = arg max ( f ( W d ⊙ Z ) )
P
(
Y
∣
X
)
=
softmax
(
f
(
W
d
⊙
Z
)
)
\mathbb{P}(Y | X)=\operatorname{softmax}\left(f\left(W^{d} \odot Z\right)\right)
P ( Y ∣ X ) = s o f t m a x ( f ( W d ⊙ Z ) )
对于图分类任务 ,直接采用全部节点表示的均值做为graph的representation
Z
t
=
f
(
W
c
⊙
1
N
t
T
P
t
∗
X
t
/
N
t
)
Z_{t}=f\left(W^{c} \odot 1_{N_{t}}^{T} P_{t}^{*} X_{t} / N_{t}\right)
Z t = f ( W c ⊙ 1 N t T P t ∗ X t / N t ) 其中,
1
N
t
1_{N_t}
1 N t 是全为1的
N
t
×
1
N_t\times{1}
N t × 1 的向量。
对于边分类任务 ,经过将每一条边转化为一个节点来进行训练和预测 ,这个节点与原来的边对应的首尾节点相连,转化后的图的邻接矩阵
A
t
′
A_t'
A t ′ 能够直接从原来的邻接矩阵
A
t
A_t
A t 增长一个incidence matrix 获得
A
t
′
=
(
A
t
B
t
T
B
t
0
)
A_{t}^{\prime}=\left(\begin{array}{cc}{A_{t}} & {B_{t}^{T}} \\ {B_{t}} & {0}\end{array}\right)
A t ′ = ( A t B t B t T 0 ) 以后,使用
A
t
′
A_t'
A t ′ 来计算
P
t
′
P_t'
P t ′ ,并用来替换
P
t
P_t
P t 来进行分类。
对于模型训练 ,使用梯度降低法,并采用early-stop方式获得最终模型。
实验结果
节点分类任务的实验数据集使用Cora和Pubmed数据集,包含scientific papers(至关于node)、citations(至关于edge)和subjects(至关于label)。实验评估标准使用分类准确率以及F1值。
节点分类的实验结果 以下
能够看出使用各类评估标准,DCNN效果都是最好的。
图分类任务 的实验结果以下
能够看出,在不一样数据集上,DCNN在图分类任务上并无明显表现出很好的效果。
优缺点
优势 :
缺点 :
内存占用大 :DCNN创建在密集的张量计算上,须要存储大量的张量,须要
O
(
N
t
2
H
)
O(N_t^2H)
O ( N t 2 H ) 的空间复杂度。
长距离信息传播不足 :模型对于局部的信息获取较好,可是远距离的信息传播不足。
4. Tree-LSTM
将序列型的LSTM模型扩展到树型的LSTM模型 ,简称Tree-LSTM,并根据孩子节点是否有序,论文提出了两个模型变体,Child-Sum Tree-LSTM模型和N-ary Tree-LSTM模型 。和序列型的LSTM模型的主要不一样点在于,序列型的LSTM从前一时刻获取隐藏状态
h
t
h_t
h t ,而树型的LSTM从其全部的孩子节点获取隐藏状态。
模型详解
Tree-LSTM模型对于每个孩子节点都会产生一个“遗忘门”
f
j
k
f_{jk}
f j k ,这个使得模型可以从全部的孩子节点选择性地获取信息和结合信息 。
Child-Sum Tree-LSTMs
该模型的更新方程以下
h
~
j
=
∑
k
∈
C
(
j
)
h
k
i
j
=
σ
(
W
(
i
)
x
j
+
U
(
i
)
h
~
j
+
b
(
i
)
)
f
j
k
=
σ
(
W
(
f
)
x
j
+
U
(
f
)
h
k
+
b
(
f
)
)
o
j
=
σ
(
W
(
o
)
x
j
+
U
(
o
)
h
~
j
+
b
(
o
)
)
u
j
=
tanh
(
W
(
u
)
x
j
+
U
(
u
)
h
~
j
+
b
(
u
)
)
c
j
=
i
j
⊙
u
j
+
∑
k
∈
C
(
j
)
f
j
k
⊙
c
k
h
j
=
o
j
⊙
tanh
(
c
j
)
\begin{aligned} \tilde{h}_{j} &=\sum_{k \in C(j)} h_{k} \\ i_{j} &=\sigma\left(W^{(i)} x_{j}+U^{(i)} \tilde{h}_{j}+b^{(i)}\right) \\ f_{j k} &=\sigma\left(W^{(f)} x_{j}+U^{(f)} h_{k}+b^{(f)}\right) \\ o_{j} &=\sigma\left(W^{(o)} x_{j}+U^{(o)} \tilde{h}_{j}+b^{(o)}\right) \\ u_{j} &=\tanh \left(W^{(u)} x_{j}+U^{(u)} \tilde{h}_{j}+b^{(u)}\right) \\ c_{j} &=i_{j} \odot u_{j}+\sum_{k \in C(j)} f_{j k} \odot c_{k} \\ h_{j} &=o_{j} \odot \tanh \left(c_{j}\right) \end{aligned}
h ~ j i j f j k o j u j c j h j = k ∈ C ( j ) ∑ h k = σ ( W ( i ) x j + U ( i ) h ~ j + b ( i ) ) = σ ( W ( f ) x j + U ( f ) h k + b ( f ) ) = σ ( W ( o ) x j + U ( o ) h ~ j + b ( o ) ) = tanh ( W ( u ) x j + U ( u ) h ~ j + b ( u ) ) = i j ⊙ u j + k ∈ C ( j ) ∑ f j k ⊙ c k = o j ⊙ tanh ( c j ) 其中,
C
(
j
)
C(j)
C ( j ) 表示
j
j
j 节点的邻居节点的个数,
h
k
h_k
h k 表示节点
k
k
k 的隐藏状态,
i
j
i_j
i j 表示节点
j
j
j 的”输入门“,
f
j
k
f_{jk}
f j k 表示节点
j
j
j 的邻居节点
k
k
k 的“遗忘门“,
o
j
o_j
o j 表示节点
j
j
j 的”输出门“。
这里的关键点在于第三个公式的
f
j
k
f_{jk}
f j k ,这个模型对节点
j
j
j 的每一个邻居节点
k
k
k 都计算了对应的”遗忘门“向量,而后在第六行中计算
c
j
c_j
c j 时对邻居节点的信息进行”遗忘“和组合。
因为该模型是对全部的孩子节点求和,因此这个模型对于节点顺序不敏感的 ,适合于孩子节点无序的状况。
N-ary Tree-LSTMs
假如一个树的最大分支数为
N
N
N (即孩子节点最多为
N
N
N 个),并且孩子节点是有序的,对于节点
j
j
j ,对于该节点的第
k
k
k 个孩子节点的隐藏状态和记忆单元分别用
h
j
k
h_{jk}
h j k 和
c
j
k
c_{jk}
c j k 表示。模型的方程以下
i
j
=
σ
(
W
(
i
)
x
j
+
∑
ℓ
=
1
N
U
ℓ
(
i
)
h
j
ℓ
+
b
(
i
)
)
f
j
k
=
σ
(
W
(
f
)
x
j
+
∑
ℓ
=
1
N
U
k
ℓ
(
f
)
h
j
ℓ
+
b
(
f
)
)
o
j
=
σ
(
W
(
o
)
x
j
+
∑
ℓ
=
1
N
U
ℓ
(
o
)
h
j
ℓ
+
b
(
o
)
)
u
j
=
tanh
(
W
(
u
)
x
j
+
∑
ℓ
=
1
N
U
ℓ
(
a
)
h
j
ℓ
+
b
(
a
)
)
c
j
=
i
j
⊙
u
j
+
∑
ℓ
=
1
N
f
j
ℓ
⊙
c
j
ℓ
h
j
=
o
j
⊙
tanh
(
c
j
)
\begin{aligned} i_{j} &=\sigma\left(W^{(i)} x_{j}+\sum_{\ell=1}^{N} U_{\ell}^{(i)} h_{j \ell}+b^{(i)}\right) \\ f_{j k} &=\sigma\left(W^{(f)} x_{j}+\sum_{\ell=1}^{N} U_{k \ell}^{(f)} h_{j \ell}+b^{(f)}\right) \\ o_{j} &=\sigma\left(W^{(o)} x_{j}+\sum_{\ell=1}^{N} U_{\ell}^{(o)} h_{j \ell}+b^{(o)}\right) \\ u_{j} &=\tanh \left(W^{(u)} x_{j}+\sum_{\ell=1}^{N} U_{\ell}^{(a)} h_{j \ell}+b^{(a)}\right) \\ c_{j} &=i_{j} \odot u_{j}+\sum_{\ell=1}^{N} f_{j \ell} \odot c_{j \ell} \\ h_{j} &=o_{j} \odot \tanh \left(c_{j}\right) \end{aligned}
i j f j k o j u j c j h j = σ ( W ( i ) x j + ℓ = 1 ∑ N U ℓ ( i ) h j ℓ + b ( i ) ) = σ ( W ( f ) x j + ℓ = 1 ∑ N U k ℓ ( f ) h j ℓ + b ( f ) ) = σ ( W ( o ) x j + ℓ = 1 ∑ N U ℓ ( o ) h j ℓ + b ( o ) ) = tanh ( W ( u ) x j + ℓ = 1 ∑ N U ℓ ( a ) h j ℓ + b ( a ) ) = i j ⊙ u j + ℓ = 1 ∑ N f j ℓ ⊙ c j ℓ = o j ⊙ tanh ( c j ) 值得注意的是该模型为每一个孩子节点都单独地设置了参数
U
l
U_{l}
U l 。
模型训练
分类任务
分类任务定义为在类别集
Y
\mathcal{Y}
Y 中预测出正确的标签
y
^
\hat{y}
y ^ ,对于每个节点
j
j
j ,使用一个softmax分类器来预测节点标签
y
^
j
\hat{y}_j
y ^ j ,分类器取每一个节点的隐藏状态
h
j
h_j
h j 做为输入
p
^
θ
(
y
∣
{
x
}
j
)
=
softmax
(
W
(
s
)
h
j
+
b
(
s
)
)
y
^
j
=
arg
max
y
p
^
θ
(
y
∣
{
x
}
j
)
\begin{aligned} \hat{p}_{\theta}\left(y |\{x\}_{j}\right) &=\operatorname{softmax}\left(W^{(s)} h_{j}+b^{(s)}\right) \\ \hat{y}_{j} &=\arg \max _{y} \hat{p}_{\theta}\left(y |\{x\}_{j}\right) \end{aligned}
p ^ θ ( y ∣ { x } j ) y ^ j = s o f t m a x ( W ( s ) h j + b ( s ) ) = arg y max p ^ θ ( y ∣ { x } j ) 损失函数使用negative log-likelihood
J
(
θ
)
=
−
1
m
∑
k
=
1
m
log
p
^
θ
(
y
(
k
)
∣
{
x
}
(
k
)
)
+
λ
2
∥
θ
∥
2
2
J(\theta)=-\frac{1}{m} \sum_{k=1}^{m} \log \hat{p}_{\theta}\left(y^{(k)} |\{x\}^{(k)}\right)+\frac{\lambda}{2}\|\theta\|_{2}^{2}
J ( θ ) = − m 1 k = 1 ∑ m log p ^ θ ( y ( k ) ∣ { x } ( k ) ) + 2 λ ∥ θ ∥ 2 2 其中,
m
m
m 是带有标签的节点数量,
λ
\lambda
λ 是
L
2
L2
L 2 是正则化超参。
语义相关性任务
该任务给定一个句子对(sentence pair),模型须要预测出一个范围在
[
1
,
K
]
[1,K]
[ 1 , K ] 之间的实数值,这个值越高,表示类似度越高。
论文首先对每个句子产生一个representation,两个句子的表示分别用
h
L
h_L
h L 和
h
R
h_R
h R 表示,获得这两个representation以后,从distance和angle两个方面考虑,使用神经网络来获得
(
h
L
,
h
R
)
(h_L,h_R)
( h L , h R ) 类似度:
h
×
=
h
L
⊙
h
R
h
+
=
∣
h
L
−
h
R
∣
h
s
=
σ
(
W
(
×
)
h
×
+
W
(
+
)
h
+
+
b
(
h
)
)
p
^
θ
=
softmax
(
W
(
p
)
h
s
+
b
(
p
)
)
y
^
=
r
T
p
^
θ
\begin{aligned} h_{ \times} &=h_{L} \odot h_{R} \\ h_{+} &=\left|h_{L}-h_{R}\right| \\ h_{s} &=\sigma\left(W^{( \times)} h_{ \times}+W^{(+)} h_{+}+b^{(h)}\right) \\ \hat{p}_{\theta} &=\operatorname{softmax}\left(W^{(p)} h_{s}+b^{(p)}\right) \\ \hat{y} &=r^{T} \hat{p}_{\theta} \end{aligned}
h × h + h s p ^ θ y ^ = h L ⊙ h R = ∣ h L − h R ∣ = σ ( W ( × ) h × + W