新学期,校长要评选“优秀班级”。每个班几十个学生,各科成绩密密麻麻,校长不可能逐张看成绩单,他需要班主任交一份“班级总评”。这份总评必须把全班的信息浓缩成一段话,最好还能公平对比。 图神经网络做图分类时,碰到的难题一模一样:一张图上有几十上百个节点,每个节点都有自己的特征向量,但最终要给整个图打一个标签。怎么把一堆节点特征“浓缩”成一个图级向量?最朴素的三招,就是求和、平均、取最大值——对应班级统计里的“全班总分”“人均分”和“最高分”。 总分反映规模,人均反映水平,最高分反映亮点。三种统计口径没有绝对优劣,只看你想回答什么问题。这篇文章带你彻底看清这三种全局池化的脾气秉性,学会根据任务选对招式。

岗位关联

对 AI 从业者来说,池化策略选对了,图分类模型的精度和可解释性都会上一个台阶;这也是面试中高频考查的基础考点。

目录
  1. 可视化演示
  2. 池化任务定位
  3. 求和池化原理
  4. 平均池化原理
  5. 最大池化原理
  6. 三者对比分析
  7. 任务选择策略
  8. 工程实践要点
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

对比求和、平均、最大三种全局池化对特征图的处理方式与输出差异

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

求和池化:保留全部信息量 将所有位置的特征值累加为单一标量 输出大小与输入规模成正比,保留总量信息 y = sum(x1, x2, ..., xn) 求和池化适合需要保留规模信息的回归任务

池化任务定位

新学期,校长要评选“优秀班级”。每个班几十个学生,各科成绩密密麻麻,校长没法逐张看成绩单,他需要班主任交一份“班级总评”。这份总评必须把全班的信息浓缩成一段话,最好还能公平对比。图神经网络做图分类时也面临同样的难题:图上几十上百个节点,每个节点都有自己的特征向量,但最终要给整个图输出一个标签——该图的“班级总评”。

在 GNN 中,这一环节叫“全局池化”(global pooling),也叫 readout。它把 N 个节点的特征聚合成一个图级向量 h_G,之后接一个简单的分类器就能输出图标签。由于图本身没有天然的顺序,节点编号怎么打乱都不该影响结果,所以池化必须是“置换不变”的——就像班级评语不会因为学生成绩单的摆放顺序而改变。

整个图分类流程是:GNN 逐层做消息传递(相邻节点互传信息、更新自身特征),接着做全局池化,最后过 MLP 分类器。池化是关键的瓶颈环节,它决定哪些信息能“通关”到最后的分类器。三种最基础的操作是求和、平均、最大,它们的形式化定义如下:

所以“班级总评怎么写”这个问题,本质上就是“选什么样的 f”。接下来三种方案,就是三种写评语的策略。

hG=f({hv∣v∈V})\displaystyle h_G = f\left(\{h_v \mid v \in V\}\right)
公式读作:图级向量 h_G 等于某个聚合函数 f 作用在所有节点特征 h_v 的集合上。
  1. h_G(图级向量)输出的图级表示,相当于班主任交给校长的“班级总评”。
    hGh_G
  2. f(聚合函数)对节点集合做聚合的操作,是我们要选择的池化函数,像“总评的写法”。
    f(⋅)f(\cdot)
  3. {h_v | v ∈ V}(节点特征集合)图中所有节点特征的集合,像全班学生的成绩单。
    {hv∣v∈V}\{h_v \mid v \in V\}
  4. V(节点集合)所有节点的集合,像班级全体学生的名单。
    VV

求和池化原理

班长小明汇报:“我们班总分 3560,全校第一!”校长点点头,但心里嘀咕:你们班 60 人,隔壁班才 25 人,总分高难道不是人多吗?求和池化就是小明的逻辑——把所有学生的成绩直接相加。它不关心人数,也不关心分数分布,只是老实巴交地把所有分数加在一起。

求和池化(sum pooling)对每个特征维度独立累加。如果节点特征 h_v 是一个 D 维向量,那么输出向量的第 d 维等于所有节点第 d 维之和。节点越多,累加值自然越大。它的定义如下:

求和池化有两个重要性质:第一,对图大小极度敏感,节点翻倍时累加值近似翻倍;第二,每个节点的信息都完整保留在累加结果中。DeepSets 定理指出,在一定假设下求和是表达力最强的池化——因为只有它以“总量”的形式保留了完整信息。它最适用的场景是:图的大小或计数本身是重要信号。比如“这个分子里有多少原子参与了某个环”——这种计数信息用求和一目了然。

小明报总分没有错,只是听的人要分清楚:这个数字反映的是“班里人多所以总分高”,还是“每个学生真的都很强”。求和池化就是这样一个直白但不“甩锅”的统计量——信息量最完整,但会被图的大小牵着鼻子走。

hG=∑v∈Vhv\displaystyle h_G = \sum_{v \in V} h_v
公式读作:把图中每个节点 v 的特征向量 h_v 逐元素相加,得到图级向量。
  1. Σ(求和符号)对所有节点进行遍历累加,像班长把全班成绩逐张相加。
    ∑v∈V\sum_{v \in V}
  2. v ∈ V(节点的遍历)图中每个节点都会被访问一次,一个不落。
    v∈Vv \in V
  3. h_v(节点特征向量)每个节点的 D 维特征,像每个学生的各科成绩。
    hvh_v

平均池化原理

隔壁班班长小红不服气:“我们班人均 92.3,比你们高!”校长笑了——这个数字公平。平均分去掉了人数的干扰,直接反映班级的“平均战斗力”。平均池化做的正是这件事:求和之后,除以节点总数。

平均池化(mean pooling)是求和的归一化版本:分子还是 Σh_v,分母是节点数 |V|。它回答的问题是“每个节点平均携带多少特征强度”。定义如下:

平均池化的优点是尺度不变:两个规模相差 10 倍的图,平均池化结果在同一量级,方便公平对比。缺点是信号稀释:如果 50 个节点里只有 1 个节点在某维度很强(比如 9.9),其余都在 0.1 附近,平均后约等于 0.3,那个强信号被稀释得几乎看不见。它适合图大小与分类语义无关、需要在不同规模间公平比较的任务。

平均分让不同规模的班级可以同台竞技,但也会掩盖“个别尖子生”的光芒——全校 1000 人里只有一个满分,人均分看不出任何惊艳。平均池化适合回答“整体水平如何”,不适合回答“有没有天才”。

hG=1∣V∣∑v∈Vhv\displaystyle h_G = \frac{1}{|V|} \sum_{v \in V} h_v
公式读作:把所有节点特征累加,再除以节点总数,得到每个维度的平均强度。
  1. |V|(节点总数)图中节点的个数,像班级的人数。
    ∣V∣|V|
  2. 1/|V|(归一化系数)把累加结果按人数分摊,得到“人均值”。
    1∣V∣∑v∈Vhv\frac{1}{|V|} \sum_{v \in V} h_v
  3. Σ h_v(累加节点特征)沿用求和的累加过程,但最后要被人数除。
    ∑v∈Vhv\sum_{v \in V} h_v

最大池化原理

招生办主任老张的汇报材料只有一句话:“我校今年出了一位省状元。” 没人记得平均分排第几,但“省状元”三个字立刻让学校有了辨识度。最大池化就是这种“只报最高分”的策略:每个特征维度,只取所有节点中的最大值。

最大池化(max pooling)对向量的每个维度独立操作,语法上就是“第 d 维的输出 = 所有节点第 d 维特征的最大值”。它构建的图级向量,描述的是“每个特征在图里最极端的表现”:

最大池化擅长检测“是否存在某个模式”:比如分子里有没有一个原子具有超强电负性、点云里有没有一个点代表尖锐突起。它的梯度只在最大值节点上非零,其余节点的梯度是 0——训练时只有“被选中的状元”能收到反馈,其他人原地不动。这种稀疏性在带来专注的同时,也会让部分节点长期得不到更新。

省状元让学校出名,但状元的经验没法代表全校平均水平。最大池化给模型一双“只盯着最亮点”的眼睛,能看清“有没有”,却看不清“普遍如何”。

hG(d)=max⁡v∈Vhv(d),d=1,…,D\displaystyle h_G^{(d)} = \max_{v \in V} h_v^{(d)}, \quad d = 1, \ldots, D
公式读作:图级向量的第 d 维,等于所有节点第 d 维特征中最大的那个值。
  1. h_G^(d)(图级向量第 d 维)输出向量的第 d 个分量,取所有节点该维度的最大值。
    hG(d)h_G^{(d)}
  2. max_{v ∈ V}(在所有节点中取最大)筛选出这个维度上表现最突出的那个节点。
    max⁡v∈Vhv(d)\max_{v \in V} h_v^{(d)}
  3. d = 1, …, D(逐维处理)每个维度独立挑“最强”,互不干扰。
    d=1,…,Dd = 1, \ldots, D

三者对比分析

同一个班级,三种汇报方式讲了三个版本的故事:总分的版本强调“规模”,平均分的版本强调“水平”,最高分的版本强调“亮点”。它们都是真话,但回答的问题完全不同。模型也是一样,池化的选择决定了它眼中的“图”长什么样。

从三个维度横向比较三种池化:

  • 信息保留:求和保留所有节点的完整累加(全景照);平均保留“人均”比例信息(均匀亮度的 HDR);最大只保留每维极值(特写镜头)。
  • 图大小敏感性:求和结果与节点数 |V| 线性相关;平均在理论上完全不受图大小影响;最大同样与图大小无关。
  • 理论表达能力:DeepSets 定理揭示了求和池化特殊的理论地位:

这个定理说明求和在理论上有最强表达能力,但前提是节点特征来自可数空间。在工程实践中,连续特征空间下平均和最大也各有不可替代的价值——它们用损失信息换来了尺度不变性和极值敏感性。

三个版本的故事没有绝对好坏。总分能讲故事但会被人多“推高”,平均分公平但会淹没尖子生,状元吸睛但只有一个人。选哪个,取决于你想让模型相信哪一个版本的“班级叙事”。

f({xv})=ϕ(∑v∈Vψ(xv))\displaystyle f\left(\{x_v\}\right) = \phi\left(\sum_{v \in V} \psi(x_v)\right)
公式读作:任何置换不变函数 f,都可以写成“先对每个节点做映射 ψ,再求和,最后做变换 φ”的形式。求和是其中的核心算子。
  1. ψ(特征映射)先把每个节点映射到高维空间,像把成绩单翻译成多维能力画像。
    ψ(xv)\psi(x_v)
  2. Σ(映射后求和)对映射后的特征求和,这是求和池化的核心地位所在。
    ∑v∈Vψ(xv)\sum_{v \in V} \psi(x_v)
  3. φ(输出变换)对累加结果再做非线性变换,得到最终的预测。
    ϕ(∑v∈Vψ(xv))\phi\left(\sum_{v \in V} \psi(x_v)\right)
  4. f(置换不变函数)只要 f 不依赖节点顺序,几乎都能写成这种“映射 + 求和 + 变换”的形式。
    f({xv})f(\{x_v\})

任务选择策略

体育老师统计跳远成绩时,三种需求对应三种算法:选校队看“最大”(谁跳最远);评优秀班级看“平均”(整体素质);算场地总使用时长看“求和”(总训练量)。同一个数据集,不同任务问不同的问题,就选不同的统计量。

选择池化方式的本质,是明确“任务对图的性质最关心什么”。三种池化对应三类信号:

  • 总量信号 → 求和:图越大信号越强的任务。典型场景如分子量相关的物理性质、社交网络总活跃度。图大小本身就是语义的一部分,丢掉它等于丢了关键信息。
  • 均值信号 → 平均:图大小与语义无关的比较任务。典型场景如不同规模社区的结构密度对比。用平均池化才能学到“密度”而不是“规模”。
  • 极值信号 → 最大:模式存在性检测。典型场景如分子中是否存在危险官能团、点云中是否有尖锐突起。

工程上还有一种常见的兜底方案——把三种池化结果拼接起来,让分类器自己学权重:

拼接策略的代价是维度膨胀和过拟合风险,通常要配合归一化层和 Dropout 使用。如果数据集较小,优先选一种与任务语义最契合的池化,而不是盲目拼接。

体育老师不会同时用三种方式回答同一个问题——他会先想清楚“我要选谁、评什么、算什么”。选池化也一样,先明确任务要哪种信号,再定统计口径。多模态拼接只是兜底方案,不是万能钥匙。

hG=[∑vhv  ∥  1∣V∣∑vhv  ∥  max⁡vhv]\displaystyle h_G = \left[ \sum_v h_v \;\Big\|\; \frac{1}{|V|}\sum_v h_v \;\Big\|\; \max_v h_v \right]
公式读作:三条池化通路各输出一个向量,用符号 ‖ 把它们首尾拼接成一个更长的图级向量。
  1. 三路池化并行同一组节点特征,分别走求和、平均、最大三条通路。
    ∑vhv,1∣V∣∑vhv,max⁡vhv\sum_v h_v, \quad \frac{1}{|V|}\sum_v h_v, \quad \max_v h_v
  2. ‖(向量拼接)把三个 D 维向量首尾相接,得到 3D 维的图级向量。
    [a  ∥  b  ∥  c][a \;\|\; b \;\|\; c]
  3. 维度翻倍节点特征 64 维时,拼接后是 192 维,后续分类器参数量相应增加。
    D→3DD \to 3D

工程实践要点

全校 30 个班同时交成绩,教务处要批量处理。每班人数不一样,成绩单长短不齐,怎么快速算出每个班的总分、平均分和最高分?教务处的做法是:拿一张最大的表格,所有班级对齐,空着的格子填“缺考”(padding),统计时跳过这些缺考标记(mask)。

深度学习训练要求一批(batch)数据形状对齐。一批里有 32 张图,各自节点数从 10 到 500 不等,无法直接堆成规则的矩阵。标准做法是把所有图 pad 到该批最长的图,再用 mask 标记哪些是真实节点、哪些是 padding。带 mask 的平均池化长这样:

不同池化对 padding 的处理方式不同:求和池化只需乘 mask;最大池化则要把 padding 位置填充为负无穷大,这样 max 运算绝不会选中它们。归一化层和 Dropout 能缓解拼接池化时不同分支梯度量级差异过大的问题。做到这一步,三种池化就能干净地嵌入真实训练流程了。

教务处的“缺考标记”让 30 个参差不齐的班级被统一处理,又不影响统计结果。工程里的 mask 就是这张全校统一表格上的“缺考”章——多一步标记,批量处理才稳。

hG=∑vhv⋅mv∑vmv,mv∈{0,1}\displaystyle h_G = \frac{\sum_v h_v \cdot m_v}{\sum_v m_v}, \quad m_v \in \{0,1\}
公式读作:只累加有效节点(m_v=1 的那些),再除以有效节点个数;padding 节点完全不参与计算。
  1. m_v(有效标记)真实节点取 1,padding 取 0,像成绩单上的“缺考”标记。
    mv∈{0,1}m_v \in \{0,1\}
  2. h_v · m_v(屏蔽无效节点)把 padding 节点的特征清零,不让它污染求和。
    ∑vhv⋅mv\sum_v h_v \cdot m_v
  3. Σ m_v(有效计数)分母是有效节点个数,平均时不会被 padding 把值拉低。
    ∑vmv\sum_v m_v

AI 应用场景

药物分子性质预测

阶段:模型设计(图分类的 readout 层)

解决的问题:预测分子是否有毒、是否易溶于水时,分子图的节点数差异巨大(从十几个到上百个原子)。传统 fingerprint 方法依赖人工设计的分子描述符,费时且丢失拓扑信息。GNN 把分子建模为图后,池化策略的选择直接影响预测质量:如果毒性随原子数增加而增强,用求和池化能保留“规模”信号;如果毒性由某个特定官能团决定,用最大池化更能捕捉关键结构。

具体案例:在 MoleculeNet 的 Tox21 毒性数据集上,研究者对比三种池化后发现,求和与最大池化拼接(sum + max)效果最好,因为分子毒性既与分子大小相关,又依赖于某些关键官能团的存在。这个结论与三种池化的信号语义完全对应。

社交网络异常子图检测

阶段:特征聚合与下游分类

解决的问题:在社交平台上判断一个子图是否为垃圾信息传播群时,子图的大小差异很大(有 5 人的小群,也有 5000 人的大群)。如果直接用求和池化,大群天然得分高,模型学到的是“群大 = 异常”,而不是真正的传播模式。改用平均池化做尺度归一化后,模型才能专注于结构密度和交互模式这些与规模无关的信号。

具体案例:某风控团队对微博转发级联图做异常检测,将 GNN 输出层从求和池化切换为平均池化后,误报率下降了约 20%,因为平均池化让不同规模的级联样本站在了同一条比较基准线上。

3D 点云分类的 PointNet

阶段:局部特征聚合到全局特征

解决的问题:自动驾驶中需要对雷达点云做物体分类(行人、车辆、建筑)。点云是典型的置换不变数据——点的输入顺序没有语义。PointNet 网络用一个朴素的困惑:每个点经过 MLP 提取特征后,如何聚合成整个物体的全局特征?答案就是最大池化:对每个特征维度取所有点的最大值,保留“这个物体最突出的几何特征”。

具体案例:在 ModelNet40 点云分类基准上,PointNet 用最大池化达到了当时的 SOTA 精度。它说明即使是最简单的全局池化,只要与任务语义匹配,也能撑起一个经典模型。

Python 演示

python58 行
import torchimport torch.nn.functional as F  def global_sum_pooling(node_feats, batch):    """求和池化:把每张图的节点特征逐元素相加"""    graph_ids = torch.unique(batch)    pooled = []    for gid in graph_ids:        mask = batch == gid        pooled.append(node_feats[mask].sum(dim=0))    return torch.stack(pooled, dim=0)  def global_mean_pooling(node_feats, batch):    """平均池化:累加后除以该图的有效节点数"""    graph_ids = torch.unique(batch)    pooled = []    for gid in graph_ids:        mask = batch == gid        pooled.append(node_feats[mask].mean(dim=0))    return torch.stack(pooled, dim=0)  def global_max_pooling(node_feats, batch):    """最大池化:每张图每个特征维度取最大值"""    graph_ids = torch.unique(batch)    pooled = []    for gid in graph_ids:        mask = batch == gid        pooled.append(node_feats[mask].max(dim=0).values)    return torch.stack(pooled, dim=0)  def masked_mean_pooling(node_feats, batch, num_graphs):    """带 mask 的平均池化:用 one-hot 矩阵乘法并行聚合"""    n_nodes, dim = node_feats.shape    one_hot = F.one_hot(batch, num_classes=num_graphs).float()    counts = one_hot.sum(dim=0, keepdim=True).transpose(0, 1)    pooled = one_hot.transpose(0, 1) @ node_feats    return pooled / counts.clamp(min=1)  if __name__ == "__main__":    # 两张大图: 图0有3个节点, 图1有2个节点    feats = torch.tensor([        [1.0, 2.0],        [3.0, 4.0],        [5.0, 6.0],        [7.0, 8.0],        [9.0, 10.0],    ])    batch = torch.tensor([0, 0, 0, 1, 1])     print("求和池化:\n", global_sum_pooling(feats, batch))    print("平均池化:\n", global_mean_pooling(feats, batch))    print("最大池化:\n", global_max_pooling(feats, batch))    print("masked平均:\n", masked_mean_pooling(feats, batch, 2))
目的:在一个 5 节点、2 张图的迷你数据集上,分别用循环版和矩阵版实现三种全局池化,验证求和、平均、最大的数学语义与 mask 处理方式。
  1. mask = batch == gid布尔索引一步选出当前图的所有节点,这是循环版池化的核心筛选手段。
  2. node_feats[mask].sum(dim=0)对选中的节点特征沿第 0 维求和,得到该图的图级向量。
  3. node_feats[mask].max(dim=0).values沿第 0 维取最大值,.values 取出最大值本身而非索引。
  4. F.one_hot(batch, num_classes=num_graphs)把每个节点的图编号转成 one-hot 向量,天然就是一个可微的 mask 矩阵。
  5. one_hot.transpose(0, 1) @ node_feats矩阵乘法一次完成所有图的分组求和,比循环快得多。
  6. pooled / counts.clamp(min=1)除以每张图的有效节点数得到平均池化,clamp 防止除零。

常见误区

误区初学者看到平均池化做了归一化,就觉得它比求和“高级”,于是无脑用平均。理由是“归一化总不能错吧?”

正解归一化是双刃剑。如果“图的大小”本身就是重要信息(比如分子越大毒性越强),平均池化反而把关键信号抹掉了。总分和人均分各有用途,不能说人均分一定比总分“高级”。选池化前先问:任务关心的语义与图的规模有关吗?

为何常见:教材和博客里反复强调平均池化“尺度不变”这个优点,忽略了在某些任务里尺度本身就是需要保留的特征。

误区以为最大值是“精华”,其他节点都是冗余,丢了不可惜。于是觉得最大池化是信息保留最多的方式。

正解最大池化只保留极值,丢弃了所有非极值节点的信息。如果某特征在所有节点上都是 0.5 附近,最大值 0.52 和其余 0.49 差距很小,但 0.49 全部被丢弃,这损失了大量分布信息。最大池化适合“是否存在”类检测,不适合“分布描述”类任务。

为何常见:直觉上“最大 = 最强 = 最重要”,但特征向量的每个维度都有独立语义,极值未必代表最全面的信息。

误区看到 DeepSets 定理说求和是“万能聚合器”,就以为求和池化在所有任务上都碾压其他两种。

正解DeepSets 定理的前提是“节点特征来自可数空间且相互独立”。实际中节点特征来自神经网络输出,是连续空间,且节点之间存在结构依赖。求和确实有最强的理论表达能力,但工程上它会把图大小的差异直接混入特征,导致模型对大图小图区别对待,有时这正是你不需要的偏差。

为何常见:只看了定理的结论,忽略了前提条件,也混淆了“理论表达能力”和“实际任务表现”两回事。

误区既然每个池化各有优缺点,那就全拼起来,1+1+1 一定大于 1。

正解拼接确实常用(比如 concat(sum, mean, max)),但维度膨胀会带来参数量上升和过拟合风险。更重要的问题是三种池化的梯度量级差异大(求和梯度通常远大于平均),不配合归一化层会导致训练不稳定。拼接是兜底方案,不是免费的午餐。

为何常见:贪多求全的心理,加上看到很多论文这么用就照搬,没深入思考背后的梯度和正则化代价。

误区从代码角度看三种池化都是一行 torch 操作,有人认为它们只是把张量从 [N, D] 变成 [D],随便选一种就行。

正解池化方式直接决定模型对图性质(大小、密度、极值)的敏感度。比如社区检测用求和池化,大社区天然特征值高,模型学到的是“大”而不是“密”;改用平均池化才能学到真正的密度特征。一行代码的背后是完全不同的“观察视角”。

为何常见:代码的简洁掩盖了语义的巨大差异——就像“总分、平均分、最高分”在 Excel 里都是一行公式,但回答的是完全不同的问题。

面试题

Q1. 图分类任务中,把节点特征聚合成图级向量的操作叫什么?

单选题 · easy

  • A.图卷积层
  • B.全局池化层← 正确答案
  • C.图注意力层
  • D.图采样层

答案:B。图卷积层负责更新节点特征,只有全局池化(readout)把 N 个节点特征合并成 1 个图级向量。类比:GCN 是“每个学生自己学习”,池化是“班长汇总全班成绩”。

Q2. 求和池化最显著的特点是?

单选题 · easy

  • A.对图大小完全不敏感
  • B.节点越多累加值越大← 正确答案
  • C.只保留最大的特征值
  • D.自动忽略孤立节点

答案:B。求和池化把所有节点特征累加,节点数量直接参与累加,图越大结果越大。对应“全班总分”,60 人的班天然比 25 人的班总分高。选项 C 描述的是最大池化。

Q3. 平均池化与求和池化相比,核心区别是什么?

单选题 · mid

  • A.平均池化不保留任何特征信息
  • B.做了归一化去除了图大小影响← 正确答案
  • C.平均池化只保留每个维度的极值
  • D.平均池化的计算复杂度更低

答案:B。平均池化在求和基础上除以节点数 |V|,相当于“人均分”,去除了节点数的影响,因此对图大小不敏感。注意 A 错误——平均池化保留了比例信息,只是损失了总量信息。

Q4. 最大池化的梯度回传特性是?

单选题 · mid

  • A.所有节点都收到等量梯度
  • B.只有最大值节点收到梯度← 正确答案
  • C.梯度均匀分配给全部节点
  • D.梯度仅在训练末期才存在

答案:B。最大池化每个维度只选最大值,反向传播时梯度只流向被选中的节点,其余节点梯度为 0。这导致梯度稀疏,某些节点长期得不到更新,就像“只有状元被表扬”。

Q5. 以下哪些任务场景适合用求和池化?

多选题 · mid

  • A.分子毒性随原子数量增加而增强← 正确答案
  • B.不同规模社交网络的密度对比
  • C.统计图中某种结构出现的次数← 正确答案
  • D.检测图中是否存在危险官能团

答案:AC。求和池化对“总量 / 次数 / 规模”敏感。A(原子数影响毒性)和 C(计数)是典型求和场景。B 需要尺度归一化,应选平均池化;D 是模式存在性检测,更适合最大池化。

Q6. 根据 DeepSets 定理,当节点特征来自可数空间时,哪种池化能够逼近任意置换不变函数?

单选题 · hard

  • A.平均池化
  • B.求和池化← 正确答案
  • C.最大池化
  • D.三种池化都等价

答案:B。DeepSets 定理证明 f({x}) ≈ φ(Σψ(x)),求和是所有置换不变聚合器中表达力最强的一种,因为它以总量形式保留了最完整的信息。平均和最大都做了信息压缩,表达能力受限。

Q7. 将求和、平均、最大三种池化结果拼接的主要风险是?

单选题 · mid

  • A.计算复杂度指数级增长
  • B.向量维度膨胀导致过拟合← 正确答案
  • C.池化结果失去置换不变性
  • D.模型完全无法收敛训练

答案:B。三种池化各输出 D 维,拼接后变成 3D 维,后续分类器参数随之膨胀,小数据集上容易过拟合,通常需配合归一化和 Dropout。复杂度是线性增长而非指数,置换不变性也不受影响。

Q8. 关于三种池化的信息保留特性,下列说法正确的是?

多选题 · hard

  • A.求和池化保留所有节点的完整累加信息← 正确答案
  • B.平均池化保留特征的相对比例信息← 正确答案
  • C.最大池化保留每个维度的极值信息← 正确答案
  • D.求和池化做了归一化尺度处理

答案:ABC。求和保留全部累加信息;平均保留了“人均水平”的比例信息;最大保留每维极值。D 错误——归一化是平均池化的特性,求和池化没有做任何尺度归一。

Q9. 批处理中不同图节点数不同,实现平均池化时如何处理 padding 节点?

单选题 · easy

  • A.把 padding 节点也参与平均
  • B.用 mask 标记只计算有效节点← 正确答案
  • C.随机丢弃部分真实节点
  • D.将 padding 当零向量参与计算

答案:B。padding 节点是无效填充,不能进入统计。用 mask(0/1 标记)把 padding 排除。类比:各班人数不同,统计人均分时不能把空位当 0 分学生算进去——那会把平均值拉低。

Q10. 五个节点的特征为 (1,2)、(3,4)、(5,6)、(7,8)、(9,10),以下计算结果正确的是?

多选题 · extreme

  • A.求和池化结果为 (25, 30)← 正确答案
  • B.平均池化结果为 (5, 6)← 正确答案
  • C.最大池化结果为 (9, 10)← 正确答案
  • D.求和池化结果为 (9, 10)

答案:ABC。逐维累加:(1+3+5+7+9, 2+4+6+8+10) = (25, 30),A 对 D 错。平均:25÷5=5,30÷5=6,B 对。最大:第一维 max(1,3,5,7,9)=9,第二维 max(2,4,6,8,10)=10,C 对。