真实面经题目 · 原创解析

图归一化的方式有哪些?

图归一化的核心目的是让图上的信息传播在数值上稳定、在结构上公平、在训练上可优化。常见做法包括对邻接矩阵做度归一化、对称归一化或随机游走归一化,加入自环以保留节点自身信息,对节点特征和边权做尺度处理,以及在多层 GNN 中使用 BatchNorm、LayerNorm、GraphNorm 等缓解训练不稳定、过平滑和不同图规模带来的分布差异。回答时应把归一化什么、为什么归一化、适合什么模型和场景讲清楚。

出现于:阿里巴巴 · 算法

60 秒回答模板

图归一化可以从结构、特征、边权和网络层几个层面理解。最典型的是对邻接矩阵做归一化,因为 GNN 的消息传递本质上是在按邻接关系聚合邻居信息,如果直接用 A 聚合,高度节点会收到过大的累加值,低度节点的信息尺度又很小,训练会不稳定,也会让节点度数强烈影响表示。常见方式有随机游走归一化 D^-1A,它相当于对每个节点的邻居做平均,保留有向转移概率含义;还有 GCN 中常用的对称归一化 D^-1/2 A D^-1/2,它同时考虑源节点和目标节点的度,使传播算子更对称、数值谱性质更好,适合无向图和基于拉普拉斯思想的卷积。实际使用时通常会先加自环,得到 A_hat = A + I,再用 D_hat 做归一化,这样节点不会只接收邻居信息,还能保留自身特征。除了邻接矩阵,还要考虑节点特征归一化,比如标准化、按维度缩放或按节点向量归一化,避免某些特征维度主导训练。对于带权图,还需要对边权做裁剪、缩放、softmax 或按邻域归一化,让边权可比较且不会数值爆炸。最后,在深层 GNN 中还会使用 BatchNorm、LayerNorm、GraphNorm 等层级归一化方法,它们不改变图结构本身,但能稳定隐藏表示分布,加快收敛。不同方式没有绝对优劣,D^-1A 更像概率转移,D^-1/2AD^-1/2 更适合无向图的平滑传播,特征和边权归一化关注输入尺度,批归一化和层归一化关注训练过程中的表示稳定性。

考点 结构归一化的动机
主线 随机游走归一化 D^-1A
易错点 只回答特征标准化,忽略邻接矩阵和度矩阵归一化。

深入解析

01

结构归一化的动机

在图神经网络中,节点表示通常来自自身和邻居的聚合。如果直接使用邻接矩阵 A 做求和聚合,高度节点会累积大量邻居信息,表示范数可能明显大于低度节点,模型学到的内容会被节点度数强烈影响。归一化的作用是把邻居数量带来的尺度差异从邻居内容本身中分离出来,使消息传递更稳定、更可比较,也减少训练时梯度过大或表示爆炸的风险。

02

随机游走归一化 D^-1A

随机游走归一化用度矩阵的逆左乘邻接矩阵,相当于把每个节点从邻居收到的消息做平均。每一行通常可以理解为从当前节点走向邻居的概率分布,因此它在有向图、传播模型、PageRank 风格的扩散建模中很自然。它的优点是解释直观,聚合后尺度稳定;缺点是算子一般不对称,在无向图上的谱性质不如对称归一化方便。

03

对称归一化 D^-1/2AD^-1/2

对称归一化会同时考虑边两端节点的度数,一条边的贡献会被源节点和目标节点的度共同缩放。它是 GCN 中非常经典的形式,适合无向图,因为归一化后的传播矩阵保持对称,和图拉普拉斯、谱卷积的推导更一致。相比 D^-1A,它不会只从接收方角度做平均,而是让高度节点发出的信息也被适当削弱,从而降低高度节点对邻居的支配性。

04

自环与重归一化

实际 GNN 中通常不会只用 A,而是先加自环 A_hat = A + I,再基于 A_hat 计算 D_hat。加自环的意义是让节点在聚合邻居时保留自身特征,否则多层传播后节点自己的原始信息可能被邻居信息冲淡。重归一化 D_hat^-1/2 A_hat D_hat^-1/2 还能改善数值稳定性,是许多 GCN 类模型的默认选择。

05

节点特征归一化

图结构归一化解决的是邻居聚合的尺度问题,但节点输入特征本身也可能存在量纲差异。常见做法包括按特征维度做标准化、Min-Max 缩放、对稀疏特征做行归一化,或对节点向量做 L2 归一化。特征归一化可以避免某些大尺度特征主导模型,也能让优化器面对更平滑的损失地形。

06

边权归一化

对于带权图,边权本身代表连接强度、相似度、频次或注意力分数,直接使用原始边权可能导致少数大权重边压制其他信息。因此可以按节点邻域对边权归一化,使同一节点的出边权重和为 1;也可以对边权做 log 缩放、裁剪、标准化或 softmax。选择方式取决于边权语义,如果边权是频次,缩放和裁剪常见;如果边权是注意力打分,邻域 softmax 更自然。

07

隐藏层归一化

BatchNorm、LayerNorm、GraphNorm 等方法主要作用在 GNN 的隐藏表示上,而不是直接修改邻接矩阵。BatchNorm 适合批量中节点或图分布较稳定的场景,可以加快收敛;LayerNorm 对单个样本内部归一化,对 batch size 小或动态图更稳;GraphNorm 会按图进行归一化,在图级任务中能缓解不同图规模和分布差异。它们常和残差连接、Dropout、激活函数一起使用,以提升深层 GNN 的可训练性。

易错点

  • 只回答特征标准化,忽略邻接矩阵和度矩阵归一化。
  • 把 D^-1A 和 D^-1/2AD^-1/2 混为一谈,没有说明随机游走解释与对称传播的区别。
  • 忘记自环,导致回答无法解释 GCN 中 A_hat 和 D_hat 的常见形式。
  • 认为所有图都必须使用同一种归一化,没有结合有向图、无向图、带权图和图级任务区分场景。
  • 把 BatchNorm、LayerNorm 说成结构归一化,没有区分它们作用在隐藏表示而不是邻接结构上。
  • 忽视边权语义,机械地对所有边权做同样缩放,可能破坏频次、概率或置信度含义。
  • 只讲公式不讲目的,无法说明归一化如何缓解尺度不一致、训练不稳定和高度节点支配问题。

面试官追问

为什么 GCN 常用 D_hat^-1/2 A_hat D_hat^-1/2,而不是直接用 A?

直接用 A 会让聚合结果随节点度数线性增大,高度节点的表示范数容易过大,训练不稳定。D_hat^-1/2 A_hat D_hat^-1/2 先加自环再做对称度归一化,既保留自身特征,又控制邻居聚合尺度,同时在无向图上保持较好的对称性和数值性质。

D^-1A 和 D^-1/2AD^-1/2 哪个更好?

不能简单说哪个更好,取决于图结构类型和建模目标。D^-1A 解释为随机游走转移概率,适合传播、扩散、有向转移等场景;D^-1/2AD^-1/2 更适合无向图上的平滑聚合,也是经典 GCN 中更常用的选择。

为什么要加自环?

因为消息传递如果只聚合邻居,节点自身特征不会直接进入下一层,经过多层后自身信息可能被稀释。加自环相当于把节点自己也当作一个邻居,让模型同时利用自身属性和邻域信息。

特征已经归一化了,还需要邻接矩阵归一化吗?

通常需要,因为二者解决的问题不同。特征归一化处理输入维度的尺度差异,邻接矩阵归一化处理聚合时由节点度数造成的尺度差异;只做其中一个,另一个问题仍然可能影响训练和表示质量。

边权归一化和注意力机制有什么关系?

注意力机制可以看作一种可学习的边权归一化方式,常在每个节点的邻域内对注意力分数做 softmax,使邻居贡献可比较且总量受控。普通边权归一化通常基于已有边权,注意力则由节点特征和模型参数动态计算边的重要性。

BatchNorm、LayerNorm 在 GNN 中会不会破坏图结构?

它们一般不直接改变图的边和邻接关系,而是调整节点或图表示的分布。风险在于不同归一化统计可能改变表示尺度和图间差异,所以图级任务、小 batch 场景、异构图场景中要谨慎选择归一化范围。