GNN - Transformer 新突破 —— 解锁全局与局部的完美融合!

GNN与Transformer结合论文详解及大模型学习

近年来,图神经网络(GNN)与 Transformer 模型大放异彩。**GNN 以其独特优势在处理复杂数据结构方面表现卓越,而 Transformer 模型则在识别序列间相互依赖性上展现出非凡能力,**二者均取得了突破性的进展。这些优势相互交织,使得 GNN 和 Transformer 的融合成为图表示学习领域极具前景的研究方向。

具体而言,Transformer 的引入为 GNN 带来了诸多益处。它能够有效扩展 GNN 的感受野,使其更全面地捕捉复杂图拓扑信息。这一改进如同为 GNN 装上了更敏锐的 “触角”,增强了信息在图中的传递能力。在推荐系统中,这种结合更是发挥了重要作用,显著提高了推荐的准确性。不仅如此,二者结合还能够简化模型结构,如同去除了复杂机器中的冗余部件,进而降低计算成本,并且大幅提高训练效率,为模型训练节省了宝贵的时间和资源。

本文精心筛选了近两年在顶级学术会议和期刊中发布的 23 种 GNN 与 Transformer 结合创新方案

三篇论文详解

1、CLGT: A Graph Transformer for Student Performance Prediction in Collaborative Learning

方法

该论文提出了一个基于Graph Transformer的框架,称为CLGT,用于预测协作学习环境中学生的表现。

主要方法包括:
  • 交互图构建: 基于学生分组活动构建交互图,其中节点代表学生,边代表学生之间的互动。
  • Graph Transformer框架: 提出了一个扩展的Graph Transformer框架,用于评估和预测学生的表现。
  • 解释模块: 构建了一个解释模块,用于解释预测结果并可视化学生互动模式。
  • 数据处理: 从在线项目平台(如GitLab)收集学生的行为数据,包括源代码提交和审查帖子。
  • 预测模块: 设计了一个预测模块,利用图结构数据预测学生的表现。
  • 解释器模块: 构建了一个基于PGM-Explainer的解释器模块,以解释预测结果。
创新点
  • Graph Transformer在协作学习中的应用: 首次尝试将Graph Transformer应用于软件工程课程中学生互动的建模和表现预测。
  • 交互图的构建和利用: 提出了一种基于学生团队项目活动构建交互图的方法,并利用这些图来分析学生之间的互动如何影响他们的学术表现。
  • 解释模块的集成: 开发了一个解释模块,可以解释预测结果背后的推理机制,提供给教育者更透明的预测结果。
  • 异构图数据的利用: 提出了一种处理异构图数据的方法,能够充分利用图中的丰富空间和时间信息。
  • 模型性能: 实验结果表明,CLGT在预测准确性方面优于现有的基线模型,如Ada Boost、R-GCN、GTN和Graph Trans。
  • 教育者工具: CLGT能够为教育者提供早期预警,帮助他们识别在协作学习中表现不佳的学生,并及时提供适当的帮助。

图片

2、Convolutional Transformer via Graph Embeddings for Few-shot Toxicity and Side Effect Prediction

方法

该论文提出了一个基于图神经网络(GNN)和Transformer的结合模型,称为FS-GNNCvTR,用于低数据量情况下的毒性和副作用预测。

主要方法包括:
  • 图神经网络模块: 使用图同构网络(GIN)来迭代聚合节点嵌入,并计算图嵌入。
  • 卷积Transformer模块: 将图嵌入转换为一系列patches,然后通过卷积嵌入层进行处理,以获取Transformer的输入tokens。
  • 双模块元学习框架: 包括GNN模块和卷积Transformer(CvTR)模块,用于在少量任务(meta-training)上迭代更新模型参数,然后在测试数据(meta-testing)上进行泛化。
  • 模型训练和实现细节: 使用PyTorch实现模型,利用RDKit库计算分子图特征,包括原子类型、原子手性、键类型和键方向。
创新点
  • 结合GNN和Transformer: 提出了一种新颖的方法,通过将GNN和Transformer结合起来,同时捕获分子嵌入的局部空间上下文和全局信息。
  • 卷积Transformer的引入: 通过将图嵌入转换为patches,并使用卷积操作来学习这些patches的表示,从而有效地模拟了局部空间模式。
  • 元学习框架: 提出了一个两模块的元学习框架,可以处理低数据量的学习任务,通过在少量数据上迭代更新模型参数来提高模型的泛化能力。
  • 针对药物发现的少样本学习: 该研究针对药物发现中的关键挑战(如毒性和副作用预测),提出了一种有效的少样本学习方法。
  • 性能提升: 在Tox21和SIDER数据集上的实验结果表明,FS-GNNCvTR模型在少样本毒性和副作用预测任务中,相比于标准基于图的方法,展现出更优越的性能。

在这里插入图片描述

3、DIFFormer: Scalable (Graph) Transformers Induced by Energy Constrained Diffusion

方法

该论文提出了一种名为DIFFORMER的新型神经网络编码器框架,该框架通过能量约束的扩散模型来编码数据集中的实例,并逐步通过它们的交互来纳入其他实例的信息。

主要方法包括:
  • 几何扩散模型: 将数据集实例视为一个整体,并通过信息流的特征来产生实例表示,这些特征通过各向异性扩散过程来表征。
  • 能量约束的扩散过程: 引入了一个原则性的能量函数,用于指导实例表示朝着整体一致性的理想约束发展。
  • 理论分析: 提供了严格的理论分析,揭示了扩散过程的有限差分迭代与相关规则化能量的最小化动态之间的等价性,并给出了成对扩散强度的闭合形式最优估计。
  • 模型实现: 提出了两种实用的DIFFORMER实现,一种简单版本(DIFFORMER-s)具有线性复杂度,适用于实例数量庞大时的计算;另一种高级版本(DIFFORMER-a)可以学习复杂的潜在结构。
  • 元学习框架: 提出了一个双模块的元学习框架,用于跨少量任务迭代更新模型参数。
创新点
  • 能量约束的扩散模型: 提出了一种新的扩散模型,该模型通过优化规则化能量隐式定义扩散动态,为数据表示提供了新的视角。
  • 理论分析: 论文提供了理论支持,证明了扩散过程与能量最小化之间的等价性,并为扩散函数提供了闭合形式的最优解。
  • DIFFORMER框架: 基于理论分析,提出了DIFFORMER框架,这是一种新型的神经网络编码器,能够适应大量实例对之间的复杂交互。
  • 线性复杂度的实现: DIFFORMER-s实现了线性复杂度的计算,解决了传统Transformer在处理大规模数据集时的计算瓶颈。
  • 跨任务泛化能力: 通过元学习框架,DIFFORMER能够在不同的任务上进行有效的参数更新和泛化。
  • 统一视角: DIFFORMER提供了一种统一的视角来理解现有的模型,如MLP、GCN和GAT,这些模型可以看作是DIFFORMER框架的特殊情况。

在这里插入图片描述

如何学习大模型

现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。

作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。

下面这些都是我当初辛苦整理和花钱购买的资料,现在我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。

一、AGI大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。

在这里插入图片描述

二、AI大模型视频教程

在这里插入图片描述

三、AI大模型各大学习书籍

在这里插入图片描述

四、AI大模型各大场景实战案例

在这里插入图片描述

五、结束语

学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。

再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。

因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。

GNN - Transformer融合模型在优化全局信息聚合方面有多种方法: ### 结构设计优化 - **分层融合结构**:采用分层的方式将GNNTransformer结合。在模型的不同层分别发挥GNNTransformer的优势。例如,在较低层使用GNN捕捉局部结构信息,因为GNN擅长处理图结构数据,能有效聚合节点的邻域信息。在较高层使用Transformer,其自注意力机制可以对全局信息进行建模,通过计算节点之间的注意力分数,将不同位置的信息进行加权融合,从而实现全局信息的聚合。 ```python import torch import torch.nn as nn # 示例:简单的分层融合结构 class GNNLayer(nn.Module): def __init__(self, in_features, out_features): super(GNNLayer, self).__init__() self.linear = nn.Linear(in_features, out_features) def forward(self, x, adj): support = torch.mm(x, self.linear.weight) output = torch.spmm(adj, support) return output class TransformerLayer(nn.Module): def __init__(self, d_model, nhead): super(TransformerLayer, self).__init__() self.self_attn = nn.MultiheadAttention(d_model, nhead) self.linear1 = nn.Linear(d_model, d_model) self.linear2 = nn.Linear(d_model, d_model) def forward(self, src): src2 = self.self_attn(src, src, src)[0] src = src + src2 src2 = self.linear2(torch.relu(self.linear1(src))) src = src + src2 return src class GNNTransformer(nn.Module): def __init__(self, in_features, gnn_out_features, d_model, nhead): super(GNNTransformer, self).__init__() self.gnn = GNNLayer(in_features, gnn_out_features) self.transformer = TransformerLayer(d_model, nhead) def forward(self, x, adj): gnn_output = self.gnn(x, adj) transformer_output = self.transformer(gnn_output.unsqueeze(1)).squeeze(1) return transformer_output ``` - **并行融合结构**:让GNNTransformer并行处理输入数据,然后将两者的输出进行融合GNN专注于图的局部结构信息,Transformer关注全局信息。通过并行处理,可以充分利用两者的优势,最后将得到的特征向量进行拼接或加权求等操作,以实现全局信息的聚合。 ### 注意力机制改进 - **图注意力自注意力结合**:在GNN部分使用图注意力机制(GAT),它可以根据节点之间的连接关系为邻域节点分配不同的注意力权重,突出重要的邻域信息。在Transformer部分使用自注意力机制,对所有节点进行全局的信息交互。然后将两种注意力机制的结果进行融合,例如可以将图注意力的输出作为自注意力机制的输入,或者对两者的注意力分数进行加权组合,从而更好地聚合全局信息。 ```python import torch import torch.nn.functional as F class GraphAttentionLayer(nn.Module): def __init__(self, in_features, out_features, dropout, alpha, concat=True): super(GraphAttentionLayer, self).__init__() self.dropout = dropout self.in_features = in_features self.out_features = out_features self.alpha = alpha self.concat = concat self.W = nn.Parameter(torch.empty(size=(in_features, out_features))) nn.init.xavier_uniform_(self.W.data, gain=1.414) self.a = nn.Parameter(torch.empty(size=(2*out_features, 1))) nn.init.xavier_uniform_(self.a.data, gain=1.414) self.leakyrelu = nn.LeakyReLU(self.alpha) def forward(self, h, adj): Wh = torch.mm(h, self.W) # h.shape: (N, in_features), Wh.shape: (N, out_features) e = self._prepare_attentional_mechanism_input(Wh) zero_vec = -9e15*torch.ones_like(e) attention = torch.where(adj > 0, e, zero_vec) attention = F.softmax(attention, dim=1) attention = F.dropout(attention, self.dropout, training=self.training) h_prime = torch.matmul(attention, Wh) if self.concat: return F.elu(h_prime) else: return h_prime def _prepare_attentional_mechanism_input(self, Wh): # Wh.shape (N, out_feature) # self.a.shape (2 * out_feature, 1) # Wh1&2.shape (N, 1) # e.shape (N, N) Wh1 = torch.matmul(Wh, self.a[:self.out_features, :]) Wh2 = torch.matmul(Wh, self.a[self.out_features:, :]) # broadcast add e = Wh1 + Wh2.T return self.leakyrelu(e) ``` - **多尺度注意力**:设计多尺度的注意力机制,在不同尺度上对图数据进行信息聚合。例如,可以设置不同大小的邻域范围,分别计算不同尺度下的注意力分数,然后将这些多尺度的注意力信息进行融合。这样可以捕捉到不同层次的结构信息,从局部全局,提高全局信息聚合的效果。 ### 数据增强正则化 - **图数据增强**:对输入的图数据进行增强操作,如随机删除边、添加边或节点特征扰动等。通过数据增强可以增加数据的多样性,使模型学习到更鲁棒的特征表示,从而在全局信息聚合时能够处理不同的图结构数据分布,提高模型的泛化能力。 - **正则化方法**:使用正则化方法,如L1、L2正则化Dropout。在GNN - Transformer融合模型中,Dropout可以随机丢弃一部分神经元,防止模型过拟合,使模型更加关注全局信息的学习。同时,L1、L2正则化可以约束模型的参数,避免参数过大,提高模型的稳定性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值