8.1 注意力提示
注意力分为两种:
非自主性注意力:也就是原本特征很明显,很容易注意到;
自主性注意力:特征本来不明显,通过将注意力汇聚从而关注特征;
- 参数化注意力汇聚:
- 非参数的注意力汇聚:
原本的全连接层、汇聚层,已经能够实现非自主性注意力,数据的明显特征会在优化过程中被自动学习,而注意力机制主要实现的是自主性注意力;
注意力提示
查询、键和值
首先考虑一个相对简单的状况,即只使用非自主性提示,也就是自然注意到原本就比较明显的特征。可以简单地使用参数化的全连接层,甚至是非参数化的最大汇聚层或平均汇聚层。
如果使用自主性提示,我们需要一些额外信息提示,来使注意力集中到目标上。是否包含自主性提示将注意力机制与全连接层或汇聚层区别开来。给定一些提示,注意力机制通过注意力汇聚(attention pooling),把提示和特征的标签进行匹配,增大适配的特征,从而使注意力聚集到适配特征上;提示就是查询、特征就是值、特征的标签则是对应的键;
- 自主性提示 = Query 查询:是你主动产生的需求、目标、关注点,是 “你想找什么”。
- 感官输入 = Value 值:模型已经拿到的全部原始 / 中间特征,是一堆现成的信息素材,相当于你眼睛看到的全部画面、文本所有单词向量。这些是待筛选的原材料;这些是待筛选的原材料,最终我们取用的就是 Value。
- 非自主提示 = Key 键:Key 和 Value 一一绑定成对,Key 是 Value 的 “标签 / 摘要 / 索引”,是素材自带的属性,不是你主动生成的。画面里每一小块图像特征(Value),配套一个简化特征标签(Key);每一个单词向量(Value),配套它自身的简化表征(Key);Key 不依赖你的目标,是素材本身自带的,所以叫非自主提示。
下图展示了这个过程:

上面所提框架在注意力机制中占据主导地位,因此这个框架下的模型将成为本章的中心。然而,注意力机制的设计有许多替代方案。例如可以设计一个不可微的注意力模型(例如:最终输出不是各个值的加权和,而是直接选择对应的几个值,这样无法计算梯度,不可微),该模型可以使用强化学习方法进行训练。
注意力的可视化
平均汇聚层可以被视为输入的加权平均值,其中各输入的权重是一样的。实际上,注意力汇聚得到的输出是不同value加权平均的总和值,其中权重是在给定的查询和不同的键之间计算得出的。
可以定义一个show_heatmaps函数来显示注意力权重,参数matrices的形状是(图的行数,图的列数,单个图内查询的数目,单个图内键的数目)。
1 | def show_heatmaps(matrices, xlabel, ylabel, titles=None, figsize=(2.5, 2.5), |
下面使用一个简单的例子进行演示。在本例子中,仅当查询和键相同时,注意力权重为1,否则为0。
1 | # 实际上是生成了一个单位矩阵 |

- 标题: 8.1 注意力提示
- 作者: HuxJiang
- 创建于 : 2026-04-23 16:25:08
- 更新于 : 2026-06-25 21:57:51
- 链接: https://github.com/HuxJiang/2026/04/23/81-attention-prompts-2mzmjy/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论