3. 图神经网络基础与分子图适配

分子图与普通图数据最大的区别在于:节点和边都携带明确的化学语义。原子是节点,化学键是边,而原子类型、杂化方式、形式电荷、芳香性、键级、立体构型等信息必须被编码成向量,才能进入图神经网络。本节围绕“消息传递”这一统一视角,说明 GCN、GAT、MPNN 在分子图上的输入输出设计,以及节点与边特征嵌入的具体做法。

一、消息传递框架:把分子图计算拆成三步

消息传递(Message Passing)是绝大多数图神经网络的共同骨架。对分子图中的每个原子节点 v,其第 l 层更新可概括为三步:

  1. 消息生成:对每条边 (u, v),用邻居节点 u 的特征、边特征 euv 和可学习参数生成消息 muv。
  2. 消息聚合:把节点 v 所有邻居的消息按某种置换不变方式(求和、均值、最大值)聚合为 mv。
  3. 节点更新:用聚合结果和节点自身特征更新 hv,通常配合残差连接与层归一化。

这三步决定了不同模型的差异:GCN 把边权固定为归一化系数,GAT 用注意力动态计算边权,MPNN 则显式引入边网络,让边特征参与消息生成。分子图适配的关键,是把化学键信息放进“边特征”而不是只放在邻接矩阵里。

分子图消息传递:从原子/键特征到节点更新 输入:分子图 C O N 节点=原子,边=化学键 特征嵌入 原子:元素/杂化/电荷 芳香性/手性/度 键:键级/共轭/环 立体/方向 one-hot → Linear → d 维 消息传递三步 ① 消息生成 m=f(h_u,e_uv) ② 消息聚合 Σ / mean / max ③ 节点更新 h_v' = U(h_v,m_v) GCN:边权固定归一化 GAT:注意力动态加权 MPNN:边网络显式建模 置换不变性保证原子编号不影响结果 输出设计:节点级 / 边级 / 图级 节点级输出 每个原子一个向量 用于原子性质预测 如:部分电荷、反应位点 边级输出 每条键一个向量 用于键性质预测 如:键能、键断裂概率 图级输出 整分子一个向量 用于分子性质预测 如:logP、溶解度、毒性

二、GCN:固定归一化的邻域平均

GCN 的核心是把邻接矩阵做对称归一化:Â = D̃-1/2(A+I)D̃-1/2,其中 A+I 表示加入自环,D̃ 是度矩阵。第 l 层更新为 H(l+1) = σ(Â H(l) W(l))。在分子图上,这意味着每个原子把自己的特征与邻居特征按度数加权平均,再经过线性变换和非线性激活。

GCN 的优点是简单、参数少、训练稳定;缺点是边权固定,无法区分单键、双键、芳香键的差异。若把键级直接编码进邻接矩阵权重,虽然能部分缓解,但会破坏归一化的对称性,且无法处理方向性。因此 GCN 更适合作为分子图基线模型,或用于键类型较单一的骨架筛选任务。

三、GAT:用注意力区分邻居重要性

GAT 在聚合前先计算邻居对中心原子的注意力系数。对边 (u, v),先拼接两端特征 [Whu || Whv],再与可学习向量 a 做内积,经 LeakyReLU 和 softmax 归一化得到 αuv,最后加权求和。多头注意力可以并行学习多种邻域模式。

在分子图上,GAT 的注意力权重具有可解释性:例如在预测某原子是否参与氢键时,模型可能给极性邻居更高权重。但要注意,GAT 默认只使用节点特征,边特征需要额外拼接进注意力计算,否则键级信息会丢失。常见做法是把边嵌入 euv 拼接到 [Whu || Whv || euv] 中,再计算注意力。

四、MPNN:显式边网络与消息函数

MPNN 把消息传递写成更一般的形式:muv = Ml(hu, hv, euv),其中 Ml 通常是一个小 MLP。聚合后,节点更新为 hv' = Ul(hv, mv)。读出阶段用置换不变函数(求和、均值、注意力池化)得到图级表示。

MPNN 对分子图最友好,因为它把边特征放在与节点特征同等重要的位置。一个典型的分子 MPNN 配置如下:

节点特征维度 d_node = 64
边特征维度   d_edge = 32
隐藏层维度   d_hidden = 128
消息网络     M = Linear(64+64+32 → 128) + ReLU + Linear(128 → 128)
更新网络     U = GRU(128, 128) 或 Linear(128+128 → 128)
聚合方式     sum
层数         T = 3
读出         sum pooling + Linear(128 → 1)

训练时,输入是一批分子图,每个图包含节点特征矩阵 X ∈ RN×d_node、边索引 E ∈ Z2×M、边特征矩阵 Ef ∈ RM×d_edge,以及可选的图级标签。输出根据任务选择节点级、边级或图级张量。损失函数常用 MSE(回归)或交叉熵(分类)。

五、节点与边特征嵌入的工程细节

特征嵌入的质量直接决定模型上限。原子特征通常包括:元素类型(one-hot,覆盖 C、N、O、S、P、卤素等)、杂化方式(sp、sp²、sp³)、形式电荷、是否芳香、手性标签、成键数、是否在环中、是否共轭。边特征包括:键级(单、双、三、芳香)、是否共轭、是否在环中、立体构型(顺反、E/Z)、键长(若构象可用)。

连续值如电荷、键长建议先做标准化或分桶离散化,再与 one-hot 拼接后送入线性层。对于缺失的立体信息,应显式增加“未知”类别,而不是用零向量代替,否则模型无法区分“无手性”和“信息缺失”。

实践提示:在分子图任务中,先固定一套特征字典并版本化。每次修改特征定义后,重新生成数据集缓存,避免训练集与验证集特征不一致。建议把特征生成脚本与模型训练脚本分离,便于复现。

六、三种模型的选型对照

模型 边权处理 边特征支持 适合的分子任务
GCN 固定归一化 弱(需改邻接矩阵) 骨架筛选、快速基线
GAT 注意力动态加权 中(需拼接) 反应位点、可解释性分析
MPNN 边网络显式建模 强(原生支持) 键级敏感、构象相关性质

实际工程中,建议先用 GCN 建立基线,确认数据管道和评估指标无误;再切换到 GAT 观察注意力是否集中在化学上合理的邻居;最后用 MPNN 处理需要精细键信息的任务。无论选择哪种模型,输入输出设计都应保持统一:节点特征矩阵、边索引、边特征矩阵、图级标签四件套,这样模型替换时只需改动消息函数和聚合方式,数据层无需重写。