Spiking GATs(基于尖峰神经网络的学习图注意)论文学习笔记

这一篇论文是我读研期间,本校(安徽大学)计算机学院的江波老师在2022年5月份发表的一篇论文,由于我自己学习的是图神经网络的方向,而且也是我本校的老师所发的paper,所以在此写下我对此篇论文的笔记,如有不足和错误,请包涵~

- 引言 -

图注意网络已经在图数据学习的任务中得到了广泛的研究和应用。但是各种GAT模型都通常都存在两种限制

1、现有方法普遍采用自注意机制计算所有图边的注意系数,这通常需要昂贵的计算量

2、现有的图注意模型返回所有边的密集注意系数,用于消息聚合,因此通常对图中的噪声边敏感,如错误或不希望的冗余连接。

而稀疏的图注意网络SGAT提出可以通过引入额外的掩码指示来学习稀疏连通图来解决问题2。但是其中稀疏遗传算法的优化往往带来较高的计算负担。

而在峰值神经网络(SNNs)中,可以通过将输入信号数据传输到离散的峰值序列中进行廉价的计算,也可以返回稀疏的输出。作者从中收到启发,提出利用SNN学习图注意,并提出了一种新的图峰值注意网络(GSAT)用于图数据表示和学习。


- 尖峰神经网络(SNNs) -

众所周知,SNNs的关键在于以较低的能量消耗对离散的锋电位序列进行信息传播和转换。

脉冲神经元主要包含三个操作:神经元充电神经元放电神经元复位

X ( t ) X^{(t)} X(t) V ( t − 1 ) V^{(t-1)} V(t1)为步骤t的输入和膜电位, V ( 0 ) = 0 V^{(0)}=0 V(0)=0

1、充电C: V ( t ) = C ( V ( t − 1 ) , X ( t ) ) V^{(t)} = C(V^{(t−1)}, X^{(t)}) V(t)=C(V(t1),X(t))

并且不同的尖峰神经元模型可以具有不同形式的充电函数。

2、放电: S ( t ) = F ( V ( t ) − µ ) S^{(t)} = F(V^{(t)} − µ) S(t)=F(V(t)µ)

其中 S ( t ) S^{(t)} S(t)代表神经元放电后的输出脉冲,µ是放电阈值

F(x)通常叫阶跃函数:

F(x) = 1 , x>=0

F(x) = 0 , otherwise

3、复位: V ( t ) = R ( V ( t ) , µ ) V^{(t)} = R(V^{(t)}, µ) V(t)=R(V(t),µ)

其中 V ( t ) V^{(t)} V(t)是放电后的膜电位,用于下一个迭代步骤。在许多SNN中,可以简单的将复位R定义为 R ( V ( t ) , µ ) = V ( t ) − µ R(V^{(t)}, µ) = V^{(t)}−µ R(V(t),µ)=V(t)µ


图尖峰注意网络

SNNs使用离散脉冲来传播和转换边缘信息,因此需要较低的能量成本,并且还可以返回稀疏输出。因此,作者提出利用基于SNN模型的注意力学习来学习稀疏注意力系数。

总体而言,所提出的GSAT主要由两个模块组成:尖峰注意力计算特征聚合,如Figure 1所示。

Spiking GATs(基于尖峰神经网络的学习图注意)论文学习笔记_第1张图片


- 尖峰注意力计算 -

改写GAT中获取注意系数公式

首先将θ∈[1,2d']拆分成两个维度为[1,d']的向量θ1和θ2,则获取注意力的公式则变成:

α i j = [ h i ∣ ∣ h j ] θ T α_{ij} = [h_{i} || h_{j}]θ^T αij=[hi∣∣hj]θT -> α i j = h i θ 1 T + h j θ 2 T α_{ij} = h_{i}θ_1^T+ h_{j}θ_2^T αij=hiθ1T+hjθ2T

所有节点获取注意系数的过程变成:

S = H Θ S = HΘ S=HΘ

α = S [ : , 1 ] L + ( S [ : , 2 ] L ) T α = S[:, 1]L + (S[:, 2]L)^T α=S[:,1]L+(S[:,2]L)T

这里的S其实是由后面峰值神经元的放电函数得到的,这也是为什么可以利用SNN替换自注意力的地方。

其中H∈[n,d']代表经过线性变换后的节点表示矩阵,Θ = [ θ 1 T ∣ ∣ θ 2 T ] [θ^T_1||θ^T_2 ] [θ1T∣∣θ2T]∈[d',2],得到S∈[n,2]

由于拆分了自身的注意力系数和邻居节点的注意系数,所以利用L = (1,1,1,...,1)∈ [1,n],将自身的注意力系数和邻居节点的注意力系数聚合到一起得到所有节点的注意系数矩阵α,其中 α i j α_{ij} αij表示节点j对节点i的注意系数。

利用尖峰神经网络实现图形注意力计算

该部分包括脉冲编码,神经元充电,神经元放电、神经元复位和注意力评估

1、Spiking encoding脉冲编码

将线性变换后的连续的节点表示H转换成离散的脉冲序列。

P ( t ) = [ p i j ( t ) ] ∈ R n × d ′ P^{(t)} = [p^{(t)}_{ij} ] ∈ R^{n×d'} P(t)=[pij(t)]Rn×d为随机生成的矩阵, $p^{(t)}{ij} ∈ [0, 1] ,采用概率为 ,采用概率为 ,采用概率为p^{(t)}{ij}$的基于概率的泊松编码器将输入数据H传输到离散尖峰序列:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qMBIyxhv-1666965404123)(E:\论文笔记\Learning Graph Attentions via.assets\image-20221028211102987.png)]

2、Neuronal charging神经元充电

经过上述离散锋电位编码后,得到作为峰值神经元输入的峰值序列Z(t)。然后,我们采用尖峰神经元充电操作来实现注意力计算:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YwFby83K-1666965404123)(E:\论文笔记\Learning Graph Attentions via.assets\image-20221028212028580.png)]

其中的Θ也就是GAT中的可训练的参数矩阵,也是在改写获得注意力公式的时候,拆分的那个Θ

3、Neuronal firing神经元放电

使用尖峰神经元放电函数F()来进行离散操作:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6CthLZM3-1666965404123)(E:\论文笔记\Learning Graph Attentions via.assets\image-20221028212054307.png)]

4、Neuronal reset神经元复位

在放电操作之后,作者需要重置脉冲神经元的膜电位。在本文中,作者采用软复位将神经元复位函数R()定义为:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SxU5AoRA-1666965404124)(E:\论文笔记\Learning Graph Attentions via.assets\image-20221028212339845.png)]

5、注意力估计

通过迭代T次之后,可以得到一些列系数的尖峰序列{S(1), S(2) · · · S(T)},利用平均运算来输出最终的尖峰序列后,计算注意系数就利用改写后的公式:

在这里插入图片描述

为了保持关注系数α的稀疏特性,我用对称归一化来将α归一化为:

在这里插入图片描述

整个过程可以通过算法1总结而得:

Spiking GATs(基于尖峰神经网络的学习图注意)论文学习笔记_第2张图片


- 特征聚合 -

根据提出的尖峰注意计算,可以得到稀疏图的注意系数矩阵α,然后根据GAT的聚合方式,进行邻居聚合(后面和GAT一样使用多头注意稳定学习过程):

在这里插入图片描述

同样的,和传统的GAT类似,GSAT也同样可以采用多层神经网络架构学习下游任务的图节点表示,例如半监督学习、聚类等等。


- 总结 -

优点

1、由于SNN将输入数据传输到离散的spike train中,从而在离散的train空间中进行注意力计算,所以GSAT可以执行非常便宜的计算。

2、由于SNN返回稀疏输出,GSAT可以自然生成稀疏注意系数,从而对选择性邻居进行消息聚合,从而实现鲁棒的w.r.t图攻击和噪声。

论文贡献

1、我们提出了一种新的基于SNN的尖峰注意机制,以稀疏且高效地学习图边注意。

2、基于提出的峰值注意机制,我们开发了一种新型高效的图峰值注意网络(GSAT),用于鲁棒的图数据表示和学习。

3、在多个数据集上的实验结果证明了所提出的GSAT模型的有效性、效率和鲁棒性。

你可能感兴趣的:(图神经网络,神经网络,学习,人工智能)