图神经网络通用框架 —— NLNN非局部神经网络

前言

大家好,我是阿光。

本专栏整理了《图神经网络》,内包含了不同图神经网络的原理以及相关代码实现,详细讲解图神经网络,理论与实践相结合,如GCN、GraphSAGE、GAT等经典图网络,每一个代码实例都附带有完整的代码+数据集。

正在更新中~ ✨

我的项目环境:

  • 平台:Windows10
  • 语言环境:python3.7
  • 编译器:PyCharm
  • PyTorch版本:1.11.0
  • PyG版本:2.1.0

项目专栏:【入门图神经网络】


一、NLNN

在图像任务当中,常用卷积运算CNN来进行提取图像的纹理信息,每个卷积核通过共享参数来处理一张图像的局部特征,如果要提取更大的物体信息,那么就需要通过增大卷积核以及不断堆叠大的卷积核来实现。

对于文本任务,常用循环神经网络RNN来提取语义信息,想要捕捉高层次的语义信息就需要捕捉长时间依赖,也就是要考虑长文本信息。

这二者都是在处理局部淋雨信息,无法捕捉全局以及长程依赖关系,目前提出了NLNN非局部神经网络,能够将非本地操作作为捕获长程依赖关系的通用构建块族。受计算机视觉中经典的非局部均值方法的启发,非局部运算将一个位置处的响应计算为所有位置处特征的加权和。类似于自我注意里模块,处理每个位置的信息是考虑所有能够考虑位置的信息。

二、非局部神经网络层

该文章作者根据非局部平均运算,提出了一般非局部运算定义:
y i = 1 C ( x ) ∑ ∀ j f ( x i , x j ) g ( x j ) y_i=\frac{1}{C(x)}\sum_{\forall j}f(x_i,x_j)g(x_j) yi=C(x)1jf(xi,xj)g(xj)

上面的 C ( x ) C(x) C(x) 代表归一化因子,因为信息聚合求和后会导致数据规模不一致, x i x_i xi x j x_j xj 分别代表当前位置特征信息和其它位置的特征信息, f ( x i , x j ) f(x_i,x_j) f(xi,xj) 是一个函数能够通过两个x计算出对应的相似性分数,这个可以看成自注意力机制模块中的注意力分数,就是不同特征之间的关联程度, g ( x j ) g(x_j) g(xj) 是将 x j x_j xj 进行特征变换。

2.1 f f f 函数

f ( x i , x j ) = e x i T x j f(x_i,x_j)=e^{x_i^Tx_j} f(xi,xj)=exiTxj
该式子是高斯函数,作者提出的f函数实例,就是通过两个特征向量计算出一个标量, x i T x j x_i^Tx_j xiTxj 是通过点积计算相似度,因为点积这个模块很容易实现,同时归一化因子定义为 C ( x ) = ∑ ∀ j f ( x i , x j ) C(x)=\sum_{\forall j}f(x_i,x_j) C(x)=jf(xi,xj)

f ( x i , x j ) = e θ ( x i ) T ϕ ( x j ) f(x_i,x_j)=e^{\theta(x_i)^T\phi(x_j)} f(xi,xj)=eθ(xi)Tϕ(xj)
该式子是嵌入高斯函数,与普通高斯不同的是在计算相似度之前通过一个可学习的W矩阵进行了映射。

2.2 g g g 函数

g ( x j ) = W g x j g(x_j)=W_gx_j g(xj)=Wgxj
对于 g g g 函数就是一个普通的MLP网络块,其中 W g W_g Wg 是一个可学习的参数矩阵,将原始输入特征映射到一个新的特征空间。

三、非局部网络块

作者在上述基础上提出了一个非局部网络块,为了能够将其封装到一个非本地块中,该块可以并入许多现有架构中。

图神经网络通用框架 —— NLNN非局部神经网络_第1张图片

z i = W z y i + x i z_i=W_zy_i+x_i zi=Wzyi+xi

上面的 y i y_i yi 就是 y i = 1 C ( x ) ∑ ∀ j f ( x i , x j ) g ( x j ) y_i=\frac{1}{C(x)}\sum_{\forall j}f(x_i,x_j)g(x_j) yi=C(x)1jf(xi,xj)g(xj),然后使用了 W z W_z Wz 进行特征映射,然后又加了一个 x i x_i xi ,这是一个残差结构,在非局部网络层的基础上加上原始输入,使用残差连接允许非局部网络块可以插入到任何预训练的模型中,而不会破坏模型参数,如果该层残差无效,只需要将 W z W_z Wz 初始化为0即可。

图神经网络通用框架 —— NLNN非局部神经网络_第2张图片

你可能感兴趣的:(图神经网络,神经网络,深度学习,python,人工智能,计算机视觉)