A symmetric Hadamard matrix of order 2

[
1 1

1 -1

]

在图神经网络(GNN)中,**Naively Symmetric Normalized Matrix** 是一种图的邻接矩阵归一化方式,通常用于图卷积网络(GCN)中,目的是让图的结构信息更适配神经网络的传播规则。 --- ### ✅ 定义:Naively Symmetric Normalized Matrix 是什么? 它通常表示为: $$ \tilde{A}_{\text{sym}} = D^{-\frac{1}{2}} A D^{-\frac{1}{2}} $$ 其中: - $ A $:图的邻接矩阵(adjacency matrix) - $ D $:度矩阵(degree matrix),是一个对角矩阵,$ D_{ii} = \sum_j A_{ij} $ - $ D^{-\frac{1}{2}} $:对度矩阵的每个对角元素取平方根倒数 这个矩阵是对称的(symmetric),并且每个元素都进行了对称归一化。 --- ### 🧠 为什么叫“Naively Symmetric”? - **对称性(Symmetric)**:因为 $ \tilde{A}_{\text{sym}} $ 是对称矩阵,即 $ \tilde{A}_{\text{sym}} = \tilde{A}_{\text{sym}}^T $。 - **“Naively”(朴素)**:是因为它在某些图结构中可能表现不够好,比如度数差异非常大的图。它假设所有边的权重都一样,没有考虑方向或边的权重变化。 --- ### 🧮 举个例子 考虑一个简单的图,其邻接矩阵 $A$ 和度矩阵 $D$ 为: $$ A = \begin{bmatrix} 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \end{bmatrix}, \quad D = \begin{bmatrix} 2 & 0 & 0 \\ 0 & 2 & 0 \\ 0 & 0 & 2 \end{bmatrix} $$ 那么: $$ D^{-\frac{1}{2}} = \begin{bmatrix} \frac{1}{\sqrt{2}} & 0 & 0 \\ 0 & \frac{1}{\sqrt{2}} & 0 \\ 0 & 0 & \frac{1}{\sqrt{2}} \end{bmatrix} $$ 于是: $$ \tilde{A}_{\text{sym}} = D^{-\frac{1}{2}} A D^{-\frac{1}{2}} = \frac{1}{2} A $$ --- ### ✅ 在 GCN 中的应用 这是 **Kipf & Welling 的 GCN** 中使用的传播规则: $$ H^{(k)} = \sigma\left( \tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} H^{(k-1)} W^{(k)} \right) $$ 其中: - $ \tilde{A} = A + I $:加上自环的邻接矩阵 - $ \tilde{D} $:对应的度矩阵 - $ W^{(k)} $:第 $k$ 层的可学习参数 - $ \sigma $:激活函数(如 ReLU) --- ### 🧪 为什么使用对称归一化? - **防止梯度爆炸/消失**:归一化让邻接矩阵的谱半径(最大特征值)控制在合理范围内。 - **平滑信息传播**:使得信息在图上传播更加均匀。 - **适用于无向图**:因为对称归一化只适用于无向图(邻接矩阵是对称的)。 --- ### 🔁 与非对称归一化(如 $D^{-1}A$)的区别 | 归一化方式 | 表达式 | 是否对称 | 特点 | |------------|--------|----------|------| | 对称归一化 | $D^{-1/2}AD^{-1/2}$ | ✅ 是 | 更稳定,适合无向图 | | 非对称归一化 | $D^{-1}A$ | ❌ 否 | 更适合有向图,但稳定性略差 | --- ### ✅ Python 示例:使用 PyTorch Geometric 实现对称归一化 ```python import torch from torch_geometric.nn import GCNConv from torch_geometric.data import Data # 构造一个简单图 edge_index = torch.tensor([[0, 1, 1, 2], [1, 0, 2, 1]], dtype=torch.long) x = torch.tensor([[-1], [0], [1]], dtype=torch.float) data = Data(x=x, edge_index=edge_index) # 使用 GCN 层(内部自动进行对称归一化) conv = GCNConv(1, 1) output = conv(data.x, data.edge_index) print("Output:", output) ``` --- ### ✅ 总结 | 问题 | 回答 | |------|------| | 什么是 Naively Symmetric Normalized Matrix? | 是一种图邻接矩阵的归一化方式:$ D^{-1/2} A D^{-1/2} $ | | 为什么叫“Naively”? | 因为它是一种简单、对称但可能不够灵活的归一化方式 | | 为什么用它? | 可以稳定图神经网络训练,防止信息扩散不均 | | 应用在哪? | GCN、Graph U-Net 等图神经网络中 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值