Author: Catigeart
GitHub: https://github.com/Catigeart?tab=repositories
GCN 图卷积网络
- 原理:类比傅里叶变换,每个图节点有不同强度的信号,对其进行图傅里叶变换分解,并分析其相邻节点信号平滑度,通过信号的流动实现周边信息的传递。
- 拉普拉斯矩阵 L = D − A L=D-A L=D−A,其中 D D D是一个对角矩阵, D i i D_{ii} Dii表示节点 v i {v_i} vi的度,A是邻接矩阵。 L L L是一个反映图信号平滑度的算子;
- L s y m L_{sym} Lsym:拉普拉斯矩阵的正则化形式
- L ~ s y m = D ~ − 1 2 A ~ D ~ 1 2 \tilde{L}_{sym}=\tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{\frac{1}{2}} L~sym=D~−21A~D~21,称为重归一化的拉普拉斯矩阵
- 图卷积层公式:
X ′ = σ ( L ~ s y m X W ) X'=\sigma(\tilde{L}_{sym}XW) X′=σ(L~symXW) - GCN的优点:
- 对表示学习和任务学习进行端对端的优化
- 学习到结构信息
- GCN的性质:
- 是一种低通滤波器
- GCN的问题:
- 过平滑
GraphSAGE
- 对GCN的改动:
- 通过采样邻居策略将GCN由全图训练方式改造成以节点为中心的小批量训练方式
- 对聚合邻居的操作进行了扩展
- 采样邻居:设定第 k k k阶采样邻居不超过 S k S_k Sk个
- 聚合邻居
- 条件:对数量自适应、具有排列不变性
- 例子:mean,sum,pooling
GAT
- 注意力机制:
A t t e n t i o n ( Q u e r y , S o u r c e ) = ∑ s i m i l a r i t y ( Q u e r y , K e y i ) ⋅ V a l u e i Attention(Query,Source)=\sum similarity(Query,Key_i)\cdot Value_i Attention(Query,Source)=∑similarity(Query,Keyi)⋅Valuei - 图注意力层:
- 将Query设置为当前中心节点的特征向量,将Source设置为所有邻居的特征向量,将Attention Value设置为中心节点经过聚合操作后的新的特征向量。设节点
v
i
v_i
vi的特征向量为
h
i
\boldsymbol{h}_i
hi,相关度函数为
a
a
a,假设中心节点为
v
i
v_i
vi,则邻居节点
v
j
v_j
vj到
v
i
v_i
vi的权重系数为:
e i j = a ( W h i , W h j ) e_{ij}=a(W\boldsymbol{h}_i,W\boldsymbol{h}_j) eij=a(Whi,Whj) - 权重归一化:
α i j = s o f t m a x ( e i j ) \alpha _{ij}=softmax(e_{ij}) αij=softmax(eij) - 图注意力层公式:
h i ′ = σ ( ∑ v j ∈ N ~ ( v i ) α i j W h j ) \boldsymbol{h}_i'=\sigma(\sum_{v_j\in \tilde{N}(v_i)}\alpha _{ij}W\boldsymbol{h}_j) hi′=σ(vj∈N~(vi)∑αijWhj) - 多头图注意力:
h i ′ = ∣ ∣ k = 1 K σ ( ∑ v j ∈ N ~ ( v i ) α i j ( k ) W ( k ) h j ) \boldsymbol{h}_i'=||_{k=1}^K\sigma(\sum_{v_j\in \tilde{N}(v_i)}\alpha _{ij}^{(k)}W^{(k)}\boldsymbol{h}_j) hi′=∣∣k=1Kσ(vj∈N~(vi)∑αij(k)W(k)hj)
- 将Query设置为当前中心节点的特征向量,将Source设置为所有邻居的特征向量,将Attention Value设置为中心节点经过聚合操作后的新的特征向量。设节点
v
i
v_i
vi的特征向量为
h
i
\boldsymbol{h}_i
hi,相关度函数为
a
a
a,假设中心节点为
v
i
v_i
vi,则邻居节点
v
j
v_j
vj到
v
i
v_i
vi的权重系数为:
R-GCN
- 异构图的GCN
GNN的通用框架
- MPNN
- 基本思路:节点的表示向量都是通过消息函数M和更新函数U进行K轮消息传播机制迭代后得到的
m i k + 1 = ∑ v j ∈ N ( v i ) M ( k ) ( h i ( k ) , h j ( k ) , e i j ) \boldsymbol{m}_i^{k+1}=\sum _{v_j\in N(v_i)}M^{(k)}(\boldsymbol{h}_i^{(k)},\boldsymbol{h}_j^{(k)},\boldsymbol{e}_{ij}) mik+1=vj∈N(vi)∑M(k)(hi(k),hj(k),eij)
h i ( k + 1 ) = U i ( k ) ( h i ( k ) , m i ( k + 1 ) ) \boldsymbol{h}_i^{(k+1)}=U_i^{(k)}(\boldsymbol{h}_i^{(k)},\boldsymbol{m}_i^{(k+1)}) hi(k+1)=Ui(k)(hi(k),mi(k+1))
- 基本思路:节点的表示向量都是通过消息函数M和更新函数U进行K轮消息传播机制迭代后得到的
- NLNN
- 对注意力机制的一般化总结,通过non-local操作将任意位置的输出响应计算为所有位置特征的加权和
h i ′ = 1 C ( h ) ∑ ∀ j f ( h i , h j ) g ( h j ) \boldsymbol{h}_i'=\frac{1}{C(\boldsymbol{h})}\sum _{\forall j}f(\boldsymbol{h}_i,\boldsymbol{h}_j)g(\boldsymbol{h}_j) hi′=C(h)1∀j∑f(hi,hj)g(hj) - 其中f是相关度函数,g是输入 h j \boldsymbol{h}_j hj的变换函数, 1 C ( h ) \frac{1}{C(\boldsymbol{h})} C(h)1用于归一化结果
- f的选择:内积、全连接、高斯函数等
- 对注意力机制的一般化总结,通过non-local操作将任意位置的输出响应计算为所有位置特征的加权和
- GN
- 点更新边,边聚合更新点,点聚合与边聚合更新图
参考资料:
《深入浅出图神经网络:GNN原理解析》,刘忠雨