GraphSAGE的邻居采样,采样数量与估计方差的权衡?
GraphSAGE 用采样子图做 mini-batch 训练与推理:对每个目标节点,从邻居中有放回/无放回采样固定数量(如 $S_1, S_2$ 为每层采样数),得到以该节点为根、深度为 $K$ 的子图,仅在该子图上做 $K$ 层聚合。这样每层每个节点的邻居数有上界,单 batch 的计算量为 $O(\prod_{k=1}^K S_k)$,与图总规模解耦,可扩展到大图。
设节点 $v$ 的邻居集合为 $\mathcal{N}(v)$,真实聚合为 $\bar{\boldsymbol{h}} = \frac{1}{|\mathcal{N}(v)|}\sum_{u\in\mathcal{N}(v)} \boldsymbol{h}u$。若随机采样 $S$ 个邻居,用样本均值 $\hat{\boldsymbol{h}} = \frac{1}{S}\sum{u\in\mathcal{S}} \boldsymbol{h}_u$ 估计,则 \(\mathbb{E}[\hat{\boldsymbol{h}}] = \bar{\boldsymbol{h}},\quad \mathrm{Var}(\hat{\boldsymbol{h}}) \propto \frac{\sigma^2}{S},\) 其中 $\sigma^2$ 与邻居特征方差相关。采样数量 $S$ 越大,估计方差越小,聚合越稳定、表达越充分,但计算与显存上升;$S$ 过小则方差大、梯度噪声大、可能欠拟合。因此存在 方差与计算量的权衡。
通常每层 $S_k$ 取 10~25;层数 $K=2$ 时总邻居数 $S_1\times S_2$ 在几百量级。可用均匀采样或按边权/度数的非均匀采样(重要邻居多采);训练时还可加 dropout 在邻居上做正则。归纳时对新节点同样做 $K$ 层采样与聚合,无需重训。
| 返回模块 | 返回总览 |