一句话定义:注意力池化(Attention Pooling)是一种把长度不固定的序列压成一个固定长度向量的方法,它不给每个位置同样的权重,而是先算出一组注意力权重(attention weights),再加权求和。
它怎么工作
假设你要向老板汇报一场两小时的会议。平均池化(mean pooling)相当于把每个人说的话等量摘一句,拼成一个不偏不倚、也没什么重点的“平均意见”;最大池化(max pooling)只保留嗓门最大的那句。注意力池化更像一个懂行的记录员:先给每条发言打一个重要性分数,再按分数把所有发言揉成一段摘要。
公式很朴素:对每个位置的向量 h_i 打一个分数 s_i(可以是一个可学习向量与 h_i 做点积,也可以过一个小网络),用 softmax 归一化成权重 α_i,输出就是 Σ α_i·h_i。分数也可以来自别处——比如用用户问题的表示去“查询”文档里每个词,这就是问答和检索里常见的做法。
和相邻概念的区别
| 方法 | 权重来源 | 是否可学习 | 能否指出重点在哪 |
|---|---|---|---|
| 平均池化 | 全部相等 | 否 | 不能 |
| 最大池化 | 只取最大激活 | 否 | 只能指出一维 |
| 注意力池化 | 打分后归一化 | 通常是 | 能,权重即热力图 |
| CLS 向量 | 模型隐式压缩 | 随预训练 | 弱,需配套训练 |
对从业者的意义
文本分类、句向量、多实例学习、弱监督定位、多模态融合里,用注意力池化替换平均池化往往能带来稳定提升,还额外得到一张权重分布图,方便排查模型是不是在“看对地方”。
代价是它更容易过拟合。权重是学出来的,小数据上常常塌缩成近似 one-hot:模型抓住一两个高频词就下结论,训练集很准,线上就翻车。缓解办法不复杂——加权重熵正则逼它别太极端、用AI 词典:多头注意力">多头注意力分散风险、调大 dropout,数据量实在小就老实退回平均池化,或者用门控(gating)把两者按比例混合。
对普通职场人来说,这解释了为什么有些筛选、质检、推荐系统会因为一句话就误判:它被训练成“挑重点”,而重点挑错了,它自己也说不清。
