本文做爲第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