一句话定义:池化(Pooling)就是把"长度不定的一串向量"按某个规则合并成"一个固定长度的向量"。
为什么必须压
一句话进模型后,先被切成 token,每个 token 输出一个向量。十个词的句子就是十个向量,一百个词就是一百个。可后面的环节——分类头、向量检索、聚类——通常只接受固定长度的输入。于是需要一个操作把 N 个向量变成 1 个,这就是池化。最常见的做法是平均池化(Mean Pooling):把每个维度上的数值加总再除以 N。
打个生活化的比方
一场会,每人都发言,纪要只能写一页。
- 平均池化:把所有人的观点"取平均"——共识留下来,个性被抹平。
- 最大池化(Max Pooling):每个议题只记最强烈的那个意见——最响的声音留下,其余消失。
- 求和池化(Sum Pooling):把所有发言原样叠加——话越多,总量越大。
压的过程里丢掉了什么
1. 词序。"猫追狗"和"狗追猫"若 token 集合相同,平均池化的结果一模一样。
2. 归属关系。平均值无法回溯是哪个词把某一维拉高的,可解释性弱。
3. 长度信息。平均把句长除掉了;求和保留长度,但数值尺度随句子长短漂移。
4. 分布形状。最大池化只留峰值,丢掉其余;平均池化只留重心,丢掉尖峰。
| 方式 | 怎么算 | 主要保留 | 主要丢失 |
|---|---|---|---|
| 平均池化 Mean | 逐维求平均 | 整体语义重心 | 词序、句长 |
| 最大池化 Max | 逐维取最大 | 最显著的维度特征 | 多数 token 的信息 |
| 求和池化 Sum | 逐维相加 | 长度信息 | 数值范围不稳定 |
| CLS 向量 | 取特殊标记的输出 | 训练中学到的全局表示 | 不对应任何具体词 |
和相邻概念的区别
AI 词典:Embedding">Embedding 是"把词/句子变成向量",池化是"把多个向量合成一个";注意力(Attention)也是加权合并,但权重由数据学出来,平均池化只是它权重全等的特例;降维(如 PCA)改变维度,但要求输入本来就等长,解决不了变长问题。卷积网络里的池化窗口也做同样的事:在局部区域取最大或平均,缩小特征图,顺带带来一点平移不变性。
对从业者的实际意义
做 RAG、语义检索、聚类、去重,你比较的是句向量,而句向量质量很大程度取决于池化方式。同一个底座模型,换成不同的池化,相似度排序就可能变化。开源向量模型通常在训练阶段就固定了池化策略,别随手替换;具体用哪种,以官方页面说明为准。对普通职场人来说,你搜"意思相近"而不只是"字面相同",背后正是这句话被压成了一个点——压缩时丢掉的那些东西,恰恰是它偶尔"答非所问"的原因。
