Graph Neural Network
首先简要复习图网络GNN部分。
对比一下图网络和一般网络异同。
X
→
W
X
\bm{X} \rightarrow \bm{WX}
X→WX
这是一般的神经网络。而对于图网络来说
(
A
,
X
)
→
W
(
A
,
X
)
(\bm{A},\bm{X}) \rightarrow \bm{W}(\bm{A},\bm{X})
(A,X)→W(A,X)
相比于一般网络而言,其输入部分可以认为是多了一部分图的信息。具体图网络怎么运算的,以后单独开一个blog来介绍,这里不具体展开了。
Graph Matching
Graph Matching是一个非常有用的技术要点。
上图来自Deep Graph Matching Consensus。这里主要看图配对的第一部分,我觉得这一部分比较重要吧,后面的邻居信息做consensus,似乎有一点复杂,后面看懂了再说。第一阶段就是来两个图卷积(共用一个图网络)
H
1
=
ϕ
1
(
X
1
,
A
1
)
H
2
=
ϕ
1
(
X
2
,
A
2
)
\bm{H_1} = \phi_1 (\bm{X}_1,\bm{A}_1)\\ \bm{H_2} = \phi_1 (\bm{X}_2,\bm{A}_2)
H1=ϕ1(X1,A1)H2=ϕ1(X2,A2)
接着原文用内积计算两个节点之间的距离矩阵。当然,用欧式距离,我觉得也可以了。用公式表示即为
C
=
d
(
H
1
,
H
2
)
\bm{C} = d(\bm{H_1},\bm{H_2})
C=d(H1,H2)
最后带入Sinkhorn算法中一通计算,图配对就完成了。
S
i
n
k
h
o
r
n
(
C
)
=
S
∈
R
M
×
N
Sinkhorn(\bm{C}) = \bm{S} \in \mathbb{R}^{M \times N}
Sinkhorn(C)=S∈RM×N
配对阵中的数值介于0和1之间。然后由于部分点之间的配对是有Ground Truth的,则给出损失函数为
L
=
−
E
(
log
(
S
i
,
π
g
t
(
i
)
)
)
L = -\mathbb{E}(\log(\bm{S}_{i,\pi_{gt}(i)}))
L=−E(log(Si,πgt(i)))
当然作者随后提出,利用配对好的
S
\bm{S}
S矩阵可以实现域的变换。
X
2
^
=
S
T
X
1
X
1
^
=
S
X
2
\hat{\bm{X}_2} = \bm{S}^T\bm{X}_1\\ \hat{\bm{X}_1} = \bm{S}\bm{X}_2
X2^=STX1X1^=SX2
接下来原论文话锋一转,不妨设原始域的数据为One-Hot的
I
1
\bm{I}_1
I1,然后用配对矩阵进行变换到目标域去,就是
S
T
I
1
\bm{S}^T\bm{I}_1
STI1,在建立第二阶段的图网络
K
1
=
ϕ
2
(
I
1
,
A
1
)
K
2
=
ϕ
2
(
S
T
I
1
,
A
2
)
\bm{K_1} = \phi_2 (\bm{I}_1,\bm{A}_1)\\ \bm{K_2} = \phi_2 (\bm{S}^T\bm{I}_1,\bm{A}_2)
K1=ϕ2(I1,A1)K2=ϕ2(STI1,A2)
这里鄙人不才,我觉得或许如下计算更合理一些吧
K
1
=
ϕ
1
(
X
1
^
,
A
1
)
K
2
=
ϕ
1
(
X
2
^
,
A
2
)
\bm{K_1} = \phi_1 (\hat{\bm{X}_1} ,\bm{A}_1)\\ \bm{K_2} = \phi_1 (\hat{\bm{X}_2},\bm{A}_2)
K1=ϕ1(X1^,A1)K2=ϕ1(X2^,A2)
然后计算距离矩阵的方法也有所调整
C
=
C
+
d
(
K
1
,
K
2
)
\bm{C} = \bm{C} + d(\bm{K_1},\bm{K_2})
C=C+d(K1,K2)