假设你是集团总部的分析师,手里握着 20 家子公司的管理权——每家子公司都有几千名员工、每人十几项考核指标。要判断哪家公司值得追加投资,你不可能把几万份员工档案逐一读完,而是让每家子公司交一份不超过一页的年度总结报告。把几千人的信息浓缩成“人均产出、利润率、优秀员工占比”这几个关键数字,这个动作,就是图池化要解决的核心问题。 在 AI 的世界里,一张图就像一家公司:节点是员工,边是员工之间的协作关系,每个节点的特征向量是这位员工的综合绩效。图神经网络(GNN)通过消息传递,让每个节点学到融合了邻居信息的表示。但很多任务关心的是整张图的判断——“这个分子有没有毒性”“这个社交群是不是垃圾广告群”。要把节点级的“员工档案”压缩成图级的“公司报告”,就需要图池化。 最简单的报告写法有两种:把全员指标求平均(全局平均池化),或者只挑最亮眼的单项(全局最大池化)。更聪明的做法是让 AI 自己学:DiffPool 像按部门合并再写分层报告,TopK 像只挑绩效最高的几位员工单独附页。报告的风格直接决定董事会拍板的准确性——这就是图池化方法研究的价值所在。

岗位关联

学懂图池化,你就掌握了图神经网络从“看懂局部”到“看懂全局”的关键一跃。无论做分子筛选、社交分析还是推荐系统,把不规则、变大小的图压缩成有判断力的固定长度向量,都是绕不开的基本功。

目录
  1. 可视化演示
  2. 池化本质:从员工档案到集团报告
  3. 全局平均池化:一份“平均分”报告
  4. 全局最大池化:只写最亮的亮点
  5. DiffPool可学习池化:聪明的HR自动分组
  6. TopK池化:绩效前几名单独附页
  7. 图分类应用:董事会的最终拍板
  8. 池化方法对比:没有最好的报告,只有最合适的
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。

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

系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T

池化本质:从员工档案到集团报告

你是一家集团总部的分析师,负责评估 20 家子公司是否值得追加投资。每家子公司都有一份厚厚的员工档案:几千名员工,每人十几项指标。你不可能一页页读完所有档案,只能让每家交一份一页纸的年度总结——把几千人的信息浓缩成“人均产出”“利润率”“优秀员工比例”。这份浓缩,就是“池化”。

在 GNN(图神经网络)的世界里,一幅图就是一家公司:节点是员工,边是协作关系,每个节点的特征向量是这位员工的综合绩效。经过几层消息传递后,每个节点已经融合了邻居的信息,得到一个表示向量。但很多图分类任务——“这个分子有没有毒性”“这个社交群是不是垃圾广告群”——需要的是整张图的判断,而不是单个节点的判断。

要做图分类,必须解决一个尴尬:不同的图节点数量不同,有的分子只有十几个原子,有的社交网络有几百万用户,而下游分类器要求输入长度固定。图池化就是解决这个问题的“年度总结”,它把任意数量的节点表示压缩成一个固定维度的图表示:

所以,池化不是可选项,而是从“看懂节点”到“看懂整张图”的必经关口。报告怎么写各有风格,但核心目标一致:把团队的千头万绪,浓缩成一张能拍板的纸。

hG=Pool({hv∣v∈V})h_G = \text{Pool}(\{ h_v \mid v \in V \})
  1. 节点集合 $V$图中所有节点的集合,$v$ 是其中任意一个节点,就像一个部门里的每一名员工。
    V={v1,v2,…,v∣V∣}V = \{v_1, v_2, \ldots, v_{|V|}\}
  2. 节点表示 $h_v$节点经过 GNN 层层消息传递后学到的特征向量,相当于员工融合了同事信息后的“综合绩效档案”。
    hv∈Rdh_v \in \mathbb{R}^{d}
  3. 池化算子 $\text{Pool}(\cdot)$把无序的节点特征集合变成一个向量的函数,相当于筛选、汇总员工档案的流程。
    Pool:R∣V∣×d→Rd\text{Pool}: \mathbb{R}^{|V| \times d} \to \mathbb{R}^{d}
  4. 图表示 $h_G$最终代表整张图的向量,就是董事会看到的那页年度报告,后续分类器基于它做判断。
    hG∈Rdh_G \in \mathbb{R}^{d}

全局平均池化:一份“平均分”报告

假设董事会没有特殊偏好,只想先看“公司整体水平如何”。最省事的做法,是把几百名员工每个指标分别求平均,写进报告:“全员平均绩效 3.8 分,平均加班时长 12 小时/周”。一位求稳的分析师会首推这种写法。

这个思路对应图池化里最简单的策略之一:全局平均池化。它把图中所有节点的特征向量逐维度求平均,得到图级表示,公式非常直白:

平均池化没有任何可训练参数,计算极快,对噪声也比较稳健——个别员工绩效异常高或低,对均值影响有限。代价是“太平均”:如果图中只有几个关键节点携带决定性信息,均值会稀释这些关键信号,就像全公司平均工资掩盖了千万年薪和实习生底薪的差距。平均池化适合信号分布均匀、没有极端离群的场景,它也是所有论文默认打底的基线方法。

hG=1∣V∣∑v∈Vhvh_G = \frac{1}{|V|} \sum_{v \in V} h_v
  1. 节点总数 $|V|$图中节点的个数,相当于这家公司的员工总数。
    ∣V∣=N|V| = N
  2. 求和 $\sum_{v \in V} h_v$把所有节点特征向量按同一维度相加,比如把几百名员工的“绩效”维度全部加起来。
    ∑v∈Vhv=h1+h2+⋯+hN\sum_{v \in V} h_v = h_1 + h_2 + \cdots + h_N
  3. 缩放 $\frac{1}{|V|}$用节点总数做除法,得到每个维度的平均值,防止节点越多累加值越大。
    1∣V∣∑v∈Vhv=h1+h2+⋯+hNN\frac{1}{|V|} \sum_{v \in V} h_v = \frac{h_1 + h_2 + \cdots + h_N}{N}
  4. 图向量 $h_G$最终每一维代表“全体节点在该指标上的平均水平”,维度与单节点特征完全一致。
    hG[j]=1N∑v∈Vhv[j]h_G[j] = \frac{1}{N}\sum_{v \in V} h_v[j]

全局最大池化:只写最亮的亮点

另一位分析师风格相反,他认为董事会没耐心看平均数据,只需要记住最亮眼的一件事:“销售冠军李雷,年签单额 7000 万。” 整份报告围绕最强信号展开,别的都可以一笔带过。

这就是全局最大池化的直觉:对特征向量的每个维度,在所有节点中取最大值,拼成图级向量。

最大池化能牢牢抓住判别力最强的特征。比如判断分子是否有毒,往往只需“是否含某个特定官能团”这类信号,最大值恰好能捕捉它。但它对噪声敏感:某个维度若被异常值污染,最大池化会把噪声放大成“虚假亮点”。如果说平均池化是“求稳”,最大池化就是“求锐”,实际任务常把两者拼接或加权结合,既看整体水位,也看峰值信号。

hG=max⁡v∈Vhvh_G = \max_{v \in V} h_v
  1. 运算符 $\max$按“维度”逐一比较,每个位置只保留最大值,而不是把整个向量比出一个数。
    max⁡v∈Vhv[j]=max⁡(h1[j],h2[j],…,hN[j])\max_{v \in V} h_v[j] = \max(h_1[j], h_2[j], \ldots, h_N[j])
  2. 遍历 $v \in V$需要扫过所有节点,相当于把每名员工的每个指标都看一遍。
    v∈{v1,v2,…,vN}v \in \{v_1, v_2, \ldots, v_N\}
  3. 结果维度$h_G$ 的维度与单节点特征相同,只是每个位置被所有节点里的最强信号占据。
    hG∈Rdh_G \in \mathbb{R}^{d}
  4. 信息选择平凡节点的低调数据被丢弃,只有尖子生的数据进入报告,相当于“只报道销冠”。
    丢弃非最大项\text{丢弃非最大项}

DiffPool可学习池化:聪明的HR自动分组

董事会嫌固定模板的报告太死板,希望 AI 根据每家公司的业务形态自己决定怎么总结。DiffPool 的思路是:让 HR 先按业务线把员工分进几个事业部,每个事业部先内部总结,再汇总成集团报告——但“分到哪个事业部”这件事,是模型从数据里学出来的。

DiffPool(可微池化)每一层学习一个软分配矩阵 $S$,把节点软聚类成若干个簇。$S$ 的每一行是一个节点对各个簇的归属概率,softmax 保证概率和为 1。随后按概率合并特征和结构:

这样反复执行,图就被一层层“揉”成越来越小的层次化图,最后一层配合平均或最大池化输出图向量。整个过程完全可微,能随图分类任务端到端训练。DiffPool 相当于给公司配备了一位会看数据说话的 HR,分组策略不是拍脑袋定的,而是根据分类准确率反推出来的。代价是参数明显变多,数据不够时容易过拟合——就像新 HR 没有足够的样本经验,分组反而帮倒忙。

S=softmax(GNNpool(A,X)),X′=S⊤X,A′=S⊤ASS = \text{softmax}(\text{GNN}_{\text{pool}}(A, X)), \quad X' = S^{\top}X, \quad A' = S^{\top} A S
  1. 图结构 $A$ 与特征 $X$邻接矩阵记录谁和谁协作,特征矩阵记录每个人的考核分数。
    A∈RN×N,X∈RN×dA \in \mathbb{R}^{N \times N},\quad X \in \mathbb{R}^{N \times d}
  2. 聚类网络 $\text{GNN}_{\text{pool}}$一个专门的图神经网络担任"HR",结合结构和特征给每个节点打分归组。
    Z=GNNpool(A,X)Z = \text{GNN}_{\text{pool}}(A, X)
  3. 分配矩阵 $S$形状是“节点数 × 簇数”,每行是软概率,表示一个员工按比例分配到几个部门。
    Sik=exp⁡(Zik)∑k′exp⁡(Zik′)S_{ik} = \frac{\exp(Z_{ik})}{\sum_{k'} \exp(Z_{ik'})}
  4. 簇特征 $X' = S^{\top}X$按概率把节点特征加权求和,得到每个簇(事业部)的总结向量。
    Xk′=∑iSikXiX'_{k} = \sum_{i} S_{ik} X_{i}
  5. 结构重算 $A' = S^{\top} A S$把节点间的连接映射成簇与簇之间的连接强度,生成一张更小的“部门协作图”。
    Akl′=∑i,jSikAijSjlA'_{kl} = \sum_{i,j} S_{ik} A_{ij} S_{jl}

TopK池化:绩效前几名单独附页

还有一种更“精兵政策”的报告风格:不分组、不平均,直接在全公司绩效榜上取前 10 名,把他们的档案单列一页,其余员工一笔带过。TopK 池化干的就是这件事。

TopK 池化先让一个打分器评估每个节点的重要性,再按得分保留前 K 个节点,同时丢弃其余节点。打分器本身是可学习的,公式如下:

TopK 的妙处在于“稀疏可微”:它不产生稠密的簇,而是留下一张精简的子图,后续 GNN 层可以继续在子图上传播消息。相比平均池化的“一视同仁”,TopK 能自动过滤无关节点,聚焦任务真正关心的区域。和 DiffPool 相比,TopK 更像“选优”而非“合并”,参数量适中,在社交图和分子图上往往有明显收益,但 K 值需要调参——留太少丢信息,留太多又不够“精选”。

s=σ(Xw/∥w∥),X′=Xidx⊙sidx,A′=Aidx,idxs = \sigma(X w / \| w \|), \quad X' = X_{\text{idx}} \odot s_{\text{idx}}, \quad A' = A_{\text{idx}, \text{idx}}
  1. 打分权重 $w$一个可学习向量,决定特征里哪些维度对“重要度”贡献大。
    w∈Rdw \in \mathbb{R}^{d}
  2. 归一化打分 $X w / \|w\|$先把节点特征投影为一个标量得分,再除以权重范数约束得分尺度稳定。
    s~=Xw∥w∥\tilde{s} = \frac{X w}{\|w\|}
  3. 激活函数 $\sigma$把得分压缩到 0 到 1 之间,作为“保留强度”。
    s=σ(s~)∈(0,1)s = \sigma(\tilde{s}) \in (0,1)
  4. 索引 $\text{idx}$得分最高的前 K 个节点的下标,相当于绩效榜上的名次。
    idx=argtopK(s)\text{idx} = \text{argtop}_K(s)
  5. 特征保留 $X' = X_{\text{idx}} \odot s_{\text{idx}}$挑出前 K 个节点,并按保留强度缩放特征,名次越靠前贡献越大。
    Xi′=Xidxi⋅sidxiX'_{i} = X_{\text{idx}_i} \cdot s_{\text{idx}_i}
  6. 子图结构 $A_{\text{idx}, \text{idx}}$只保留这 K 个节点之间原有的连边,形成稀疏子图。
    A′=A[idx,idx]A' = A[\text{idx}, \text{idx}]

图分类应用:董事会的最终拍板

无论用哪种方式写报告,最终目的是让董事会拍板。在 AI 里,“拍板”的组件是一个分类器:它读入池化产生的图级向量 $h_G$,输出“这家公司是好公司还是坏公司”的概率。

以分子属性预测为例:一个分子被建模成图,原子是节点,化学键是边,原子的电荷、元素类型是节点特征。GNN 做消息传递,池化层把分子压缩成图向量,最后接一个多层感知机输出类别概率。整个过程端到端优化:

在社交图分类里流程完全一致:一张社区子图经过同样的 GNN + 池化,判断它是否属于垃圾广告群。两者的共同点是:图大小不固定,池化把不规则图“归一”成固定向量;图结构差异大,池化负责留下真正影响分类的结构。可以说,池化层是“报告写法”,分类器是“董事会”——报告写得好不好,直接决定董事会判断准不准。

y^=MLP(hG),L=−∑cyclog⁡y^c\hat{y} = \text{MLP}(h_G), \quad \mathcal{L} = - \sum_{c} y_c \log \hat{y}_c
  1. 图向量 $h_G$池化后得到的固定长度向量,就是那页年度报告。
    hG∈Rdh_G \in \mathbb{R}^{d}
  2. 分类器 $\text{MLP}$多层感知机,把报告映射到每个类别的得分,相当于董事会按报告打分的流程。
    z=MLP(hG)z = \text{MLP}(h_G)
  3. 概率输出 $\hat{y}$经过 softmax 后的各类别概率,表示“是好公司的把握有多大”。
    y^c=exp⁡(zc)∑c′exp⁡(zc′)\hat{y}_c = \frac{\exp(z_c)}{\sum_{c'} \exp(z_{c'})}
  4. 交叉熵损失 $\mathcal{L}$比较预测概率与真实标签 $y$ 的差距,训练时不断缩小这个差距。
    −∑cyclog⁡y^c- \sum_{c} y_c \log \hat{y}_c
  5. 端到端更新损失反向传播,同时更新 GNN、池化层、分类器的参数——报告写法本身也在被优化。
    θ←θ−η∇θL\theta \leftarrow \theta - \eta \nabla_\theta \mathcal{L}

池化方法对比:没有最好的报告,只有最合适的

不同的老板偏爱不同的报告风格。老派老板喜欢平均分,看重整体水位;猎头型老板只看最亮的明星;精细化老板要分层或精选。池化方法没有绝对优劣,只有合不合适。

固定池化(平均、最大)零参数、速度快、可解释性强,但无法针对任务调整“报告重点”;可学习池化(DiffPool、TopK)能自适应筛选或合并重要结构,往往在分子属性预测和社交图分类上超过固定池化,但参数更多、更依赖训练数据规模。一种工程技巧是把两种固定池化组合,像“重点分明”的报告同时给出平均分和最高分:

选型经验可以概括为:数据量小、求稳妥,先用平均池化打基线;数据充足、图结构复杂,换 DiffPool 或 TopK;信号稀疏且关键特征明确,最大池化或 TopK 更有优势。没有银弹,只有对比实验才能给出答案。所以,在真实项目里选池化时,先把自己当成集团分析师:报告是给谁看的、什么信息最能影响决策,再挑对应的“总结方式”。

hG=α⋅1∣V∣∑v∈Vhv+(1−α)⋅max⁡v∈Vhvh_G = \alpha \cdot \frac{1}{|V|} \sum_{v \in V} h_v + (1 - \alpha) \cdot \max_{v \in V} h_v
  1. 平均分量 $\frac{1}{|V|}\sum_v h_v$反映整体水平,相当于报告里的“全员平均绩效”。
    mean=1N∑vhv\text{mean} = \frac{1}{N}\sum_{v} h_v
  2. 最大分量 $\max_v h_v$捕获最强信号,相当于报告里的“年度销售冠军”。
    max=max⁡vhv\text{max} = \max_{v} h_v
  3. 平衡系数 $\alpha$取值 0 到 1,控制两种风格的比例,好比董事会说“我七成看重平均、三成看重亮点”。
    α∈[0,1]\alpha \in [0, 1]
  4. 实际调参$\alpha$ 可用验证集搜索,或直接拼接两个向量让分类器自己学权重,效果往往更好。
    hG=[mean; max]h_G = [\text{mean}; \ \text{max}]

AI 应用场景

分子属性预测

阶段:特征工程与模型推理

解决的问题:传统药物筛选靠湿实验测定化合物属性,周期长、成本高。AI 把分子建模为图(原子是节点、化学键是边),用 GNN 学习原子级表示,再用图池化得到分子级向量,几毫秒即可预测水溶性、毒性等属性。好比把“每个原子的简历”浓缩成“整个分子的体检报告”,帮助药企提前筛除不合格候选物。

具体案例:某 AI 制药团队用“GNN + 全局平均池化”作为基线预测化合物水溶性,在公开数据集上 MAE 降到 0.6 以内;随后换成 TopK 池化,对含关键官能团的分子预测精度进一步提升,预筛效率提高约 30%。

社交图分类

阶段:模型推理与评估

解决的问题:社交平台上垃圾广告群、异常组织难以用固定规则识别,因为它们的结构千变万化。基于图池化的分类模型把每个群组建模为图,自动压缩成图向量后分类,能捕捉“结构异常”这类深层信号——就像从“部门协作图”里看出这家公司是不是皮包公司。

具体案例:某风控团队对 100 万+社区子图做二分类(正常 / 广告),对比平均池化与 DiffPool,后者通过层次化聚类把高密度刷屏簇识别出来,召回率从 84% 提升到 92%,同时误报率下降。

Python 演示

python36 行
import numpy as np class GraphPoolDemo:    """用 numpy 实现三种图池化方式的对比演示。"""     def __init__(self, n_nodes=6, feat_dim=4, seed=42):        rng = np.random.default_rng(seed)        # 模拟 6 个节点,每个节点 4 维特征        self.features = rng.normal(size=(n_nodes, feat_dim))        # 模拟节点重要度得分(TopK 打分器的输出)        self.scores = rng.uniform(0, 1, size=n_nodes)     def average_pool(self):        """全局平均池化:对节点维度求均值。"""        return self.features.mean(axis=0)     def maximum_pool(self):        """全局最大池化:对节点维度取最大值。"""        return self.features.max(axis=0)     def topk_pool(self, k=3):        """TopK 池化:按得分保留前 k 个节点,并缩放特征。"""        idx = np.argsort(self.scores)[::-1][:k]        kept = self.features[idx] * self.scores[idx][:, None]        return kept, idx if __name__ == "__main__":    demo = GraphPoolDemo(n_nodes=6, feat_dim=4)    print("节点特征矩阵:\n", demo.features)    print("\n全局平均池化结果:\n", demo.average_pool())    print("\n全局最大池化结果:\n", demo.maximum_pool())    kept, idx = demo.topk_pool(k=2)    print("\nTopK 选中的节点索引:", idx)    print("TopK 池化结果:\n", kept)    print("\n平均池化输出形状:", demo.average_pool().shape,          "| TopK 输出形状:", kept.shape)
目的:用 numpy 模拟图上的平均、最大、TopK 三种池化操作,直观对比它们的输出差异与形状变化。
  1. self.features = rng.normal(size=(n_nodes, feat_dim))生成模拟的节点特征矩阵,每行是一个节点、每列是一个维度,对应“员工的绩效档案”。
  2. return self.features.mean(axis=0)沿节点维度求平均,得到图级向量,对应“全员平均绩效”。
  3. return self.features.max(axis=0)逐维度取最大值,捕获最强信号,对应“只写销冠”。
  4. idx = np.argsort(self.scores)[::-1][:k]对重要度降序排列,取前 k 个下标,就是 TopK 选人环节。
  5. kept = self.features[idx] * self.scores[idx][:, None]选出节点特征并按得分缩放,名次越靠前贡献越大。
  6. demo = GraphPoolDemo(n_nodes=6, feat_dim=4)构造 6 个节点、4 维特征的小图,方便观察池化前后变化。
  7. print("平均池化输出形状:", demo.average_pool().shape, ...)展示平均/最大池化无论输入多少节点输出形状固定,这是分类器能处理变长图的关键。

常见误区

误区我以为图池化就是类似 PCA 或者抽样,目的是把模型参数和计算量降下来,省显存省时间,和最终分类效果关系不大。

正解池化的首要目标是“把节点级表示变成图级表示”,从而支撑图分类,降维只是顺带的副产品。在信息压缩过程中,保留什么、丢弃什么会直接决定分类器的判断。就像公司年度总结,写报告时重点选错了,董事会就可能误判公司好坏。

为何常见:GNN 本身节点多、计算量大,容易让人把池化类比成 CNN 里的下采样,误以为它只是加速手段。

误区最大池化能抓住最强特征,平均池化会把强特征稀释掉,所以实际任务里无脑选最大池化就对了。

正解两种策略各有适用场景。信号稀疏且关键时最大池化占优;特征中噪声较多、每个节点信息都重要时,平均池化更稳健。很多论文的结论是两者互补,拼起来用反而更好,类似报告里既写平均绩效又写销冠。

为何常见:直观上“最强信号 = 最关键信息”容易让人忽略噪声风险,也忽略了某些数据集的判别信息分布在所有节点上。

误区图像领域不是有最大池化和平均池化吗?图池化应该就是把节点排成网格,然后滑窗取最大值。

正解图像是规则的网格,邻居固定,池化窗口可以直接滑动;图没有天然顺序,节点邻居数量不等,还有复杂的拓扑关系。图池化必须定义在“任意图”上:要么对所有节点做全局聚合,要么学习如何选择或合并节点,完全无法套用 CNN 的滑窗思维。

为何常见:因为名字里都有“池化”二字,初学者容易把图像处理的经验直接迁移到图上,忽略了底层数据结构的不同。

误区TopK 池化嘛,肯定是看节点特征向量哪个维度的数值大就保留哪个节点,原始特征值就代表重要性。

正解TopK 靠一个可学习打分器 $s = \sigma(Xw/\|w\|)$ 评估重要性,打分器经过端到端训练,能结合节点在图中聚合到的结构信息打分,而不是单纯比较原始特征大小。比如一个社交节点自身特征平淡,但它连接了大量关键用户,经过 GNN 聚合后得分会很高。

为何常见:只看名字容易望文生义,以为 TopK 就是“取最大特征”;实际上它的重要度定义与任务目标深度绑定。

误区可学习池化比固定池化“高级”,所以什么时候都用 DiffPool,数据少也能靠模型自身能力赢过平均池化。

正解DiffPool 引入了较多额外参数(聚类网络、分配矩阵),在小数据集上很容易过拟合,性能反而不如零参数的全局平均池化。选择可学习池化的前提是有足够监督信号和充分训练,否则“聪明”的 HR 没有足够样本历练,分出来的组未必合理。

为何常见:人们容易把“模型更复杂”等同于“模型更好”,忽略了偏差-方差权衡。

面试题

Q1. 图池化的核心目标是什么?

单选题 · easy

  • A.减少图神经网络的参数量
  • B.将节点级表示压缩为图级表示← 正确答案
  • C.加速图数据集的读取速度
  • D.增加图的节点数量便于训练

答案:B。图池化的本质是把“员工档案”浓缩成“公司报告”,即将节点级表示压缩为图级表示,从而支撑图分类任务。减少参数量和加速读取只是顺带效果,不是核心目标;增加节点数量更是与池化方向相反。

Q2. 全局平均池化得到的图表示 $h_G$,每个维度的值等于什么?

单选题 · easy

  • A.所有节点该维度的最大值
  • B.所有节点该维度的最小值
  • C.所有节点该维度的平均值← 正确答案
  • D.随机某一个节点的值

答案:C。平均池化就是把所有节点特征按维度求均值,相当于全公司绩效取平均。最大值和最小值分别是最大池化与最小池化的逻辑,随机取值则会丢失信息,都不正确。

Q3. 与平均池化相比,全局最大池化的主要特点是?

单选题 · easy

  • A.保留最强特征信号← 正确答案
  • B.对所有特征一视同仁
  • C.输出结果的维度变小
  • D.不需要节点特征

答案:A。最大池化逐维度取最大值,保留最强的判别信号,好比报告只写销冠的业绩。B 是平均池化的特点;输出维度与单节点特征相同,不会变小;没有节点特征,任何池化都无法进行。

Q4. DiffPool 的核心思想是什么?

单选题 · mid

  • A.按固定比例随机丢弃节点
  • B.学习节点到簇的软分配并合并← 正确答案
  • C.对所有节点做算术平均
  • D.把图展开成序列再卷积

答案:B。DiffPool 通过一个 GNN 学习软分配矩阵 $S$,把节点按概率分配到若干簇,再合并特征和结构,类似 HR 把员工分进事业部。随机丢弃、算术平均、展成序列都不属于 DiffPool 的机制。

Q5. TopK 池化保留节点的依据是什么?

单选题 · mid

  • A.节点的原始度数
  • B.节点在图中出现的位置
  • C.可学习打分器给出的重要度← 正确答案
  • D.节点特征的随机采样

答案:C。TopK 用一个可学习的打分器 $s = \sigma(Xw/\|w\|)$ 评估节点重要性,按得分保留前 K 个节点。原始度数、位置、随机采样都没有经过任务驱动的端到端学习,无法自适应筛选关键结构。

Q6. 下列属于固定池化(不可学习)方法的有哪些?

多选题 · mid

  • A.全局平均池化← 正确答案
  • B.全局最大池化← 正确答案
  • C.DiffPool
  • D.TopK池化

答案:AB。全局平均池化和全局最大池化没有任何可训练参数,是典型的固定池化策略。DiffPool 和 TopK 都引入了可学习的聚类网络或打分器,属于可学习池化,故选 A、B。

Q7. 关于图池化在图分类中的作用,下列说法正确的有哪些?

多选题 · mid

  • A.池化产生统一的图级向量供分类器使用← 正确答案
  • B.池化可以消除图节点数量不固定的问题← 正确答案
  • C.池化后还需要对每个节点单独分类
  • D.池化层无法与GNN一起训练

答案:AB。池化的输出是固定维度的图级向量,天然解决了节点数量不固定问题,A、B 正确。池化后是对整张图分类,不再对每个节点单独分类,C 错;DiffPool 和 TopK 等可学习池化完全可以端到端训练,D 错。

Q8. 在分子属性预测与社交图分类中,可学习池化效果优于固定池化的主要原因是?

单选题 · hard

  • A.可学习池化随机挑选节点
  • B.可自适应筛选或合并任务相关结构← 正确答案
  • C.可学习池化不需要图结构信息
  • D.可学习池化输出维度总为1

答案:B。可学习池化通过端到端训练,能根据任务自动筛选关键节点(TopK)或合并结构(DiffPool),捕捉任务相关的拓扑模式。随机挑选没有意义;可学习池化同样依赖图结构;输出维度也不是总为 1。

Q9. 关于固定池化与可学习池化的取舍,下列说法正确的有哪些?

多选题 · hard

  • A.固定池化简单可解释且几乎无额外参数← 正确答案
  • B.可学习池化在数据充足时更灵活← 正确答案
  • C.小数据集上可学习池化更易过拟合← 正确答案
  • D.固定池化永远优于可学习池化

答案:ABC。固定池化零参数、好解释,适合做基线;可学习池化参数多,数据充足时能自适应任务;数据太少时反而容易过拟合。D 过于绝对,实验证明在分子和社交图任务上可学习池化往往更优,故选 A、B、C。

Q10. 在 TopK 打分公式 $s=\sigma(Xw/\|w\|)$ 中,除以 $\|w\|$ 的主要目的是什么?

单选题 · extreme

  • A.使得分范围在0到1之间
  • B.约束权重尺度使打分稳定← 正确答案
  • C.使模型训练梯度完全消失
  • D.减少图的连通分量数量

答案:B。除以 $\|w\|$ 是对权重做范数归一化,约束打分尺度不随权重增大而失控,帮助训练稳定。使得分落在 0 到 1 之间是 sigmoid 函数 $\sigma$ 的作用;梯度消失与权重归一化无关,反而有助于缓解训练不稳定;连通分量数量由图结构决定,与打分无关。