md_files/科研/草稿.md

82 lines
2.5 KiB
Markdown
Raw Normal View History

2025-03-18 12:46:59 +08:00
以下是转换为 Markdown 格式的内容,公式已用 `$``$$` 包裹:
---
下面给出一个**最简示例**,只展示 **节点 $A$** 在两层 GNN 里的更新计算过程,并说明它是如何从 2-hop 范围(即节点 $C, D$)间接获得信息。
---
## 图结构与初始特征
```
A
|
B
/ \
C D
```
- **边**$A$$B$$B$$C$$B$$D$
- **初始特征 (Layer-0)**
- $A^{(0)} = [1.0,\ 0.5]$
- $B^{(0)} = [0.8,\ 1.2]$
- $C^{(0)} = [0.3,\ 0.7]$
- $D^{(0)} = [1.5,\ 0.9]$
---
**第 1 层更新:$A^{(0)} \to A^{(1)}$**
1. **节点 $A$ 的 1-hop 邻居**:只有 $B$。
2. **聚合**(示例:自 + sum 邻居):
$$
z_A^{(1)} \;=\; A^{(0)} + B^{(0)}
\;=\; [1.0,\,0.5] + [0.8,\,1.2]
\;=\; [1.8,\,1.7].
$$
3. **MLP 变换**:用一个两层感知器或线性+激活函数映射 $z_A^{(1)}$ 到 2 维输出:
$$
A^{(1)} \;=\; \mathrm{MLP}\bigl(z_A^{(1)}\bigr).
$$
- (数值略,可想象 $\mathrm{MLP}([1.8,1.7]) \approx [1.9,1.1]$ 之类。)
**结果**$A^{(1)}$ 包含了 **A** 的初始特征 + **B** 的初始特征信息。
---
**第 2 层更新:$A^{(1)} \to A^{(2)}$**
为了让 **A** 获得 **2-hop** 范围($C, D$)的信息,需要**先**让 **B** 在第 1 层就吸收了 $C, D$ 的特征,从而 **B^{(1)}** 蕴含 $C, D$ 信息。然后 **A** 在第 2 层再从 **B^{(1)}** 聚合。
1. **节点 B 在第 1 层**(简要说明)
- 邻居:$\{A,C,D\}$
- 聚合:$z_B^{(1)} = B^{(0)} + A^{(0)} + C^{(0)} + D^{(0)}$
- MLP 变换:$B^{(1)} = \mathrm{MLP}\bigl(z_B^{(1)}\bigr)$。
- 此时 **B^{(1)}** 已经包含了 $C, D$ 的信息。
2. **节点 $A$ 的第 2 层聚合**
- 邻居:$B$,但此时要用 **B^{(1)}**(它已吸收 C、D
- **聚合**
$$
z_A^{(2)} = A^{(1)} + B^{(1)}.
$$
- **MLP 变换**
$$
A^{(2)} = \mathrm{MLP}\bigl(z_A^{(2)}\bigr).
$$
**结果**$A^{(2)}$ 就包含了 **2-hop** 范围的信息,因为 **B^{(1)}** 中有 $C, D$ 的贡献。
---
## 小结
- **第 1 层**A 直接获取 B 的初始特征B 同时获取 A、C、D 的初始特征。
- **第 2 层**A 获取 B 的**新表示**B^{(1)}),该表示已带有 C、D 信息 → A 间接获得 2-hop 信息。
- **每层**都进行“聚合 + MLP”**同步更新**,最终 $A^{(2)}$ 就是节点 A 的 2 层 GNN 输出。
---
如果需要进一步调整或补充,请告诉我!