初探图卷积神经网络(GCNN) part1

写在前面

1.GCNN通过隐层 hidden layer 来传递信息;
2.GCNN累积前层网络的信息并且产生图中节点的有用的特征表达 feature representation of node;

GCNN (Graph Convolutional Neural Network)是操作在图结构数据上的深层神经网络,其输入input为:

  • N ∗ F 0 N*F^0 NF0的输入特征矩阵 X X X, N N N是节点个数, F 0 F^0 F0是每一个节点的输入特征的数量;
  • 可以用 N ∗ N N*N NN邻接矩阵Adjacent matrix A A A 来表达图结构;
    GCNN的hidden layer可以被表示为: H i = f ( ( H i − 1 , A ) ) H^i=f((H^{i-1}, A)) Hi=f((Hi1,A)), 其中 H 0 = X H^0=X H0=X f f f是非线性激活函数ReLUreference,每一个隐层 H i H^i Hi N ∗ F i N * F^i NFi的特征矩阵,每一行是一个节点的特征表达。下一层的特征由累积的前层特征经过 f f f函数映射得到。这样随着网络层数以及网络相关性的增加,特征会变得越来越抽象(高维特征)。一般不同的GCN体现在传播规则 f f f的不同上。

简单Propagation Rule的一个例子

一个最简单的例子就是采用非线性激活函数ReLU :
f ( H i , A ) = σ ( A H i W i ) f(H^i, A)=\sigma (AH^iW^i) f(Hi,A)=σ(AHiWi)
其中 W i W^i Wi为第 i i i层的权重矩阵, σ \sigma σ是非线性激活函数ReLU,权重矩阵的维度为 F i ∗ F i + 1 F^i * F^{i+1} FiFi+1,可知第二维 F i + 1 F^{i+1} Fi+1决定了下一层网络的特征的数量,而 H i H^i Hi维度为 N ∗ F i N*F^i NFi的矩阵,A为 N ∗ N N*N NN的邻接矩阵,因此相当于对 N ∗ F i + 1 N*F^{i+1} NFi+1维的特征进行 σ \sigma σ非激活函数映射。此处和卷积神经网络中卷积操作非常相似,feference,因为在图结构数据的节点中权重是共享的。

图结构的一个简单例子:

如下有向图图:

Fig.1 有向图示意

上图可由numpy矩阵表示为:

import numpy as np
A=np.matrix([[0,1,0,0],
             [0,0,1,1],
             [0,1,0,0],
             [1,0,1,0]], dtype=float)

在式 f ( H i , A ) = σ ( A H i W i ) f(H^i, A)=\sigma(AH^iW^i) f(Hi,A)=σ(AHiWi)中定义输入特征 H i H^i Hi,维度为 N ∗ F i + 1 N*F^{i+1} NFi+1,令 F i + 1 F^{i+1} Fi+1为2,则可表示为:

import numpy as np
H = np.matrix([[i, -i] for i in range(A.shape[0])], dtype=float)
matrix([[ 0.,  0.],
        [ 1., -1.],
        [ 2., -2.],
        [ 3., -3.]])

现在让 W i W^i Wi为单位矩阵,令 f ( H i , A ) = σ ( A H i W i ) = A H i f(H^i, A)= \sigma(AH^iW^i)=AH^i f(Hi,A)=σ(AHiWi)=AHi,可发现,矩阵乘操作后的结果为节点临边的节点信息的和,则:

H_=A*H 
H_
matrix([[ 1., -1.],
        [ 5., -5.],
        [ 1., -1.],
        [ 2., -2.]])

可以发现,上图不存在自己指向自己的边,我们可以通过向 A A A矩阵添加一个对应的单位矩阵 A E A_E AE来实现,相当于添加了将自己作为临边的节点信息:

A_E = np.matrix(np.eye(A.shape[0]))
A_E
matrix([[ 1.,  0.,  0.,  0.],
        [ 0.,  1.,  0.,  0.],
        [ 0.,  0.,  1.,  0.],
        [ 0.,  0.,  0.,  1.]])
A_=A+A_E
A_
matrix([[ 1.,  1.,  0.,  0.],
        [ 0.,  1.,  1.,  1.],
        [ 0.,  1.,  1.,  0.],
        [ 1.,  0.,  1.,  1.]])

规则化特征表达 Normalization

f ( X , A ) = D − 1 A X f(X,A)=D^{-1}AX f(X,A)=D1AX ,其中 D − 1 D^{-1} D1为矩阵A行向量量级构成的对角阵的逆 the inverse degree matrix of D, 如下所示:

D=np.array(np.sum(A, axis=0))[0] #np.sum(A, axis=0).shape =(1, 4), a 2 dimention matrixs
D = np.matrix(np.diag(D)) #make the degree matrix of A
A = D**-1 * A
A
matrix([[ 0. ,  1. ,  0. ,  0. ],
        [ 0. ,  0. ,  0.5,  0.5],
        [ 0. ,  0.5,  0. ,  0. ],
        [ 1. ,  0. ,  1. ,  0. ]])
A_=A*H
A_
matrix([[ 1. , -1. ],
        [ 2.5, -2.5],
        [ 0.5, -0.5],
        [ 2. , -2. ]])

Other

另外,可以在上式A_进行非线性激活函数ReLU操作之前乘上权重层 W i W^i Wi,其维度为 F i + 1 ∗ F i + 1 F^{i+1}*F^{i+1} Fi+1Fi+1
👋博客搬家

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值