第七课.有向图卷积网络

有向图卷积网络简介

有向图卷积网络(Directed Graph Convolutional Network),简称DGCN,源于2020年的论文"Directed Graph Convolutional Network";初次了解会给人一种感觉:这可能就是在GCN上的小修改,但其实背后暗藏重大创新,在2018年出现GCN前,我们就已经知道,Graph分为有向与无向,不管是什么样的图,总能用邻接矩阵表达,也能得到度矩阵,在该论文出现之前,我们其实完全可以认为用GCN就能胜任有向或无向图数据;但经过论文的描述,事实证明作者的想法确实有所道理;

比如现在有一个有向图:
fig1

  • 首先可以看出,边具备方向,另外,边具有粗细,这是带有权重的边;如果简单思考,这应该可以用图注意力网络GAT来做,可以对边施加注意力;
  • 回忆GraphSAGE中的一阶邻居,二阶邻居,现在要补充一个新概念:一阶邻近,二阶邻近;比如节点1和节点3称为一阶邻近,节点1和节点2称为二阶邻近(因为它们共享节点4,5,6);所以论文认为,对于有向图,不应当只考虑邻居,还要考虑邻近;

从邻近研究,有以下图:
fig2
图a为原图,四个图中,以节点1作为主要研究对象,图b中节点4是节点1的一阶邻近,图c.i与图c.ii都是描述二阶邻近,对于图c.i,节点1和节点2是二阶邻近,对于图c.ii,节点1和节点3也是二阶邻近,但不同之处在于节点1和节点2称为二阶入度邻近,节点1和节点3称为二阶出度邻近;

Directed Graph Convolutional Network

针对有向图的一阶邻近表达,论文提出一阶邻近矩阵 A F A_{F} AF
A F ( i , j ) = A s y m ( i , j ) A_{F}(i,j)=A^{sym}(i,j) AF(i,j)=Asym(i,j)
其中, A s y m A^{sym} Asym是邻接矩阵 A A A的对称形式,在有向图中, A s y m ( i , j ) A^{sym}(i,j) Asym(i,j)元素取值规则为:

  • 不存在一条边从节点 v i v_{i} vi到节点 v j v_{j} vj,或者从节点 v j v_{j} vj到节点 v i v_{i} vi,则 A s y m ( i , j ) = 0 A^{sym}(i,j)=0 Asym(i,j)=0
  • 只要存在一条边从节点 v i v_{i} vi到节点 v j v_{j} vj,或者从节点 v j v_{j} vj到节点 v i v_{i} vi,则 A s y m ( i , j ) = 1 A^{sym}(i,j)=1 Asym(i,j)=1

注意:如果图是带权的,邻接矩阵 A A A的元素将不局限与0和1,所以 A s y m A^{sym} Asym的值也不局限于0和1;


针对有向图的二阶邻近表达,论文提出了二阶入度邻近矩阵 A S i n A_{S_{in}} ASin,和二阶出度邻近矩阵 A S o u t A_{S_{out}} ASout
A S i n ( i , j ) = ∑ k A k , i A k , j ∑ v A k , v , A S o u t ( i , j ) = ∑ k A i , k A j , k ∑ v A v , k A_{S_{in}}(i,j)=\sum_{k}\frac{A_{k,i}A_{k,j}}{\sum_{v}A_{k,v}},A_{S_{out}}(i,j)=\sum_{k}\frac{A_{i,k}A_{j,k}}{\sum_{v}A_{v,k}} ASin(i,j)=kvAk,vAk,iAk,j,ASout(i,j)=kvAv,kAi,kAj,k
其中, A m , n A_{m,n} Am,n表示原图邻接矩阵 ( m , n ) (m,n) (m,n)处的元素;

对有向图分别进行三种变换:
Z F = D ~ F − 1 2 A ~ F D ~ F − 1 2 X Θ Z_{F}=\widetilde{D}_{F}^{-\frac{1}{2}}\widetilde{A}_{F}\widetilde{D}_{F}^{-\frac{1}{2}}X\Theta ZF=D F21A FD F21XΘ
Z S i n = D ~ S i n − 1 2 A ~ S i n D ~ S i n − 1 2 X Θ Z_{S_{in}}=\widetilde{D}_{S_{in}}^{-\frac{1}{2}}\widetilde{A}_{S_{in}}\widetilde{D}_{S_{in}}^{-\frac{1}{2}}X\Theta ZSin=D Sin21A SinD Sin21XΘ
Z S o u t = D ~ S o u t − 1 2 A ~ S o u t D ~ S o u t − 1 2 X Θ Z_{S_{out}}=\widetilde{D}_{S_{out}}^{-\frac{1}{2}}\widetilde{A}_{S_{out}}\widetilde{D}_{S_{out}}^{-\frac{1}{2}}X\Theta ZSout=D Sout21A SoutD Sout21XΘ
其中, Θ \Theta Θ为基于参数{ W , b W,b W,b}的线性变换操作(即GCN在没有激活函数下的表达形式),和GCN一样, A ~ x = A x + λ I \widetilde{A}_{x}=A_{x}+\lambda I A x=Ax+λI D ~ x = D x + λ I \widetilde{D}_{x}=D_{x}+\lambda I D x=Dx+λI x ∈ { F , S i n , S o u t } x\in\left\{F,S_{in},S_{out}\right\} x{F,Sin,Sout}

对于邻近矩阵 A x ∈ R n × n A_{x}\in\mathbb{R}^{n\times n} AxRn×n对应的度矩阵 D x D_{x} Dx,其中 x ∈ { F , S i n , S o u t } x\in\left\{F,S_{in},S_{out}\right\} x{F,Sin,Sout},其计算规则为(与GCN中的度矩阵计算规则一样):
D x ( i , i ) = ∑ j n A x ( i , j ) D_{x}(i,i)=\sum_{j}^{n}A_{x}(i,j) Dx(i,i)=jnAx(i,j)


关于度矩阵的计算,不管是有向图,还是无向图,带权还是不带权,标准地,都可以通过邻接矩阵 A ∈ R n × n A\in\mathbb{R}^{n\times n} ARn×n得到度矩阵 D D D
D ( i , i ) = ∑ j n A ( i , j ) D(i,i)=\sum_{j}^{n}A(i,j) D(i,i)=jnA(i,j)


Directed Graph Convolutional Network的架构为:
fig3

综上,有向图卷积层模型 Y ~ = f ( X , A ) \widetilde{Y}=f(X,A) Y =f(X,A)为:
Y ~ = C o n c a t [ R e L U ( D ~ F − 1 2 A ~ F D ~ F − 1 2 X Θ ( 0 ) ) , α R e L U ( D ~ S i n − 1 2 A ~ S i n D ~ S i n − 1 2 X Θ ( 0 ) ) , β R e L U ( D ~ S o u t − 1 2 A ~ S o u t D ~ S o u t − 1 2 X Θ ( 0 ) ) ] \widetilde{Y}=Concat[ReLU(\widetilde{D}_{F}^{-\frac{1}{2}}\widetilde{A}_{F}\widetilde{D}_{F}^{-\frac{1}{2}}X\Theta^{(0)}),\alpha ReLU(\widetilde{D}_{S_{in}}^{-\frac{1}{2}}\widetilde{A}_{S_{in}}\widetilde{D}_{S_{in}}^{-\frac{1}{2}}X\Theta^{(0)}),\beta ReLU(\widetilde{D}_{S_{out}}^{-\frac{1}{2}}\widetilde{A}_{S_{out}}\widetilde{D}_{S_{out}}^{-\frac{1}{2}}X\Theta^{(0)})] Y =Concat[ReLU(D F21A FD F21XΘ(0)),αReLU(D Sin21A SinD Sin21XΘ(0)),βReLU(D Sout21A SoutD Sout21XΘ(0))]
其中, α \alpha α β \beta β是可学习的参数,如果考虑对其进行全连接变换,再用softmax输出类别概率,模型延伸为:
Y ^ = s o f t m a x ( R e L U ( Y ~ Θ ( 1 ) ) ) \widehat{Y}=softmax(ReLU(\widetilde{Y}\Theta^{(1)})) Y =softmax(ReLU(Y Θ(1)))
论文在Cora-ML数据集上对GCN和DGCN的表现进行了可视化:
fig4
可视化的对象是单层图神经网络输出的特征,用非线性的降维方法将高维特征降维至二维,再将已知的节点类别标记成不同的颜色;

DGCN分为只考虑一阶邻近和一阶邻近二阶邻近都考虑的情况,从可视化结果中看,DGCN确实具备更强的特征变换能力,得到比GCN更简单的分布,从而有利于样本分类;

Discuss GNN

现在的GNN处于萌芽阶段,有很多方向等待人类探究,如果稍微观察,容易发现目前GNN的做法总是基于信息传递,信息聚合,信息更新三个步骤,也许研究如何让信息传递,聚合,更新变得更加合理和高效对于GNN是目前较为重要的工作;

GNN相比曾经热火多年的CNN,GNN的发展速度远没有CNN的发展迅猛,CNN从萌芽到爆发式增长也就经历了两三年时间,也许我们也应该考虑改变GNN的模式,从而获得CNN一样的迅速发展;

在大多数论文中,GNN总是在借鉴CNN的思想,而CNN专注于图像领域,GNN应该注重到其他更高级的领域,我们是否应该考虑打破借鉴的规则,让GNN具有专属于它的灵魂:

fig5

  • 9
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
好的,我可以为您解答关于图卷积网络节点状态更新的例题。 假设我们有一个简单的无向图,其中有三个节点A、B、C,他们的连接关系如下: ``` A----B \ / \/ C ``` 其中,A和B直接相连,A和C直接相连,B和C直接相连。我们现在想要使用图卷积网络来对这个图进行节点状态的更新。为了简化问题,我们假设每个节点的状态都是一个1维向量,节点A的状态为[1, 2, 3],节点B的状态为[4, 5, 6],节点C的状态为[7, 8, 9]。 首先,我们需要定义一个图卷积层,其输入是一个邻接矩阵和一个节点特征矩阵,输出是一个更新后的节点特征矩阵。假设我们使用的是GCN卷积层,其更新公式为: $$ H^{(l+1)} = \sigma(\tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}}H^{(l)}W^{(l)}) $$ 其中,$H^{(l)}$是第$l$层的节点特征矩阵,$\tilde{A}=A+I$是邻接矩阵加上自环的结果,$\tilde{D}$是$\tilde{A}$的度矩阵,$W^{(l)}$是第$l$层的权重矩阵,$\sigma$是激活函数。 现在,我们将该公式应用于我们的例子中。假设我们使用的是一个2层的GCN卷积层,权重矩阵的形状为(3, 4),激活函数为ReLU。则第一层的输出为: $$ H^{(1)} = \sigma(\tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}}H^{(0)}W^{(0)}) $$ 其中,$H^{(0)}$为输入的节点特征矩阵,即: $$ H^{(0)} = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{bmatrix} $$ $\tilde{A}$为: $$ \tilde{A} = \begin{bmatrix} 1 & 1 & 1 \\ 1 & 1 & 1 \\ 1 & 1 & 1 \end{bmatrix} + \begin{bmatrix} 1 & 0 & 1 \\ 0 & 1 & 1 \\ 1 & 1 & 1 \end{bmatrix} = \begin{bmatrix} 2 & 1 & 2 \\ 1 & 2 & 2 \\ 2 & 2 & 3 \end{bmatrix} $$ $\tilde{D}$为: $$ \tilde{D} = \begin{bmatrix} 2 & 0 & 0 \\ 0 & 2 & 0 \\ 0 & 0 & 3 \end{bmatrix} $$ $W^{(0)}$为: $$ W^{(0)} = \begin{bmatrix} w_{11} & w_{12} & w_{13} & w_{14} \\ w_{21} & w_{22} & w_{23} & w_{24} \\ w_{31} & w_{32} & w_{33} & w_{34} \end{bmatrix} $$ 我们假设$W^{(0)}$的值为: $$ W^{(0)} = \begin{bmatrix} 0.1 & 0.2 & 0.3 & 0.4 \\ 0.5 & 0.6 & 0.7 & 0.8 \\ 0.9 & 0.1 & 0.2 & 0.3 \end{bmatrix} $$ 则第一层的输出为: $$ H^{(1)} = \sigma(\tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}}H^{(0)}W^{(0)}) = \sigma\left(\begin{bmatrix} \frac{1}{\sqrt{2}} & 0 & 0 \\ 0 & \frac{1}{\sqrt{2}} & 0 \\ 0 & 0 & \frac{1}{\sqrt{3}} \end{bmatrix} \begin{bmatrix} 2 & 1 & 2 \\ 1 & 2 & 2 \\ 2 & 2 & 3 \end{bmatrix} \begin{bmatrix} \frac{1}{\sqrt{2}} & 0 & 0 \\ 0 & \frac{1}{\sqrt{2}} & 0 \\ 0 & 0 & \frac{1}{\sqrt{3}} \end{bmatrix} \begin{bmatrix} 0.1 & 0.2 & 0.3 & 0.4 \\ 0.5 & 0.6 & 0.7 & 0.8 \\ 0.9 & 0.1 & 0.2 & 0.3 \end{bmatrix}\right) $$ 计算后的结果为: $$ H^{(1)} = \begin{bmatrix} 0.6958 & 0.4221 & 0.6769 & 0.9315 \\ 1.7799 & 1.0909 & 1.7599 & 2.4268 \\ 2.8018 & 1.7193 & 2.7572 & 3.7963 \end{bmatrix} $$ 这就是第一层的输出。我们可以将其作为第二层的输入,再次进行卷积操作,得到最终的输出。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值