想象你是一位新到小区的调研员,上级要求你为每户人家建立“家庭画像”。可是你手上只有每个人的基本信息,怎样才能更准确地了解他们?最聪明的做法是:去敲邻居的门。邻居见过这家人深夜的灯光、周末的访客、阳台上最茂盛的那盆绿植——这些一手观察拼凑起来,比任何自述都更接近真相。 但“怎么问、怎么汇总”却大有讲究。你可以把邻居们的回答做一个算术平均,得到一幅“典型印象”;也可以像深聊一样,按门牌号顺序挨家走访,但每次出发前先随机洗牌,免得结论总被固定的敲门顺序带偏;还可以听完所有邻居后,只记录每个问题上最有分量的回答。这正是 GraphSAGE 聚合器在做的事:让图中每个节点“向左邻右舍打听”,再用不同策略把邻居特征融合成自己的新特征。理解了这三种聚合方式,你就掌握了图神经网络打通“信息孤岛”的关键钥匙。

岗位关联

掌握 GraphSAGE 聚合函数的原理与取舍,是设计高效图神经网络的基本功——无论做推荐、社交分析还是知识图谱,你都能根据场景选出最合适的“打听方式”。

目录
  1. 可视化演示
  2. 聚合器总览:调研员的走访手册
  3. 均值聚合:全班评优的平均分
  4. LSTM聚合:随机洗牌的深聊
  5. 最大池化聚合:每个问题取最响亮的回答
  6. 三种对比:打听心法的取舍
  7. 实际应用:调研员的经验推广到全城
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

对比ReLU、Sigmoid、Tanh、Leaky ReLU四种激活函数的曲线与导数,观察各函数在正负区间的行为差异和梯度特性。

本节配有交互动效(进入视口后自动加载,约 3KB)。

'+FNS[0].cap+'

聚合器总览:调研员的走访手册

调研员刚上岗时,手里只有一本空白的走访手册。他给每户人家都建了一页档案:先记下这户人家自己的已知信息,然后走出门去,敲开左邻右舍的门,把邻居们提供的线索一一记在本子上。回到办公室,他会把“自己已有的线索”和“邻居提供的线索”混在一起,整理成一份更完整的档案。第二天,他拿着更新过的档案再去回访邻居,周而复始,档案就越写越丰满。这套“反复走访、逐层补全”的流程,就是 GraphSAGE 的工作节奏。

在 GraphSAGE 里,每个节点 v 都像一户人家。它每隔一层网络,就要向邻居节点 N(v) 讨要一次特征——这个过程叫消息传递。由于真实图中节点的邻居数量差异巨大,直接计算全部邻居代价太高,所以 GraphSAGE 还会先做邻居采样:从邻居集合里随机抽出一小批代表,就像调研员不必敲遍整栋楼的门,只问三五个有代表性的家庭就足够了。拿到邻居特征后,一个叫聚合器(AGG) 的部件负责把它们融成一条新特征。最后,节点把新特征与自己的旧特征结合,经过权重矩阵和激活函数,得到这一层的输出特征,进入下一轮迭代。

hv(k)=σ(W(k)⋅AGG({hv(k−1)}∪{hu(k−1):u∈N(v)}))h_v^{(k)} = \sigma\left(W^{(k)} \cdot \mathrm{AGG}\left(\{h_v^{(k-1)}\} \cup \{h_u^{(k-1)} : u \in \mathcal{N}(v)\}\right)\right)

1. 第 k 层特征 $h_v^{(k)}$:表示经过 k 轮反复走访后,节点 v 沉淀下来的最终档案。

hv(k)h_v^{(k)}

2. 邻居集合 $\mathcal{N}(v)$:节点 v 的一跳邻居们,即调研员眼中值得走访的左邻右舍。

N(v)\mathcal{N}(v)

3. 聚合函数 $\mathrm{AGG}(\cdot)$:负责把一篮子邻居特征融合成一个向量的“整理师”。

AGG({hu(k−1):u∈N(v)})\mathrm{AGG}\left(\{h_u^{(k-1)} : u \in \mathcal{N}(v)\}\right)

4. 权重矩阵 $W^{(k)}$:可学习的线性变换,决定档案里每种信息被放大的倍数。

W(k)W^{(k)}

5. 激活函数 $\sigma(\cdot)$:给特征注入非线性的“情绪反应”,让模型能表达更复杂的判断。

σ(⋅)\sigma(\cdot)

所以,无论选择哪一种聚合方式,GraphSAGE 的骨架都是同一个:采样邻居 → 聚合特征 → 更新自己。就好比调研员的手法可以千变万化,但“走访—记录—更新”的节奏始终不变。接下来,我们正式认识他的三套绝活。

均值聚合:全班评优的平均分

新学期班里评选“最美教室”,班主任让每位同学给各组的布置打分。最省事也最服众的算法,就是把所有同学的分数加起来除以人数,得到一个平均分。没有人被特殊对待,也没有人对结果提出异议。均值聚合就是 GraphSAGE 中的“平均分算法”:把中心节点自己的特征和所有采样邻居的特征放在一起,每个维度上做一次算术平均,得到这条新的特征向量。

这个方法的优点显而易见:实现起来只是一次加法和一次除法,几乎不引入额外参数,训练速度飞快;同时,加法满足交换律,除法与顺序无关,所以均值聚合天然对邻居顺序不敏感——无论调研员先敲 101 的门还是先敲 102 的门,算出来的平均分一模一样。这让均值聚合成为 GraphSAGE 里最稳定可靠的基础款。当然,代价是它对邻居的差异“一视同仁”,不太擅长捕捉某一个特别突出的邻居。

hv(k)=σ(W⋅MEAN⁡({hv(k−1)}∪{hu(k−1):u∈N(v)}))h_v^{(k)} = \sigma\left(W \cdot \operatorname{MEAN}\left(\{h_v^{(k-1)}\} \cup \{h_u^{(k-1)} : u \in \mathcal{N}(v)\}\right)\right)

1. 集合 $\{h_v^{(k-1)}\} \cup \{h_u^{(k-1)} : u \in \mathcal{N}(v)\}$:把“自己”和“所有采样邻居”的前一层特征装进同一个篮子里。

{hv(k−1)}∪{hu(k−1):u∈N(v)}\{h_v^{(k-1)}\} \cup \{h_u^{(k-1)} : u \in \mathcal{N}(v)\}

2. 算术平均 $\operatorname{MEAN}(\cdot)$:先把篮子里的向量逐维相加,再除以总数。这就是“总分 ÷ 人数”。

MEAN⁡(⋅)\operatorname{MEAN}(\cdot)

3. 共享权重 $W$:所有节点共用同一个变换矩阵,保证模型参数规模不随图变大而膨胀。

WW

4. 激活与输出 $\sigma(W \cdot \text{MEAN}(\cdot))$:对平均后的向量做线性映射和非线性激活,得到节点 v 的新特征。

σ(W⋅MEAN⁡(⋅))\sigma\left(W \cdot \operatorname{MEAN}(\cdot)\right)

就像平均分能快速反映一个班级的整体氛围一样,均值聚合擅长为节点提炼“邻居里的主流意见”。当图的邻居特征分布比较均匀、没有极端离群点时,它用最低的成本给出相当可靠的画像。

LSTM聚合:随机洗牌的深聊

均值聚合虽然高效,但有个短板:它把每个邻居的话只压缩成一个数字,丢失了细节。于是调研员换了一招——深聊。他找一位记性极好的同事,这位同事能记住一连串谈话的脉络,两人聊完一家又聊下一家,最后脑海中留下的不是每句话的算术平均,而是“整个对话流的浓缩记忆”。这位记性好的同事,就是 LSTM(长短期记忆网络)。

但这里有个隐患:邻居没有天然的顺序,门牌号 101、102、103 只是编号,不代表任何语义排序。如果固定按门牌号顺序聊,模型就可能把“顺序”当成有意义的信号,学到一种虚假的依赖关系。GraphSAGE 的解法简单而漂亮:每次深聊之前,先随机打乱邻居的顺序。这样一来,模型每一次看到的序列都不一样,它无法依赖任何固定顺序,只能学到对任意顺序都稳定的表达——这就是置换不变性。就像调研员每次走访前都洗牌决定敲门次序,统计意义上,最终结论与顺序无关。

hv(k)=LSTM⁡([hπ(1)(k−1),  hπ(2)(k−1),  …,  hπ(n)(k−1)]),π∼Uniform⁡(排列)h_v^{(k)} = \operatorname{LSTM}\left(\left[h_{\pi(1)}^{(k-1)},\; h_{\pi(2)}^{(k-1)},\; \ldots,\; h_{\pi(n)}^{(k-1)}\right]\right), \quad \pi \sim \operatorname{Uniform}(\text{排列})

1. 随机排列 $\pi$:从所有可能的打乱方式中均匀采样一个,保证每次训练见到的顺序都不同。

π∼Uniform⁡(排列)\pi \sim \operatorname{Uniform}(\text{排列})

2. 序列化 $h_{\pi(1)}^{(k-1)}, h_{\pi(2)}^{(k-1)}, \ldots$:把邻居特征按 π 的顺序排成一串,供 LSTM 从左到右读取。

[hπ(1)(k−1),  hπ(2)(k−1),  …,  hπ(n)(k−1)]\left[h_{\pi(1)}^{(k-1)},\; h_{\pi(2)}^{(k-1)},\; \ldots,\; h_{\pi(n)}^{(k-1)}\right]

3. LSTM 逐步读取:每个时间步读入一个邻居特征,并更新内部的记忆单元,让信息在序列上流动。

LSTM⁡(⋅)\operatorname{LSTM}\left(\cdot\right)

4. 取末位隐状态:读完整个序列后,最后一个隐状态浓缩了全部邻居的信息,作为聚合输出。

hv(k)=LSTM⁡(⋯ )h_v^{(k)} = \operatorname{LSTM}(\cdots)

LSTM 聚合就像一个“会记笔记的深聊者”,它把邻居的特征像故事一样串联起来记忆。代价是计算量显著上升,而且必须搭配随机洗牌。正因有了洗牌这步,它才能在保留序列模型强大表达力的同时,诚实尊重图结构“邻居本无次序”的本质。

最大池化聚合:每个问题取最响亮的回答

调研员还有第三套心法:每次提问后,他并不把所有回答记下来,而是只挑“最有分量”的那个回答记在本子上。比如问“这家晚上几点熄灯”,一楼说 10 点、二楼说 11 点、三楼说 3 点,他就记下 3 点这个最极端的线索。但注意,他不是整段对话只挑一位邻居,而是每个问题单独比较——问完十个问题,本子上记下的可能来自十位不同的邻居。这就是最大池化聚合的直觉。

在实现上,GraphSAGE 先让每个邻居的特征经过一个共享的 MLP(多层感知机) 变换——相当于把每位邻居的原始回答统一成标准格式;然后对新向量逐元素取最大值。所谓“逐元素”,就是输出向量的第 i 个位置,比较所有邻居变换后特征的第 i 个位置,谁大就取谁。这样不同维度可以来自不同邻居,输出向量捕捉的是“邻居群体在每一个特征维度上最强烈的信号”。

hv(k)=max⁡({σ(Wpool hu(k−1)+b):u∈N(v)})h_v^{(k)} = \max\left(\left\{\sigma\left(W_{\mathrm{pool}}\, h_u^{(k-1)} + b\right) : u \in \mathcal{N}(v)\right\}\right)

1. MLP 变换 $W_{\mathrm{pool}}\, h_u^{(k-1)} + b$:对每个邻居特征做一次共享的线性映射,就像先把各家回答翻译成统一语言。

Wpool hu(k−1)+bW_{\mathrm{pool}}\, h_u^{(k-1)} + b

2. 非线性激活 $\sigma(\cdot)$:给翻译后的特征增加表达能力,让映射不只是简单的缩放。

σ(Wpool hu(k−1)+b)\sigma(W_{\mathrm{pool}}\, h_u^{(k-1)} + b)

3. 逐元素取最大值 $\max(\cdot)$:在邻居集合方向上,对每个特征维度分别取最大,构成新的输出向量。

max⁡({σ(Wpool hu(k−1)+b):u∈N(v)})\max\left(\left\{\sigma\left(W_{\mathrm{pool}}\, h_u^{(k-1)} + b\right) : u \in \mathcal{N}(v)\right\}\right)

回到调研员的比喻:如果均值聚合是“求同”,那么最大池化就是“求异”——它敏锐地捕捉邻居中最醒目、最有辨识度的信号。论文实验也证明,在不少数据集上,最大池化的表现既稳定又优秀,是兼顾表达力与效率的均衡选择。

三种对比:打听心法的取舍

现在调研员手里有三套打听心法,该在什么场合用哪一套?均值聚合像一份问卷统计:成本极低、谁都能用,但对每个邻居一视同仁,容易抹平极端但重要的信号;LSTM 聚合像一次深入的系列访谈:记住整个脉络、表达力最强,但需要伴随随机洗牌来消除顺序偏差,训练和推理的开销也明显更大;最大池化像一场“每道题只取最响亮回答”的选举:计算比 LSTM 轻、表达比均值犀利,善于保留邻居群体中最突出的特征。

从表达能力看,均值聚合是典型的线性操作,对特征做的是“压缩式”融合,表达能力相对有限;LSTM 聚合借助门控记忆可以学习复杂的序列依赖,表达能力最强;最大池化通过 MLP 引入非线性,再以 max 选取显著维度,表达能力通常强于均值。从计算复杂度看,均值最轻,最大池化次之,LSTM 最重。实践中的选择依据也非常直白:图很大、追求训练速度,优先均值;邻居特征分布差异大、需要抓重点,考虑最大池化;想要最强的表达力且算力充足,再上 LSTM。

hv(k)=σ(W⋅AGG⁡({hv(k−1)}∪{hu(k−1):u∈N(v)}))h_v^{(k)} = \sigma\left(W \cdot \operatorname{AGG}\left(\{h_v^{(k-1)}\} \cup \{h_u^{(k-1)} : u \in \mathcal{N}(v)\}\right)\right)

1. 框架中的 $\operatorname{AGG}(\cdot)$:一个抽象接口,三种聚合方式都是它的具体实现。

AGG⁡(⋅)\operatorname{AGG}(\cdot)

2. MEAN vs LSTM vs MAX:分别对应问卷调查、序列深聊、逐题选最强三种信息融合策略。

MEAN⁡vsLSTM⁡vsmax⁡\operatorname{MEAN} \quad \text{vs} \quad \operatorname{LSTM} \quad \text{vs} \quad \max

3. 外层 $\sigma(W \cdot)$:无论哪种 AGG 内部如何计算,输出都会再经过共享的线性层与激活,统一到节点表征空间。

σ(W⋅⋅)\sigma(W \cdot \cdot)

如果把图神经网络比作一个调研团队,那么聚合器就是团队里每个人的“询问风格”。聪明的团队从不会只带一种风格出门——均值负责快速摸底,LSTM 负责深度挖掘,池化负责锁定关键线索。理解了三者的差异,你就能为具体任务挑选最趁手的工具。

实际应用:调研员的经验推广到全城

调研员在小区里练就的本领,如今被推广到整座城市。消息传开,各行各业都来请教:社交平台想了解用户的兴趣,电商想理解商品之间的关联,药物公司想预测分子的性质。GraphSAGE 之所以能通吃这些场景,是因为它学到的不是“某几个节点的专属特征”,而是一套可迁移的聚合规则——就像调研员学会的不是某栋楼的住户名单,而是“如何跟邻居打听”的通用方法论,见到新小区也能立刻上手。这种能力在学术上叫归纳式学习。

大规模图场景最能体现这套思路的价值。以 Pinterest 的 PinSage 为例,商品图拥有数十亿节点,根本不可能一次性计算整张图。GraphSAGE 通过随机采样一小批邻居,把每轮计算量牢牢控制住,再在节点间共享聚合器的权重,让模型在“看一眼局部社区”的情况下学习到高质量的商品表征,新上架的商品也能即刻获得推荐向量。社交网络中的好友推荐、知识图谱里的实体补全、分子图中对原子周围环境的学习,也都沿用了同样的采样与聚合套路。

hv(2)=AGG⁡(2)(hv(1),  {hu(1):u∈N(v)})h_v^{(2)} = \operatorname{AGG}^{(2)}\left(h_v^{(1)},\; \left\{h_u^{(1)} : u \in \mathcal{N}(v)\right\}\right)

1. 一跳特征 $h_v^{(1)}$ 与 $h_u^{(1)}$:经过第一层聚合后,节点和它邻居各自已经带有局部社区信息。

hv(1),  hu(1)h_v^{(1)},\; h_u^{(1)}

2. 第二层聚合器 $\operatorname{AGG}^{(2)}$:把“带着一跳信息的邻居”再融合一次,形成两跳视野的表示。

AGG⁡(2)(⋅)\operatorname{AGG}^{(2)}(\cdot)

3. 感受野扩大:层数越多,每个节点最终特征中包含的“熟人网络”范围越大。

N(2)(v)≜⋃u∈N(v)N(u)\mathcal{N}^{(2)}(v) \triangleq \bigcup_{u \in \mathcal{N}(v)} \mathcal{N}(u)

从一间小小的社区到整座城市的图数据,调研员的经验始终不变:不要试图一眼看穿全局,只需要在局部里反复“打听、筛选、融合”。GraphSAGE 正是把这种朴素智慧变成了可训练、可扩展的算法,让图上的每个节点都能借助邻居的力量,抵达比自己更远的地方。

AI 应用场景

社交网络好友推荐

阶段:特征学习与召回

解决的问题:传统协同过滤只基于用户与内容的交互,冷启动用户没有任何历史行为可依赖,且完全无法利用庞大的好友关系网。GraphSAGE 通过聚合用户关注的博主、互动好友的兴趣特征来生成用户向量,冷启动用户也能得到合理表征。

具体案例:某社交 App 对每位用户随机采样 20 个关注节点,用最大池化聚合这些节点的话题标签特征得到用户兴趣向量,再与内容向量做内积召回,实验期内推荐点击率提升约 15%。

电商商品推荐(PinSage)

阶段:离线训练与线上服务

解决的问题:电商商品图动辄数十亿节点,全图拉普拉斯或邻接矩阵根本装不进单机内存。GraphSAGE 用“采样邻居 + 局部聚合”把每次前向计算限制在固定规模,且新商品上架无需重训即可获得表征,天然适配工业级推荐系统。

具体案例:Pinterest 使用随机游走采样商品“上下文邻居”,聚合器学到 Pin 的向量后,同时支撑相似商品推荐、搜索结果重排等多个线上模块,覆盖数亿月活用户。

分子性质预测

阶段:图级表示学习

解决的问题:分子图的大小随原子数量变化,传统模型无法处理变长输入;同时每个原子的化学环境(邻居)才是决定性质的关键。GraphSAGE 的归纳式聚合天然支持任意大小的分子图,并把局部化学环境编码进原子表征。

具体案例:药物研发团队用 LSTM 聚合每个原子周围邻接原子的特征,再用全局池化得到分子向量,预测化合物水溶性,用于高通量虚拟筛选,显著压缩候选药物范围。

Python 演示

python29 行
import numpy as np def mean_aggregate(center_feat, neighbor_feats):    features = np.vstack([center_feat] + neighbor_feats)    return np.mean(features, axis=0) def lstm_aggregate(center_feat, neighbor_feats):    combined = np.vstack([center_feat] + neighbor_feats)    np.random.shuffle(combined)    gate = np.linspace(0.5, 1.0, len(combined))    return np.sum(combined * gate[:, None], axis=0) / len(combined) def maxpool_aggregate(center_feat, neighbor_feats, W_pool=None):    if W_pool is None:        W_pool = np.array([[1.0, 0.5], [0.5, 1.0]])    features = np.vstack([center_feat] + neighbor_feats)    transformed = features @ W_pool    return np.max(transformed, axis=0) if __name__ == "__main__":    center = np.array([1.0, 0.0])    neighbors = [        np.array([2.0, 1.0]),        np.array([3.0, 2.0]),        np.array([4.0, 0.0])    ]    print("均值聚合结果:", mean_aggregate(center, neighbors))    print("LSTM聚合结果:", lstm_aggregate(center, neighbors))    print("最大池化结果:", maxpool_aggregate(center, neighbors))
目的:用 NumPy 手写实现 GraphSAGE 的三种聚合器,直观展示同一组邻居特征在不同聚合策略下如何被融合成新的中心节点特征。
  1. neighbors = [np.array([2.0, 1.0]), np.array([3.0, 2.0]), np.array([4.0, 0.0])]模拟三个邻居的二维特征向量,即调研员听到的三份“邻居证词”。
  2. features = np.vstack([center_feat] + neighbor_feats)把中心节点自己的特征和所有邻居特征按行堆叠,拼成一个矩阵。
  3. return np.mean(features, axis=0)对矩阵每一列求均值,输出逐维平均后的向量,对应均值聚合。
  4. np.random.shuffle(combined)随机打乱矩阵的行顺序,模拟 LSTM 聚合里的“随机洗牌”。
  5. gate = np.linspace(0.5, 1.0, len(combined))生成一组递增权重,粗略模拟 LSTM 对序列不同位置记忆强度的差异。
  6. transformed = features @ W_pool对每个邻居特征做线性变换,相当于 MLP 的第一层投影。
  7. return np.max(transformed, axis=0)在所有邻居方向逐维取最大值,对应最大池化聚合的输出。

常见误区

误区LSTM 本质是序列模型,输入顺序天然影响输出,所以 GraphSAGE 用 LSTM 聚合时,邻居的排列顺序一定会影响最终特征,这不符合图结构的无顺序特性。

正解GraphSAGE 在把邻居特征送入 LSTM 之前,会先对邻居集合做一次随机排列。每次训练看到的顺序都不同,模型不可能依赖任何一种固定顺序,从而在期望意义上获得置换不变性。就像调研员每次走访前都洗牌决定敲门次序,长期统计下,结论与顺序无关。

为何常见:人们熟悉 LSTM 在自然语言上的顺序敏感性,容易忽略 GraphSAGE 的“随机排列”这个前置处理,把它当成普通序列任务看待。

误区均值聚合只是把邻居特征相加取平均,表达能力弱,效果肯定不如 LSTM 聚合和最大池化,能用复杂模型就不该用简单的。

正解均值聚合虽然简单,但它没有额外参数、训练极快、可解释性强,对邻居特征分布均匀的图非常有效。论文实验也说明,聚合器的选择需要结合图规模和数据特性;在超大图上,均值聚合往往是训练效率与效果的最佳平衡点。

为何常见:追求“更复杂的模型等于更好效果”是常见思维捷径,忽略了实际部署中对计算成本和可解释性的约束。

误区最大池化就是在所有邻居里挑一个特征最强的邻居,把其他邻居的信息全部扔掉,这样太浪费邻居信息。

正解最大池化是“逐元素”取最大值——输出的每个特征维度可能来自不同的邻居。比如三维特征里,第一个维度来自邻居 A,第二个维度可能来自邻居 B。它捕捉的是一群邻居在每个特征维度上最强的响应,相当于“每个问题取最响亮的回答”,并非只用一个邻居。

为何常见:“最大”这个词容易让人联想到“整体最大”,而忽略公式里的 max 是在特征维度方向上执行的,这是一个典型的数学直觉偏差。

误区图神经网络都要依赖整张图的邻接矩阵或拉普拉斯矩阵,GraphSAGE 既然也是图神经网络,应该同样需要全图信息才能训练。

正解GraphSAGE 是归纳式方法,训练时只需采样局部邻居做聚合,不依赖全图结构;训练完成的聚合器可以直接泛化到未见过的节点和新图。而 GCN 属于转导式方法,训练时要依赖全图拉普拉斯,新节点无法直接推理。这是两类模型的重要分水岭。

为何常见:初学者通常先学 GCN 再学 GraphSAGE,容易把 GCN 的“全图依赖”惯性套用到 GraphSAGE 上,忽略它们对图的假设完全不同。

面试题

Q1. GraphSAGE 的核心思想是什么?

单选题 · easy

  • A.将节点特征与整图拉普拉斯矩阵相乘
  • B.采样邻居并聚合其特征更新节点← 正确答案
  • C.对全网节点做全局聚类统一更新
  • D.只利用自身特征忽略邻居的对应信息

答案:B。GraphSAGE 的思路正是“采样邻居 + 聚合特征”来更新节点表示。A 是 GCN 的做法,C 是聚类而非聚合,D 与模型理念相悖。像调研员那样先走访邻居再更新档案,才是核心思想。

Q2. 均值聚合的主要优点是什么?

单选题 · easy

  • A.能捕捉最显著的邻居特征
  • B.简单高效且无需训练参数← 正确答案
  • C.对邻居顺序敏感利用序数关系
  • D.需采样并随机丢弃大量邻居

答案:B。均值聚合只做加法与除法,没有额外参数,训练开销极小。A 是最大池化的优势,C 与事实相反(均值对顺序不敏感),D 把采样描述成缺点也不准确。

Q3. LSTM 聚合如何保证置换不变性?

单选题 · mid

  • A.固定按节点编号顺序读入
  • B.每次随机排列邻居后再读入← 正确答案
  • C.用注意力机制给邻居加权
  • D.对所有邻居特征取最大值

答案:B。GraphSAGE 在送入 LSTM 前对邻居做随机排列,模型无法依赖固定顺序,由此获得置换不变性。A 会让模型学到虚假的顺序依赖,C 是注意力机制的做法,D 是最大池化。

Q4. 最大池化聚合的运算步骤是什么?

单选题 · easy

  • A.先做 MLP 变换再逐元素取最大← 正确答案
  • B.先取均值再通过全连接映射
  • C.将邻居直接拼接后送入 LSTM
  • D.对特征向量做权重归一化处理

答案:A。最大池化先对邻居特征做 MLP 变换(线性层加激活),再在邻居方向上逐元素取最大值。B 描述的是均值聚合的变体,C 是 LSTM 聚合,D 与池化无关。

Q5. GraphSAGE 支持的聚合函数有哪些?

多选题 · mid

  • A.均值聚合、LSTM聚合、最大池化← 正确答案
  • B.均值聚合、注意力聚合、消息传递
  • C.最大池化、均值聚合、LSTM聚合← 正确答案
  • D.LSTM聚合、图卷积、随机游走

答案:AC。GraphSAGE 论文明确支持均值、LSTM、最大池化三种聚合函数,A 和 C 只是顺序不同的同一集合。B 中的注意力聚合不属于原文,D 中的图卷积和随机游走不是聚合函数。

Q6. 关于三种聚合器的表达能力,下列说法正确的是?

单选题 · mid

  • A.均值聚合最强能逼近任意函数
  • B.LSTM聚合表达能力弱于均值聚合
  • C.池化聚合表达能力通常更强些← 正确答案
  • D.三种聚合器表达能力完全相同

答案:C。最大池化通过 MLP 引入非线性并抓取显著维度,表达能力通常强于均值;LSTM 借助门控记忆也具备强表达力,并不弱于均值。因此 A、B、D 均不成立。

Q7. GraphSAGE 适用于大规模图的原因有哪些?

多选题 · mid

  • A.通过采样邻居控制每批计算量← 正确答案
  • B.无需计算全图的拉普拉斯矩阵← 正确答案
  • C.训练时权重在节点间共享复用← 正确答案
  • D.必须保存全图邻接矩阵到内存

答案:ABC。GraphSAGE 每次只采样固定数量邻居,计算量可控;它是归纳式方法,不需要全图矩阵;共享权重让参数规模与图大小解耦。D 恰恰是需要避免的,也是它区别于 GCN 的重要优势。

Q8. LSTM 聚合中随机排列的根本目的是什么?

单选题 · hard

  • A.让 LSTM 记住邻居的先后顺序
  • B.抵消输入顺序使结果置换不变← 正确答案
  • C.减少 LSTM 的参数数量规模
  • D.增加训练时的随机梯度噪声

答案:B。LSTM 本身对顺序敏感,而图邻居没有天然顺序,随机排列恰好抵消了固定顺序带来的虚假信号,使聚合结果满足置换不变性。A 与目的相反,C 与参数无关,D 只是随机排列的副作用而非目的。

Q9. 均值聚合对邻居顺序不敏感的原因是?

单选题 · mid

  • A.采用逐元素取最大值的运算
  • B.加法与除法满足交换律性质← 正确答案
  • C.通过循环神经网络逐步读取
  • D.用注意力权重区分邻居顺序

答案:B。均值聚合的核心运算是加法和除法,两者都满足交换律,因此任何顺序的邻居输入都会得到相同的平均值。A 是池化,C 是 LSTM,D 是注意力机制,均与均值聚合无关。

Q10. 关于最大池化“逐元素”含义的正确理解是?

多选题 · hard

  • A.对每个特征维度分别取最大值← 正确答案
  • B.不同维度可来自不同邻居贡献← 正确答案
  • C.等价于只挑选单个最重要邻居
  • D.输出维度与输入特征维度保持一致← 正确答案

答案:ABD。最大池化的 max 在每个特征维度上独立执行,输出向量的长度与输入一致,不同维度可能来自不同邻居,因此它能保留多个邻居在不同维度的最强信号。C 把逐元素误理解为整体选一个邻居,是典型误区。