图神经网络学习笔记(一):graph attention neural network

论文地址

代码实现(tensorflow)

论文里面实现的GAT网络是多注意力机制的,直接理解起来很困难,这里我们就先从单注意力机制的GAT网络说起。

一、单注意力机制

先来看看单注意力下,GAT网络的工作流程(以代码中的demo为例):
图神经网络学习笔记(一):graph attention neural network_第1张图片

上述流程图也可以简化为:
图神经网络学习笔记(一):graph attention neural network_第2张图片

这里将特征提取层、attention layer与hidden layer(output layer)合并为了一个attn head layer,论文中也明确指出GAT仅仅attn head layer组成。
接下来我们将attn head layer视为一层,来介绍其中每个子层的作用:

1、 特征提取层

这里给出几个符号定义:
(1) F1:表示输入attn head layer的特征向量长度
(2) F2:表示attn head layer输出的特征向量长度
(3) nodes:表示图的顶点个数
(4) Feature_in:输入特征向量矩阵,大小为:(nodes,F1)
(5) Feature_out:输出特征向量矩阵,大小为:(nodes,F2)
(6) W1:表示该层的权重矩阵,大小为:(F2,1,F1)。
(7) W1_1:表示W1的第一个卷积核,大小为(1,F1)。
算法流程:

(1)将W1_1从上往下滑动与Feature_in矩阵进行卷积,可以得到一个大小为(nodes,1)的新的特征向量。
(2)其余的卷积核也依次进行该项操作,则可以得到F2个大小为(nodes,1)的向量,将其拼接起来得到Feature_out。

到此为止,特征提取操作结束

2、 Attention layer

同样的,给出几个符号定义,方便快速理解:
(1) A:表示该层的权重,大小为:(1,2 × F2)
(2) A1:A的前半部分,大小为:(1,F2)
(3) A2:A的后半部分,大小为:(1,F2)
(4) Feature_out:特征提取层输出的特征向量,大小:(nodes,F2)

这里给出算法流程:

(1)用A1对Feature_out进行一维卷积操作,得到大小为:(nodes,1)的向量C
(2)用A2对Feature_out进行一维卷积操作,得到大小为:(nodes,1)的向量D
(3)将D进行转置,得到大小为:(1,nodes)的行向量D1
(4)利用TensorFlow的广播机制,将C与D1相加,得到矩阵E,大小:(nodes,nodes)

这里对应论文:
在这里插入图片描述

(5)对E矩阵的每一行做activate操作与softmax操作,得到一个大小为(nodes,nodes)的系数矩阵:Coef

这里对应论文公式:
图神经网络学习笔记(一):graph attention neural network_第3张图片

(6)输出系数矩阵Coef

Attention layer层的工作完成

3、 Hidden layer

Hidden layer接收到从特征提取层传来的特征向量Feature_out(大小:(nodes,F2))和attention layer(大小:(nodes,nodes))的系数矩阵Coef,两者做矩阵乘法运算。
对应论文公式:
图神经网络学习笔记(一):graph attention neural network_第4张图片

4、 Output layer

功能与hidden layer一致

二、多注意力机制

多注意力机制,采用多个单注意力机制对图中的每个顶点进行计算,最后取平均值。
图神经网络学习笔记(一):graph attention neural network_第5张图片
代码推理流程图:
图神经网络学习笔记(一):graph attention neural network_第6张图片

你可能感兴趣的:(图神经网络,神经网咯,tensorflow学习)