【论文笔记】GCN

Semi-Supervised Classification with Graph Convolutional Networks

2017 ICLR
论文链接:https://arxiv.org/pdf/1609.02907
代码:

开幕雷击!这篇论文一上来就是各种公式推导!如果没有足够的数学知识看这篇论文比较困难。。
这里只用最简单的方式讲一个问题:什么是图卷积

一些基本概念:每个图都有邻接矩阵A度矩阵D是一个对角矩阵, D i i = ∑ j A i j D_{ii}=\sum_jA_{ij} Dii=jAij表示顶点i的度,(定义)规范化的对称邻接矩阵 A ~ = D − 1 2 A D − 1 2 \widetilde A=D^{-\frac{1}{2}}AD^{-\frac{1}{2}} A =D21AD21(对角矩阵的-1/2次方就是每个元素变为-1/2次方)

所谓图卷积,就是 H = ρ ( A ~ X W ) H=\rho (\widetilde AXW) H=ρ(A XW),其中 X ∈ R n × m X \in R^{n \times m} XRn×m 是输入的特征矩阵, W ∈ R m × k W \in R^{m \times k} WRm×k是一个线性变换,ρ是激活函数, H ∈ R n × k H \in R^{n \times k} HRn×k是输出的顶点特征
将多个图卷积层连接起来就是 H ( i + 1 ) = ρ ( A ~ H ( i ) W ) , H ( 0 ) = X H^{(i+1)}=\rho (\widetilde AH^{(i)}W),H^{(0)}=X H(i+1)=ρ(A H(i)W),H(0)=X
仅此而已

参考DGL的图卷积实现dgl.nn.pytorch.conv.graphconv.GraphConv.forward(),就是一次特征转换(矩阵相乘)+一次消息传递
消息传递的方式也很简单,消息函数就是直接复制起点的特征,归约函数就是求和,因此整个消息传递规则就是使用邻居特征的和来更新顶点特征
消息传度
因此公式中的乘以邻接矩阵⇔消息传递⇔使用邻居特征求和来更新顶点特征

考虑一个简单的图
示例图
从矩阵相乘的角度:邻接矩阵 A = ( 0 0 0 1 0 0 1 1 0 ) A=\left( \begin{matrix} 0&0&0 \\ 1&0&0 \\ 1&1&0 \end{matrix} \right) A=011001000,特征矩阵 X = ( x 1 x 2 x 3 ) X=\left( \begin{matrix} x_1\\ x_2 \\ x_3 \end{matrix} \right) X=x1x2x3,则 A X = ( 0 x 1 x 1 + x 2 ) AX=\left( \begin{matrix} 0 \\ x_1 \\ x_1+x_2 \end{matrix} \right) AX=0x1x1+x2
从消息传递的角度:每个顶点的特征变为其邻居特征的和
可以非常直观地理解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值