Metapath-fused heterogeneous graph network for molecular property prediction

Metapath-fused heterogeneous graph network for molecular property prediction

基本信息

博客贡献人

小钻风

作者

Ying Ji , Guojia Wan , Yibing Zhan , Bo Du

摘要

    分子性质预测可以指导药物开发中的分子设计和优化。由于分子本质上是图结构的数据,图学习极大地促进了分子性质预测任务。然而,许多现有的基于图的方法都是针对同构图中的低阶节点交互而设计的,忽略了不同类型的原子节点或边本文将分子建模为异质图,并利用元路径来捕获化学官能团的潜在特征。为了保持元路径所展示的化学环境,本文构造了基于元路径的连通性,并根据关系类型将异构图分解成子图。此外,本文设计了一种层次化的注意策略,在节点级和关系级水平上聚集异质信息。因此,本文方法更加自然,更适合于学习原子节点之间复杂的相互作用和有效的分子指纹表示。本文在公共分子数据集上对模型进行了评估,实验结果表明模型是有效的,与现有的方法相比具有相当的性能。

问题定义

定义1. 异构图G=(V,E)\mathcal{G}=(V,E)G=(V,E)包含一个节点类型映射函数ϕ:V→V\phi:V\rightarrow\mathcal{V}ϕ:VV(代表节点类型集),一个关系类型映射函数φ:E→R\varphi :E\rightarrow\mathcal{R}φ:ER(代表边类型集)。
定义2. 给定一个异构图,一个元路径p∈Mp \in \mathcal{M}pM被定义为这种顺序形式的路径模式:v1→φ(e1,2)v2→φ(e2,3)...→φ(en,n+1)vn+1v_1\stackrel{\varphi(e_{1,2})}\rightarrow v_2 \stackrel{\varphi(e_{2,3})}\rightarrow...\stackrel{\varphi(e_{n,n+1})}\rightarrow v_{n+1}v1φ(e1,2)v2φ(e2,3)...φ(en,n+1)vn+1,揭示了沿路径的对象之间的组合关系,φ(ei,j){\varphi(e_{i,j})}φ(ei,j)表示边的关系类型。

方法

方法架构图

请添加图片描述

方法描述

    第一步基于预定义的元路径模板语料库构建元路径连接;第二步根据关系类型将异构图转换为不同的同构子图。作者在每个子图上利用邻居注意力机制学习中心节点的邻居节点的注意力系数。需要注意的是,不管分子中节点类型是否相同,它们都具有相同数量的原子属性,所以它们的初始向量维度相等。接着,节点嵌入通过聚合邻居节点的信息被更新。第三步在所有子图上应用关系注意力机制学习所有类型的权重系数。然后根据关系注意力系数对隐藏嵌入进行加权求和以更新节点表示。接着,作者将节点潜在表示馈送到一个GRU层以递归地增强学习。最后,节点表示被分类或回归解码器池化为用于预测的的图级向量。

构建元路径连接

    化学官能团是形成一个有机分子的基本单元,通常决定着分子的性质。作者通过构建基于元路径的连接利用这些化学结构。为了定义元路径,作者在分子数据集QM9和ZINC中使用广度优先搜索(BFS)算法收集原始元路径。如表1所示,可以从由有限的官能团组成的分子中获得有意义和不同的元路径。

表1 元路径获取

请添加图片描述

    实验中发现,分子数量的增加并没有导致元路径的显著增加,如图2所示。这意味着元路径数量不会爆炸,选择过程不需要太多成本。
请添加图片描述

图2 元路径数量与数据量大小关系

    选出的元路径语料库如表2所示。

表2 元路径语料库

请添加图片描述

    然后,作者对所有图中每个预定义元路径模板都执行如算法1提出的图遍历算法,以获得所有的元路径实例。
请添加图片描述

    每个实例都是由图的节点和关系组成的序列,该序列与对应的元路径模板匹配。对于某个元路径模板p∈Mp\in\mathcal{M}pM,可能在一个图中存在多个与之对应的实例。为了使同一元路径实例中的节点紧密关联,作者通过连接每个实例中的源节点和目标节点来构造元路径连通边。如图1所示,基于元路径的边(虚线边)ppp被视为连接邻居节点viv_ivivjv_jvj的子图级的附加边。
    通过构建基于元路径的连接,元路径实例上的节点之间的关联得到了丰富和加强。官能团所包含的原子可以相互传递信息,即使它们在原始图中相距很远。此外,通过将元路径连接作为额外的关系类型,可以在消息传递过程中考虑复合路径结构。

层次化注意力

邻居注意力机制
    相邻节点通常会对其中心节点产生不同的影响。在这里,作者使用一种自我注意力策略来学习相邻节点的不同权重。根据化学知识,官能团通常决定分子的性质。在一个官能团中,有不同原子类型的节点,这些节点对官能团的性质具有不同的重要性。因此,邻居注意力机制关注的目标是在每个官能团子图中的特征传递和聚合。
    首先,作者根据关系类型将整个图分解成不同的关系子图。每个关系子图只包含一种关系类型。然后,作者在每个子图上利用一个独立的自注意力图卷积更新节点原子级的嵌入。自注意力运算学习邻居节点对中心节点的影响权重。将学习到的权重与节点特征向量合并(例如乘法),以产生邻域消息。具体地说,给定由化学键或元路径r∈Rbond⋃RMr\in \mathcal{R}_{bond}\bigcup\mathcal{R}_{\mathcal{M}}rRbondRM连接的原子对(vi,vj)(v_i,v_j)

### Features-Fused-Pyramid-Neck 的设计与性能优化分析 Features-Fused-Pyramid-Neck 是一种用于目标检测的特征融合架构,其核心目标是通过改进特征金字塔的设计,解决多尺度目标检测中的特征错位问题。该架构通过重新思考特征融合的方式,提升了检测的精度和效率[^1]。 #### 特征金字塔的设计目标 在目标检测任务中,多尺度目标的检测一直是技术难点之一。传统特征金字塔(如FPN)通过自上而下和横向连接的方式,将高层语义信息和低层空间信息进行融合,以增强多尺度目标的特征表示。然而,这种方法存在特征错位的问题,即不同层级的特征在空间上难以完全对齐,导致融合效果受限。Features-Fused-Pyramid-Neck 通过改进特征融合的设计,优化了这一问题[^1]。 #### 特征融合架构的改进 Features-Fused-Pyramid-Neck 的改进主要体现在以下几个方面: 1. **特征对齐机制**:引入了更精细的特征对齐技术,确保不同层级的特征在空间维度上能够精确对齐。这种对齐机制有效减少了特征错位带来的信息损失,从而提升了多尺度目标的检测精度[^1]。 2. **动态特征融合**:通过动态调整特征融合的权重,根据输入图像的内容自适应地选择最优的特征组合。这种方法不仅提高了模型的灵活性,还增强了其对不同场景的适应能力。 3. **轻量化设计**:为了提升实时性,Features-Fused-Pyramid-Neck 在保证性能的前提下,对网络结构进行了轻量化设计。例如,通过使用深度可分离卷积(Depthwise Separable Convolution)等技术,减少了计算量,从而提高了推理速度。 #### 性能优化 在性能优化方面,Features-Fused-Pyramid-Neck 通过以下方式提升了目标检测的效率和精度: 1. **多尺度特征提取**:通过多层级特征金字塔的设计,能够有效捕捉不同尺度的目标特征,从而提升小目标和大目标的检测性能。 2. **实时性优化**:通过轻量化设计和动态特征融合策略,减少了模型的计算复杂度,使得该架构能够在实时目标检测任务中表现出色。 3. **实验验证**:在多个目标检测数据集上进行了广泛的实验验证,结果表明 Features-Fused-Pyramid-Neck 在检测精度和推理速度方面均优于传统的特征金字塔架构。 #### 代码示例 以下是一个简化的 Features-Fused-Pyramid-Neck 的实现示例,展示了其核心特征融合模块的设计: ```python import torch import torch.nn as nn class FeatureFusedPyramidNeck(nn.Module): def __init__(self, in_channels_list, out_channels): super(FeatureFusedPyramidNeck, self).__init__() self.lateral_convs = nn.ModuleList() self.top_down_convs = nn.ModuleList() self.out_convs = nn.ModuleList() # 构建横向连接和自上而下连接 for in_channels in in_channels_list: lateral_conv = nn.Conv2d(in_channels, out_channels, 1) top_down_conv = nn.Conv2d(out_channels, out_channels, 3, padding=1) self.lateral_convs.append(lateral_conv) self.top_down_convs.append(top_down_conv) # 输出层卷积 for _ in range(len(in_channels_list)): out_conv = nn.Conv2d(out_channels, out_channels, 3, padding=1) self.out_convs.append(out_conv) def forward(self, inputs): # 横向连接 laterals = [lateral_conv(x) for x, lateral_conv in zip(inputs, self.lateral_convs)] # 自上而下传播 feature_maps = [] feature_map = laterals[-1] feature_maps.append(feature_map) for i in range(len(laterals) - 2, -1, -1): feature_map = torch.nn.functional.interpolate(feature_map, scale_factor=2, mode='nearest') feature_map = feature_map + laterals[i] feature_maps.append(feature_map) # 输出层处理 outputs = [out_conv(fm) for fm, out_conv in zip(feature_maps, self.out_convs)] return outputs ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值