对GCN公式的理解

文章详细解释了GCN(图卷积网络)中隐藏状态的更新过程,涉及归一化邻接矩阵、权重矩阵和激活函数的应用,强调了对节点重要性的考虑,以及为何添加自环和使用度矩阵进行归一化的重要性。
摘要由CSDN通过智能技术生成

GCN隐藏状态的更新公式

H t + 1 = σ ( D ^ − 1 2 A ˜ D ^ − 1 2 H t W t ) H^{t+1}=\sigma(\hat{D}^{-\frac{1}{2}}\~{A}\hat{D}^{-\frac{1}{2}}H^tW^t) Ht+1=σ(D^21A˜D^21HtWt)

  • H t H^t Ht 表示第 t t t 个隐藏状态,其实也就是第 t t t 步得到的节点特征, H t ∈ R N × D H^t \in R^{N \times D} HtRN×D N N N 为顶点个数, D D D 为节点的特征维度
  • D ^ \hat{D} D^ 表示顶点的度矩阵, D ^ ∈ R N × N \hat{D} \in R^{N \times N} D^RN×N,是一个对角矩阵
  • A ˜ \~{A} A˜ 表示添加自环后的邻接矩阵, A ˜ = A + I \~{A}=A+I A˜=A+I
  • W W W 表示第 t t t 步时的权重矩阵,相当于一个线性层
  • σ \sigma σ 表示激活函数

理解

  • GCN更新隐藏状态的公式本质上是一个归一化后的加权聚合过程
  • 假如将图中顶点一视同仁,也就是认为它们重要性相同,那么我们便可以将隐藏状态的更新公式简化为 H t + 1 = σ ( A ˜ H t W t ) H^{t+1}=\sigma(\~{A}H^tW^t) Ht+1=σ(A˜HtWt)
  • 更进一步来说,假如我们只考虑邻居节点之间的聚合,那么公式还可以简化为 H t + 1 = A ˜ H t H^{t+1}=\~{A}H^t Ht+1=A˜Ht
    • 我们可以举一个例子看看,假设现在有一个包含了三个顶点,两条边的有向无环图,它的邻接矩阵 A A A [ 0 1 0 0 0 1 0 0 0 ] \begin{bmatrix} 0 & 1 & 0 \\ 0 & 0 & 1 \\ 0 & 0 & 0 \\ \end{bmatrix} 000100010
      其实这个拓扑图可视化出来就是
      在这里插入图片描述
    • 假设我们要对2号顶点做邻域聚合,那么就应当聚合2号顶点本身和3号顶点的特征,我们套入公式 H i t + 1 = ∑ j A i H j t H^{t+1}_i=\sum_j{A_iH^t_j} Hit+1=jAiHjt,此时会发现,假如说我们不对邻接矩阵添加自环,那么做邻域聚合时便不会包含自身那个顶点的特征,例如在本例中,2号顶点的特征会被排除在外。因此,对节点添加自环是必要的。
    • 上一步只考虑了2号顶点的聚合,如果考虑全部顶点,那么直接使用 H t + 1 = A ˜ H t H^{t+1}=\~{A}H^t Ht+1=A˜Ht即可,没想清楚的话可以自行举一个例子进行计算。
  • 接着回来考虑公式 H t + 1 = σ ( A ˜ H t W t ) H^{t+1}=\sigma(\~{A}H^tW^t) Ht+1=σ(A˜HtWt),前文提到,这是不考虑节点重要性时的隐藏状态更新公式,这个公式在上一个聚合公式 H t + 1 = A ˜ H t H^{t+1}=\~{A}H^t Ht+1=A˜Ht 的基础上添加了一个权重矩阵 W t W^t Wt 和一个激活函数 σ \sigma σ,实际上与感知器中的公式没有什么差异,假如说我们令 X t = A ˜ H t X^t=\~{A}H^t Xt=A˜Ht,那么就有 y t = H t + 1 = σ ( X t W t ) y^t=H^{t+1}=\sigma(X^tW^t) yt=Ht+1=σ(XtWt),这与添加了激活函数的线性回归公式的形式基本一致。
  • 至此,我们已经清楚了不考虑节点之间的差异性时,GCN公式是怎么运作的,但是一个拓扑图中的各个节点重要性当然是不相同的。按照GCN的做法来说,它是认为一个节点的重要性与它的邻居数量成正比的,因此,GCN最终的公式是对添加自环的邻接矩阵 A ˜ \~A A˜ 使用 D ^ − 1 2 A ˜ D ^ − 1 2 \hat{D}^{-\frac{1}{2}}\~{A}\hat{D}^{-\frac{1}{2}} D^21A˜D^21进行了处理。
    • 至于为什么对 A ˜ \~{A} A˜ 左右分别乘上度矩阵即可体现节点重要性,其实明白了一个道理即可,当对一个方阵左乘上一个对角阵时,就相当于对方阵的每一行都进行了扩大,而右乘一个对角阵时,则相当于对方阵的每一列进行了扩大,具体什么意思可以看下面的计算实例。在这里插入图片描述
    • 经过度矩阵加权后的邻接矩阵,它的每个节点对应的每条边都会有一个权值,此时使用这个矩阵替代原来的邻接矩阵进行邻域聚合即可。
  • 21
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值