让模型处理信息时能挑重点:给输入的不同部分分配不同权重,需要什么就多看一眼什么,而不是所有内容平均对待。
早期的序列模型靠循环结构一个词一个词地处理,信息要挤过一个固定大小的「记忆」,句子一长,开头的内容就模糊了。注意力机制的出发点是:与其硬记,不如在处理每个位置时,回头看一眼全部输入,并决定该重点看谁。
用查资料来类比。你带着一个问题去图书馆: - Query(查询):你手上的问题。 - Key(键):每本书书脊上的标签,用来判断「跟我这个问题有多相关」。 - Value(值):书的实际内容。 流程是:拿你的问题去和每个标签比相似度,相似度越高,对应内容的权重越大,最后把所有内容按权重加权求和,得到这次的收获。模型里的「标签」和「内容」都是向量,相似度用点积一类运算来算,整个过程是连续、可微的,因此能用反向传播一起训练。 由此带来两个好处:一是处理任意位置时都能直接看到远处信息,路径短、衰减少;二是这些权重是算出来的,可以检查、可以解释——能看出模型在关注哪几个词。
注意力把「记忆」从固定容量的容器,变成了随时可查的索引。长距离依赖、对齐关系、指代消解这些老难题都因此改善。更重要的是,它天生适合并行计算,为后来的大模型规模扩展铺平了道路。今天几乎所有主流架构都建立在它之上。