过平滑问题在图神经网络(GNN)中产生,当堆叠多层时,会导致节点表示变得越来越相似并失去其区分能力。这种现象与许多GNN消息传递机制中固有的图拉普拉斯平滑的重复应用密切相关。幸运的是,已发展出多种方法来抵消这种影响,从而能够构建具有更大深度且可能更具表现力的GNN模型。本节考察缓解过平滑的实用方法,包括架构调整、聚合过程的修改以及特定的训练策略。架构改进一个有效的方法是修改GNN架构本身,以保留来自早期层的信息或控制信息流。残差连接受其在深度卷积神经网络(CNN)中成功的启发,残差(或跳跃)连接提供了一种简单而有效的机制来对抗过平滑。其核心是:在激活函数之前,将层的输入表示$H^{(l)}$加到其输出上。对于执行聚合和更新的通用GNN层,操作变为:$$ H^{(l+1)} = \sigma \left( \text{UPDATE}^{(l)} \left( H^{(l)}, \text{AGGREGATE}^{(l)} \left( { H_u^{(l)} : u \in \mathcal{N}(v) \cup {v} } \right) \right) + H^{(l)} \right) $$或者,在一个更简单的类GCN公式中,其中更新与聚合和线性变换$W^{(l)}$结合:$$ H^{(l+1)} = \sigma \left( \tilde{A} H^{(l)} W^{(l)} + H^{(l)} \right) $$其中 $\tilde{A}$ 表示归一化邻接矩阵(或类似的聚合机制)。通过添加前一层的表示$H^{(l)}$,网络始终可以选择保留原始特征,必要时有效绕过当前层的平滑操作。这确保了即使在深层网络中,来自初始节点特征或早期层的信息也不会被完全抹去。残差连接适用性广,常用于ResGCN等架构中。digraph G { rankdir=LR; node [shape=box, style=filled, fillcolor="#a5d8ff", fontname="sans-serif"]; edge [fontname="sans-serif"]; H_l [label="H(l)"]; GNN_Layer [label="GNN 层(l)", shape= Mrecord, fillcolor="#ffec99"]; Add [label="+", shape=circle, fillcolor="#b2f2bb"]; Activation [label="σ", shape=circle, fillcolor="#fcc2d7"]; H_l_plus_1 [label="H(l+1)"]; H_l -> GNN_Layer; GNN_Layer -> Add; H_l -> Add [label=" 残差 连接"]; Add -> Activation; Activation -> H_l_plus_1; }一张图,说明了GNN层中的残差连接。输入$H^{(l)}$与主GNN变换的输出一起直接送入加法操作。跳跃知识(JK)网络跳跃知识(JK)网络通过允许最终层(或中间层)选择性地访问所有先前层的表示来解决过平滑问题。JK网络不是简单地按顺序传递信息,而是在进行最终预测或将信息传递到下一个块之前,为每个节点聚合来自不同邻域深度(不同层)的特征。其核心是:将节点 $v$ 在所有 $L$ 层中的输出 $H^{(1)}, H^{(2)}, ..., H^{(L)}$ 组合起来,形成最终表示 $H_v^{(final)}$:$$ H_v^{(final)} = \text{AGGREGATE}_{JK} \left( H_v^{(1)}, H_v^{(2)}, ..., H_v^{(L)} \right) $$常见的聚合函数($\text{AGGREGATE}_{JK}$)包括:拼接: $H_v^{(final)} = [ H_v^{(1)} || H_v^{(2)} || ... || H_v^{(L)} ]$ - 简单但会显著增加特征维度。最大池化: $H_v^{(final)} = \text{max} ( H_v^{(1)}, H_v^{(2)}, ..., H_v^{(L)} )$ - 选择跨层最突出的特征。LSTM注意力: 使用LSTM网络根据其序列自适应地衡量来自不同层表示的重要性。通过结合浅层表示(保留局部性)和深层表示(捕获更广结构),JK网络使模型能够学习每个节点的最佳邻域范围,从而缓解固定深度传播的负面影响。DeeperGCN和先进架构像DeeperGCN这样的架构明确目标是构建非常深的图网络。它们通常结合残差连接与其他技术,例如密集连接(类似于DenseNets)、归一化层(BatchNorm、LayerNorm)以及不同的聚合函数(例如,使用Softmax聚合而不是均值/和),以促进稳定训练并防止拥有数十甚至数百层网络中的过平滑。这些代表了一种更全面的架构方法来管理深度GNN中的信息流。修改聚合和更新过程改变宏观架构,调整核心消息传递机制也能有所帮助。注意力机制正如第2章所详述,图注意力网络(GAT)使用自注意力在聚合过程中衡量邻居节点的贡献。GAT中的聚合步骤如下:$$ h'i = \sigma\left(\sum{j \in \mathcal{N}(i) \cup {i}} \alpha_{ij} W h_j\right) $$其中 $\alpha_{ij}$ 是根据节点 $i$ 和 $j$ 的特征动态计算的注意力系数。与GCN中固定的平均系数($\frac{1}{\sqrt{d_i d_j}}$)不同,学习到的注意力权重$\alpha_{ij}$使模型能够优先考虑更重要的邻居,并可能降低对可能导致过度平滑的邻居的权重。尽管这不是一个保证的解决方案(注意力权重可能收敛到一致),但注意力提供的灵活性通常有助于与简单的平均或求和聚合相比,更好地保持特征多样性,特别是在与多头注意力结合时。图归一化层标准归一化技术,如BatchNorm或LayerNorm,应用于GNN层内的线性变换或聚合之后,可以稳定节点嵌入的分布。尽管并非直接为过平滑设计,但通过防止特征值坍塌或爆炸,它们可以间接减缓表示收敛到单个点的速度。此外,还提出了GraphNorm或PairNorm等更专业的技法,专门针对图结构和过平滑背景下的归一化。正则化和训练策略在训练过程中引入随机性或特定归一化也会有所帮助。Dropout变体(节点丢弃,边丢弃)应用dropout是深度学习中常见的正则化技术。在GNN中,dropout可以通过几种方式应用:特征丢弃: 对节点特征向量 $H^{(l)}$ 应用标准dropout。边丢弃: 在每次训练迭代中,从图邻接矩阵 $\tilde{A}$ 中随机移除一部分边。这迫使模型通过不同的结构路径传递消息,使聚合不那么确定,并可能减缓过平滑。节点丢弃: 在训练期间随机丢弃整个节点及其关联的边。通过在邻域聚合过程中引入随机性,这些dropout变体可以防止模型过度依赖任何特定节点或边,促使更多表示并阻碍快速收敛到均匀状态。{"layout": {"title": "特征方差衰减", "xaxis": {"title": "GNN层深度"}, "yaxis": {"title": "平均特征方差"}, "legend": {"traceorder": "normal"}, "template": "plotly_white", "autosize": true}, "data": [{"type": "scatter", "name": "标准GNN", "x": [0, 1, 2, 3, 4, 5, 6, 7, 8], "y": [1.0, 0.8, 0.6, 0.4, 0.25, 0.15, 0.1, 0.08, 0.07], "mode": "lines+markers", "line": {"color": "#fa5252"}, "marker": {"color": "#fa5252"}}, {"type": "scatter", "name": "带缓解措施的GNN", "x": [0, 1, 2, 3, 4, 5, 6, 7, 8], "y": [1.0, 0.9, 0.85, 0.78, 0.7, 0.65, 0.6, 0.58, 0.57], "mode": "lines+markers", "line": {"color": "#4263eb"}, "marker": {"color": "#4263eb"}}]}GNN层间平均特征方差的衰减。残差连接或JK网络等技术旨在减缓这种衰减,从而在更深的层中保持特征多样性。技术总结不同的技术提供了各种权衡:残差连接: 简单,适用性广,通常是有效的首要步骤。跳跃知识: 更复杂,但能更精细地控制来自不同深度的特征融合。会增加参数量,尤其是在拼接时。注意力机制: 作为GAT等架构的组成部分;提供动态加权,但不能完全保证防止过平滑。归一化: 主要有助于训练稳定性,但可以间接帮助解决过平滑。存在专门的图归一化方法。丢弃(边/节点): 一种正则化技术,通过引入噪声来减缓收敛并提高泛化能力。实践中,这些技术常被结合使用。例如,一个深度GNN可能会采用残差连接、层归一化以及可能的边丢弃,以实现稳定训练并有效缓解过平滑。选择取决于具体的架构、数据集特性以及所需网络深度。理解这些选择提供了一套工具,用于构建更强大、更深的GNN模型,这些模型能够学习复杂的图模式,而不会陷入过平滑问题。