为每个节点赋予一个停止单元,该单元输出一个值控制Propagation是否应该继续进行下一跳。聚合时停止单元的输出值就是聚合每跳的权重。可以理解成为每个节点找到自己的感受野。

首先节点的特征先经过一个MLP变成embedding,这就是Propagation的起点,然后开始递归的Propagation:
z
i
0
=
z
i
z
i
1
=
propagate
(
{
z
j
0
∣
j
∈
N
i
}
)
z
i
2
=
propagate
(
{
z
j
1
∣
j
∈
N
i
}
)
.
.
.
.
.
.
传播的步数应该由每个节点自身决定的,因此给每个节点附加一个线性二分类器作为传播过程的“停止单元”。经过k次迭代传播后的输出:
h
i
k
=
σ
(
Q
z
i
k
+
q
)
h_{i}^{k}=\sigma\left(\mathbf{Q} \mathbf{z}_{i}^{k}+q\right)
hik=σ(Qzik+q)
其中
Q
,
q
Q,q
Q,q 是训练参数,
h
i
k
h_{i}^{k}
hik 是该节点当前迭代应该停止的概率(0~1)。为了确保传播步数合理,有两个技巧:规定一个最大步数
T
T
T;用halting values的加和来定义Propagation的边界:
K
i
=
min
{
k
′
:
∑
k
=
1
k
′
h
i
k
>
=
1
−
ϵ
}
K_{i}=\min \left\{k^{\prime}: \sum_{k=1}^{k^{\prime}} h_{i}^{k}>=1-\epsilon\right\}
Ki=min⎩
⎨
⎧k′:k=1∑k′hik>=1−ϵ⎭
⎬
⎫
其中
ϵ
\epsilon
ϵ 是通常设置为一个很小的值0.01,保证传播一次之后也可以终止。对于节点 i 的第 k 轮迭代,当
k
=
K
i
k=K_{i}
k=Ki 时Propagation停止。
节点 i 每一次迭代的停止概率为:
p
i
k
=
{
R
i
=
1
−
∑
k
=
1
K
i
−
1
h
i
k
,
if
k
=
K
i
or
k
=
T
∑
k
=
1
K
i
h
i
k
,
otherwise.
p_{i}^{k}=
很自然的可以用它来作为节点聚合每层embedding的权重:
z
^
i
=
1
K
i
∑
k
=
1
K
i
p
i
k
z
i
k
+
(
1
−
p
i
k
)
z
i
k
−
1
\widehat{\mathbf{z}}_{i}=\frac{1}{K_{i}} \sum_{k=1}^{K_{i}} p_{i}^{k} \mathbf{z}_{i}^{k}+\left(1-p_{i}^{k}\right) \mathbf{z}_{i}^{k-1}
z
i=Ki1k=1∑Kipikzik+(1−pik)zik−1
还定义了节点 i 的 propagation cost:
S
i
=
K
i
+
R
i
\mathcal{S}_{i}=K_{i}+R_{i}
Si=Ki+Ri
最终loss有监督信号和惩罚正则化项构成:
L
^
=
L
+
α
∑
i
∈
V
S
i
\widehat{\mathcal{L}}=\mathcal{L}+\alpha \sum_{i \in \mathcal{V}} \mathcal{S}_{i}
L
=L+αi∈V∑Si
这个惩罚项控制了信息在图上传播的“难以程度”。每5个step优化一次惩罚项。

AP-GCN学出的停止步数分布。看起来符合直觉:稀疏的图感受野一般更大,稠密的图一般只聚合1~2阶邻居。