一位老师傅接到一道难题:客人问“这锅汤鲜不鲜”,可锅里躺着排骨、玉米、白萝卜、香菇……几十种食材。师傅不会夹起一块排骨单独回答,而是舀起一勺汤,用心品味整锅交融的滋味——用舌尖把几十种味道凝成一个“鲜”字。这个“凝成一个答案”的动作,就是本文的主角:图池化。 在 GNN 的世界里,节点是食材,边是食材之间的搭配关系,消息传递层让食材在锅里互相浸润。但像“这个分子有没有毒性”“这张社交网络图是不是欺诈群”这类任务,需要的是整张图的结论。我们必须把几十个节点向量浓缩成一个图级向量,喂给下游分类器。实现这个目标有三种流派:全局池化像“一锅端”浓缩;层次池化像“先小锅后大锅”逐层合并;可学习池化则像经验老到的师傅,根据口味学出配比。 这三种流派各有脾气,选错会直接影响图分类、分子属性预测等任务的精度。下文会用炖汤的线索贯穿始终,陪你从“节点级直觉”一路走到“图级实战”。

岗位关联

掌握图池化,你就掌握了让 GNN 从“看懂节点”迈向“看懂全局”的临门一脚——图分类、分子属性预测等落地任务的核心关卡。

目录
  1. 可视化演示
  2. 池化背景意义
  3. 全局池化原理
  4. 层次池化原理
  5. 可学习池化
  6. 图分类实战
  7. 分子预测场景
  8. 工程调优策略
  9. 池化发展方向
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

动态演示图池化的核心机制,通过基础/核心/应用/扩展四种模式展示关键概念与交互流程。

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

图池化:图池化的 图池化的核心目标与必要性 全局池化的简单聚合策略 核心机制可视化 图池化整体架构与关键组件

池化背景意义

下锅前,每一样食材都是独立的:玉米是玉米,排骨是排骨。可等汤炖好,夹出一块玉米问“这锅汤好不好喝”,就是问错了对象——整锅汤的风味属于整锅,不属于任何一味食材。GNN 经过几层消息传递后也是如此:每个节点吸收了邻居的信息,变成携带上下文特征的向量。但“这张图属于哪个类别”这样的问题,无法由单个节点回答——答案藏在全局结构里。

在 GNN 的输出层,我们面对的就是一堆“食材”:每个节点有一个特征向量 $h_v$。要回答图级问题,必须把这些节点向量凝成一个图级向量 $h_G$。这个“凝练”操作,就是图池化。它在结构上完成了从“节点级表示”到“图级表示”的跃迁。

形式化地说,图池化是一个聚合函数,输入是全部节点特征,输出是一个固定维度的向量。无论图中节点有多少个,输出维度始终保持不变,这为下游分类器提供了统一尺度的输入。

就像浓缩鲜汤必须保留对判定最有用的滋味,图池化也要在“保留关键信息”与“压缩冗余”之间找到平衡。选对了聚合方式,下游的图分类器才能从容作答。

hG=AGG({hv∣v∈V})h_G = \mathrm{AGG}(\{ h_v \mid v \in V \})
这个公式是所有池化方法的通用抽象:AGG 可以是求和、取平均、取最大值,也可以是学出来的复杂映射。
  1. 节点集合$V$ 表示图中全部节点的集合,$v \in V$ 表示对每个节点逐一处理。
    V={v1,v2,…,v∣V∣}V = \{v_1, v_2, \dots, v_{|V|}\}
  2. 节点特征$h_v$ 是节点 $v$ 在图神经网络最后输出的特征向量,维度为 $d$。
    hv∈Rdh_v \in \mathbb{R}^d
  3. 聚合函数$\mathrm{AGG}$ 把所有 $h_v$ 凝成一个图级向量,它是整个池化动作的抽象代号。
    AGG:R∣V∣×d→Rd\mathrm{AGG}: \mathbb{R}^{|V| \times d} \rightarrow \mathbb{R}^d

全局池化原理

最简单的浓缩方法,是把煮好的整锅汤不分青红皂白地全部倒进浓缩器,一勺浓缩液就是整锅汤的“总结”。全局池化正是这样:对所有节点特征统一执行一个固定数学操作,不关心图的内部结构,也不引入任何可学习参数。它把图看成“一袋子特征”,是工程上最常用的起步方案。

求和池化适合图规模相对固定的任务,比如固定骨架的分子;平均池化在节点数变化大的场景中更稳健;最大池化则适合信号稀疏、只有少数节点承载关键信息的图。三种方式都简单高效,但共同的短板是完全忽略节点间的结构关系。

这也解释了为什么一锅端虽快,却会丢掉“食材原本的层次感”。当结构本身承载大量语义时,只看一袋特征会显得力不从心,于是我们走进了更讲究的厨房。

Sum=∑v∈Vhv,Mean=1∣V∣∑v∈Vhv,Max=max⁡v∈Vhv\mathrm{Sum} = \sum_{v \in V} h_v, \quad \mathrm{Mean} = \frac{1}{|V|} \sum_{v \in V} h_v, \quad \mathrm{Max} = \max_{v \in V} h_v
  1. 求和池化把所有节点的特征向量按位相加,图越大结果数值往往越大。
    Sum=∑v∈Vhv\mathrm{Sum} = \sum_{v \in V} h_v
  2. 平均池化先求和再除以节点数量,相当于求“每块食材的平均贡献”,在不同大小的图上更稳定。
    Mean=1∣V∣∑v∈Vhv\mathrm{Mean} = \frac{1}{|V|} \sum_{v \in V} h_v
  3. 最大池化逐维度取所有节点特征的最大值,好比只保留汤里最浓烈的那一味。
    Max=max⁡v∈Vhv\mathrm{Max} = \max_{v \in V} h_v

层次池化原理

更讲究的做法,是先分别炖几小锅:每个密切联系的食材小组各煮成一碗,再把几碗汤合到一起继续熬。这样每一层合汤都保留着“小灶炖出的结构味”,这就是层次池化的思想。它不把节点一次性合并成图,而是先根据结构把节点聚成若干簇,再把簇看作新节点,逐层聚合。

典型实现 DiffPool 的思路是:让图神经网络学习一个分配矩阵 $S$。每个节点按 $S$ 中分配的权重投射到下一层的“簇”上,而不是硬性只归属一个簇。这样每一层都在做“软分组”,既保留了节点间的亲疏关系,又逐步缩小图的规模。

层次池化像小锅逐层合汤,能保留不同尺度的“结构味”,代价是参数更多、训练更复杂。在结构信息至关重要的图数据上,这份精细往往值得;但在小图上,它可能还不如一锅炖来得稳当。

S=softmax(Gθ(A,X)),X′=STX,A′=STASS = \mathrm{softmax}(G_\theta(A, X)), \quad X' = S^T X, \quad A' = S^T A S
  1. 计算分配矩阵$S$ 的行数等于当前节点数,列数等于下一层簇数,$G_\theta$ 是一个图神经网络打分器。
    S∈R∣V∣×KS \in \mathbb{R}^{|V| \times K}
  2. 归一化每行经过 softmax 后和为 1,节点被软性地拆分到多个簇中,而不是只能属于一个簇。
    ∑jSij=1,∀i\sum_{j} S_{ij} = 1, \quad \forall i
  3. 特征聚合$X' = S^T X$ 把节点特征投射成簇特征,每个簇的特征是其内部节点的加权组合。
    X′=STXX' = S^T X
  4. 结构更新$A' = S^T A S$ 把节点间的边关系转换为簇与簇之间的连接强度。
    A′=STASA' = S^T A S

可学习池化

老厨师熬汤久了,凭经验知道“这锅花椒辣味重,就少放一点补味;排骨的鲜反而要多释放”。这种在经验中调整的配比感,就是可学习池化的直觉。它不再手工指定 Sum 或 Mean 的固定规则,而是让网络自己学习每个节点的重要性,把真正重要的信息留下来。

注意力池化先通过打分网络为每个节点算一个分数,再用 softmax 归一化成权重,最后加权求和得到图表示。SAGPool 则更直接:给节点打分后只保留分数最高的前 K 个节点,其余全部丢弃。两者的共同点是:权重和选择都由数据驱动。

这种端到端可学习的能力,让模型适配不同任务,但也需要谨慎:TopK 的 K 是超参数,选太小丢信息、选太大不聚焦;注意力也可能学到偏置。厨师的手艺靠长期训练,模型的手艺则靠数据和算力。

αv=exp⁡(ev)∑u∈Vexp⁡(eu),ev=MLP(hv),hG=∑v∈Vαvhv\alpha_v = \frac{\exp(e_v)}{\sum_{u \in V} \exp(e_u)}, \quad e_v = \mathrm{MLP}(h_v), \quad h_G = \sum_{v \in V} \alpha_v h_v
  1. 打分$e_v$ 是将节点特征 $h_v$ 送入一个多层感知机后得到的标量分数。
    ev=MLP(hv)e_v = \mathrm{MLP}(h_v)
  2. 归一化softmax 将各节点分数转换成和为 1 的注意力权重,分数越高权重越大。
    αv=exp⁡(ev)∑u∈Vexp⁡(eu)\alpha_v = \frac{\exp(e_v)}{\sum_{u \in V} \exp(e_u)}
  3. 加权聚合每个节点特征乘以自身权重后相加,重要节点主导最终图向量。
    hG=∑v∈Vαvhvh_G = \sum_{v \in V} \alpha_v h_v

图分类实战

终于可以起锅上菜。图分类任务好比让食客品尝浓缩高汤后,回答“这是川味还是粤味”——最终要用图级向量给出类别判断。一个典型的图分类模型由三部分组成:GNN 编码器提取节点表示,池化层聚合整图表示,MLP 分类头输出类别概率。

以 GNN 加全局池化为例:GNN 编码器输出节点特征矩阵 $H$,池化层输出图级向量 $h_G$,分类头把它映射到类别空间。整个模型可以端到端训练,反向传播会同时更新 GNN 和池化层的参数。社交网络异常社区识别、场景图语义理解等任务,都遵循这条流水线。

整条链路环环相扣:编码器负责“看懂局部”,池化负责“凝成整体”,分类头负责“给出结论”。正如一锅好汤的最终评判永远在舌尖,图分类模型的成败也常取决于那勺浓缩汁是否够味。

y^=softmax(MLP(hG))\hat{y} = \mathrm{softmax}(\mathrm{MLP}(h_G))
  1. 输入$h_G$ 是池化层输出的图级向量,也是分类头的输入特征。
    hG∈Rdh_G \in \mathbb{R}^d
  2. 多层感知机MLP 将 $d$ 维特征映射为 $C$ 维原始分数,$C$ 是类别数。
    MLP(hG)∈RC\mathrm{MLP}(h_G) \in \mathbb{R}^C
  3. 归一化softmax 把原始分数转化为和为 1 的概率分布,$\hat{y}$ 即预测的类别概率。
    y^c=exp⁡(zc)∑j=1Cexp⁡(zj)\hat{y}_c = \frac{\exp(z_c)}{\sum_{j=1}^{C} \exp(z_j)}

分子预测场景

在药物研发的厨房里,每一味药材就是一个小分子,厨师要回答“这味药材是否安全”,不能只看一颗原子,要看整个化学结构。分子天然就是图:原子是节点,化学键是边。GNN 读取分子图后,每个原子都学到上下文相关的表示;池化则把这些原子表示凝成一个“分子指纹”。

分子池化的选择会直接影响属性预测的精度。常见的做法是把均值池化和最大池化拼接起来,同时保留“整体平均浓度”和“最显著官能团信号”。这类模型可以预测水溶性、毒性、药效活性等性质,帮助药企在几十万甚至上百万分子中快速筛选候选化合物,把实验验证范围缩小到原来的十分之一。

同样的配方还能迁移到蛋白质功能预测、材料带隙估计、电池电解液筛选等领域。只要研究对象能被编码成图,池化就是它通向“整图答案”的必经桥梁。

f=Pool({hatom}),p^=σ(MLP(f))f = \mathrm{Pool}(\{ h_{\mathrm{atom}} \}), \quad \hat{p} = \sigma(\mathrm{MLP}(f))
  1. 原子特征$h_{\mathrm{atom}}$ 是经过 GNN 编码后的单个原子表示,已经包含周围化学环境的信息。
    hatom∈Rdh_{\mathrm{atom}} \in \mathbb{R}^d
  2. 图池化$\mathrm{Pool}$ 将同一分子内所有原子表示聚合为分子指纹向量 $f$。
    f=Pool({hatom})f = \mathrm{Pool}(\{ h_{\mathrm{atom}} \})
  3. 属性预测MLP 把分子指纹映射为预测得分,$\sigma$(sigmoid)将其压缩到 0 到 1 之间,作为毒性概率等属性输出。
    p^=σ(MLP(f))∈[0,1]\hat{p} = \sigma(\mathrm{MLP}(f)) \in [0, 1]

工程调优策略

比炒菜更重要的是搭配——好汤不是一味加料,而是盐和火候的平衡。池化同样不是孤立的模块,它与分类头、正则化、残差连接协同作用。实践中,以下几个调优手段对图级表现影响显著:拼接均值池化与最大池化特征,池化前加 Dropout 抑制过拟合,用残差连接把原始特征补充到池化结果中,防止深层信息流失。

拼接两种全局池化是目前性价比很高的做法。均值池化提供全局分布的“平均浓度”,最大池化提供最显著信号的“峰值强度”,两者互补。随后经过 Dropout 和分类头,模型能同时利用两类互补信息。

这些策略都是“火候”与“配方”层面的手艺。调优的目的不是堆叠技巧,而是在数据规模、算力和任务目标之间找到平衡,避免让池化成为丢掉关键味道的那一勺。

hG=[Mean(H)⊕Max(H)]h_G = \left[ \mathrm{Mean}(H) \oplus \mathrm{Max}(H) \right]
  1. 平均池化$\mathrm{Mean}(H)$ 对节点特征矩阵按列取平均,得到 $d$ 维向量。
    Mean(H)=1∣V∣∑v∈Vhv\mathrm{Mean}(H) = \frac{1}{|V|} \sum_{v \in V} h_v
  2. 最大池化$\mathrm{Max}(H)$ 对每列取最大值,同样得到 $d$ 维向量。
    Max(H)i=max⁡v∈Vhv,i\mathrm{Max}(H)_i = \max_{v \in V} h_{v,i}
  3. 拼接$\oplus$ 表示把两个向量首尾相连,得到 $2d$ 维的图向量。
    hG∈R2dh_G \in \mathbb{R}^{2d}

池化发展方向

厨房技术一直在变:从最早的“一锅端”,到分层小灶,再到依靠大数据学配比。未来的池化,正在向更聪明的“定制口味”演进。多尺度池化用不同分辨率同时观察全局与局部;结构感知池化把边类型、化学键等属性融入权重计算;可解释池化则让模型在给出结论的同时,告诉你哪些节点或子结构起了决定作用。

多尺度池化是其中一个代表思想:不再只用一种方式聚合,而是同时使用多种池化算子,每种算子捕捉不同粒度的信息,最后把结果合并起来。这样得到的图表示既含整体分布,又含显著信号,为分类器提供更全面的证据。

从节点级到图级的这条跃迁之路上,池化仍在不断进化。未来会有更多领域定制化的“厨艺”出现——但无论形式如何变化,它的灵魂始终如一:把一锅好汤的滋味,凝成最深刻的那一口。

hG=⨁k=1KPoolk(H)h_G = \bigoplus_{k=1}^{K} \mathrm{Pool}_k(H)
  1. 多视角池化下标 $k$ 表示第 $k$ 种池化方式(例如均值、最大、注意力池化),$K$ 表示共计使用的种类数。
    Poolk(H),k=1,…,K\mathrm{Pool}_k(H), \quad k = 1, \dots, K
  2. 结果合并$\oplus$ 表示拼接或按位相加,把多种池化结果融合为一个向量。
    hG=Concat(Pool1(H),…,PoolK(H))h_G = \mathrm{Concat}(\mathrm{Pool}_1(H), \dots, \mathrm{Pool}_K(H))
  3. 输出最终 $h_G$ 同时包含多种粒度的语义信息,供下游分类或回归使用。
    hG∈R(d1+d2+⋯+dK)h_G \in \mathbb{R}^{(d_1 + d_2 + \cdots + d_K)}

AI 应用场景

分子属性高通量筛选

阶段:模型推理与预测

解决的问题:传统化学实验室逐个测试分子的毒性、水溶性、活性,成本高、周期长;利用 GNN 加图池化,可以在几分钟内批量预测百万级分子库的属性。池化把每个分子的原子特征凝成分子指纹,让模型从“看原子”升级为“看分子”。

具体案例:某制药公司从 200 万个候选化合物中筛选潜在的抗肿瘤药。他们把每个化合物编码成分子图,用“GNN + 拼接池化”模型预测水溶性和细胞毒性,将进入湿实验验证的分子数缩小到 1 万个,节省约 90% 的筛选成本。

社交网络欺诈团伙识别

阶段:特征工程与图级分类

解决的问题:传统风控规则只能看单用户的好友数、转账额等统计量,难以发现团伙式欺诈;把一段时间内的转账关系建模成图,再用池化把子图凝成社区向量,即可对“整个社区是否涉诈”做出判断。

具体案例:某支付平台风控团队把每 300 人规模的转账子图送入 GNN,GNN 游走 3 层后池化出图级向量,分类头输出“欺诈团伙/正常社区”概率。上线后,团伙欺诈识别的召回率提升了 35%,且能给出哪些节点是核心成员的线索。

Python 演示

python43 行
import torchimport torch.nn.functional as Ffrom torch_geometric.nn import GCNConv, global_mean_pool, global_max_poolfrom torch_geometric.datasets import TUDatasetfrom torch_geometric.loader import DataLoader  class GraphClassifier(torch.nn.Module):    def __init__(self, in_channels, hidden_channels, out_channels):        super(GraphClassifier, self).__init__()        self.conv1 = GCNConv(in_channels, hidden_channels)        self.conv2 = GCNConv(hidden_channels, hidden_channels)        self.clf = torch.nn.Linear(hidden_channels * 2, out_channels)     def forward(self, x, edge_index, batch):        x = F.relu(self.conv1(x, edge_index))        x = F.relu(self.conv2(x, edge_index))        mean_feats = global_mean_pool(x, batch)        max_feats = global_max_pool(x, batch)        h = torch.cat([mean_feats, max_feats], dim=1)        return self.clf(h)  def train():    dataset = TUDataset(root='/tmp/TUDataset', name='MUTAG')    loader = DataLoader(dataset, batch_size=32, shuffle=True)    model = GraphClassifier(dataset.num_features, 64, dataset.num_classes)    optimizer = torch.optim.Adam(model.parameters(), lr=0.01)    model.train()    for epoch in range(20):        total_loss = 0.0        for data in loader:            optimizer.zero_grad()            out = model(data.x, data.edge_index, data.batch)            loss = F.cross_entropy(out, data.y)            loss.backward()            optimizer.step()            total_loss += float(loss.item())        print('Epoch {:02d}, loss = {:.4f}'.format(epoch, total_loss / len(loader)))  if __name__ == '__main__':    train()
目的:用两层 GCN 提取节点表示,再将“均值池化 + 最大池化”拼接,训练一个图分类模型在 MUTAG 分子数据集上预测分子类别。
  1. self.conv1 = GCNConv(in_channels, hidden_channels)第一层图卷积,让每个节点与邻居交换特征,相当于食材在锅里互相浸润。
  2. x = F.relu(self.conv1(x, edge_index))激活函数给模型引入非线性,让节点表示更有表现力。
  3. mean_feats = global_mean_pool(x, batch)按 batch 向量区分每个图,对同图内的节点特征取平均,得到“整体浓度”。
  4. max_feats = global_max_pool(x, batch)对同图内的节点特征取最大值,保留“最显著信号”。
  5. h = torch.cat([mean_feats, max_feats], dim=1)把两种池化结果拼成更丰富的图级向量。
  6. out = model(data.x, data.edge_index, data.batch)前向计算:节点编码、池化聚合、分类输出一条龙。
  7. loss = F.cross_entropy(out, data.y)交叉熵损失衡量预测概率与真实标签的差距,驱动反向传播。
  8. total_loss += float(loss.item())累加 batch 损失,用于打印每个 epoch 的平均损失。

常见误区

误区图池化不就是把所有节点向量加起来吗?反正是聚合,sum 最直接,没必要讲究。

正解求和池化只是全局池化家族中的一种,也只适合图规模基本固定的任务。当图大小差异明显时,求和结果随节点数膨胀,大图天然占优势,非常不公平。平均池化或可学习池化能够消除规模影响。好比汤里食材多少直接决定整锅汤的总咸淡,不同大小的锅不能直接比“总盐量”,要比就比“每一勺的浓度”。

为何常见:很多入门 demo 使用节点数相同的合成小图,直接相加的结果恰好合理,掩盖了规模不一致的问题。

误区max 只取最大值,能自动抓住最关键的节点特征,肯定比 mean 好用。

正解最大池化确实适合信号稀疏的任务,但它会丢弃绝大多数节点的信息。当类别由多个节点共同决定时,平均池化或拼接方式通常更稳。品汤时如果用最浓的一颗花椒代表整锅汤,鲜味就会被全部浪费。

为何常见:卷积神经网络中 max pooling 是标配,很多人把直觉直接迁移到图上,忽略了图数据“结构决定语义”的特殊性。

误区层次池化听起来更高级,能保留结构信息,所以效果必然碾压全局池化。

正解层次池化需要学习分配矩阵,参数量大、训练开销高,在小数据集上容易过拟合;如果图的层级感本身不强,它的优势也发挥不出来。全局池化在中等规模数据上常常表现更稳。小锅合并大锅的厨艺虽精,食材太少时一锅炖反而更稳妥。

为何常见:层次池化在论文 benchmark 上表现亮眼,容易让人形成“越复杂越好”的线性思维。

误区池化把很多向量压成一个向量,本质是降维,所以向量维度越低说明压缩得越狠、信息越浓缩。

正解池化的目标是保留下游任务需要的判别信息,而不是一味压缩。压缩过度会让图的关键信息丢失,分类精度反而下降。浓缩汤不是蒸发得越多越好,火候过头会把汤烧焦变苦。

为何常见:“降维”是常见操作,大家容易误认为“小”就意味着“精”,忽略了信息保持才是池化的第一目标。

面试题

Q1. 图池化在 GNN 中的核心作用是什么?

单选题 · easy

  • A.把图级向量拆回节点级向量
  • B.把节点级表示聚合为图级表示← 正确答案
  • C.增加节点特征向量维度
  • D.直接删除图中的孤立节点

答案:B。图池化的本质是把全部节点特征凝聚成一个图级向量,对应“从各种食材到整锅汤的总结”。A 方向反了,C 是维度变换而非聚合,D 是预处理操作。

Q2. 下列哪一项属于全局池化?

单选题 · easy

  • A.平均池化← 正确答案
  • B.DiffPool
  • C.SAGPool
  • D.注意力池化

答案:A。平均池化对全部节点做固定数学运算,属于全局池化。DiffPool 是层次池化,SAGPool 和注意力池化是可学习池化。

Q3. 当数据集中图的节点数差异很大时,哪种池化方式受图规模影响最小?

单选题 · mid

  • A.求和池化
  • B.平均池化← 正确答案
  • C.密集连接
  • D.邻接矩阵

答案:B。平均池化先求和再除以节点数,相当于比较“每一勺的浓度”,不受锅大小影响。求和池化会随节点数线性膨胀,不具可比性。

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

单选题 · mid

  • A.用注意力机制对节点加权求和
  • B.学习分配矩阵并逐层聚合节点← 正确答案
  • C.仅对图中的边执行池化操作
  • D.每轮随机删除低分节点

答案:B。DiffPool 通过 GNN 学习分配矩阵 S,把节点软性地分配到下一层簇中,逐层压缩直到整图成为向量。A 是注意力池化,D 更像 SAGPool 的思路。

Q5. SAGPool 如何选择要保留的节点?

单选题 · mid

  • A.随机抽取若干节点
  • B.均匀等概率选择节点
  • C.按学习分数取前K个节点← 正确答案
  • D.按节点度从大到小选取

答案:C。SAGPool 用打分网络计算每个节点的重要性分数,然后保留分数最高的前 K 个节点,本质是“可学习的 TopK 选择”,而不是随机或按度数。

Q6. 下列哪个式子可以表达可学习的注意力池化?

单选题 · hard

  • A.取所有节点向量的最大值
  • B.用可学习权重线性组合节点向量← 正确答案
  • C.对所有节点向量求算术平均
  • D.直接取根节点向量作为图向量

答案:B。注意力池化用学到的权重 α_v 对节点加权求和,即 $h_G = \sum \alpha_v h_v$。A 是最大池化,C 是平均池化,D 只用一个节点,信息损失太大。

Q7. 在分子属性预测任务中,池化层输出的结果代表什么?

单选题 · hard

  • A.原子的三维空间坐标位置
  • B.分子级别的向量特征描述符← 正确答案
  • C.化学键的类型与连接情况
  • D.单原子在当前层的输出

答案:B。池化把分子内全部原子的表示聚合为一条分子级向量,即“分子指纹”,它保留了对属性预测有用的整体信息。A 是几何信息,C 是边信息,D 仍是节点级表示。

Q8. 以下哪些属于常见的全局池化方式?

多选题 · mid

  • A.对节点特征向量逐维求和← 正确答案
  • B.取所有节点特征的平均值← 正确答案
  • C.按维度取节点特征的最大值← 正确答案
  • D.只保留得分最高的前K个节点

答案:ABC。求和、平均、最大是三种经典全局池化,它们都是固定、无参数的聚合。D 的 TopK 选择属于可学习池化或层次池化的范畴。

Q9. 关于层次池化和全局池化,下列说法正确的是?

多选题 · mid

  • A.全局池化实现更简单直接← 正确答案
  • B.层次池化一定优于全局池化
  • C.层次池化能更好地保留结构信息← 正确答案
  • D.层次池化不包含任何可学习参数

答案:AC。全局池化简单高效,适合快速 baseline;层次池化通过逐层聚类保留局部结构,在结构敏感任务上有优势。但它含大量参数、训练成本高,并不总是更优,D 也明显错误。

Q10. 以下哪些做法属于工程调优中提升池化表征效果的手段?

多选题 · hard

  • A.拼接均值池化与最大池化特征← 正确答案
  • B.训练时频繁切换不同的池化方式
  • C.通过残差连接保留低层原始特征← 正确答案
  • D.在每一层后堆叠多个池化模块

答案:AC。拼接均值与最大能同时捕捉整体浓度与显著信号;残差连接可补偿深层信息损失。B 会导致训练目标不稳定;D 反复堆叠池化模块会过度压缩信息,通常有害无益。