【LLM】从零开始学大语言模型 | 4 | Attention
从注意力机制到自注意力与位置编码:Transformer 核心机制详解 在这篇文章中,我们从一个非常自然的问题出发:为什么深度学习在处理序列信息时,会从 RNN 逐渐走向 Attention,再进一步走向 Transformer 中的 Self-Attention?我们会把注意力机制的直觉、数学公式、工程意义,以及它与 RNN 的本质区别讲清楚,并进一步讨论 Self-Attention 中非常关键的缩放因子、位置信息丢失和位置编码问题。 为了避免概念混乱,本文会特别澄清几个常见误解:Attention 不是简单地把 RNN 的隐藏状态替换成 Q、K、V;W_Q、W_K、W_V 也不是所谓“三层感知机”;早期 Attention 与现代大模型中常见的 Self-Attention 之间既有历史联系,也有本质差别。 一、从 RNN 的串行记忆到注意力机制的直觉 1. RNN 的串行记忆为什么容易遗忘 在 RNN 中,序列通常是一个词一个词地被处理。假设当前时刻的输入是 $x_t$,上一时刻的隐藏状态是 $h_{t-1}$,那么当前时刻的隐藏状态可以写成: $$ h_t = \tanh(W_{hh}h_{t-1} + W_{xh}x_t+b) $$ 这里最重要的角色是隐藏状态 $h_t$。它可以被理解为 RNN 的“记忆胶囊”:模型把之前看到的信息压缩进这个向量里,然后带着这个向量继续往下走。 这种方式在短序列上很自然,但问题也很明显。 首先,信息必须一站一站传递。第 1 个词的信息要先影响第 2 个词,再影响第 3 个词,一直传到第 100 个词。换句话说,如果第 100 个词想知道第 1 个词说了什么,它只能依赖前面经过 99 次传递后残留下来的状态。 其次,隐藏状态通常是固定维度的向量。无论句子有多长,所有历史信息都要被压缩进同一个有限空间里。这样一来,早期信息很容易被后来的信息覆盖、稀释或干扰。 这就是 RNN 长距离依赖困难的根源:不是模型“不想记住”,而是它的结构决定了信息必须通过一条很长、很窄、不断被压缩的通路传递。 2. 人类阅读中的选择性关注 我们来看一个很常见的英文句子: The animal didn’t cross the street because it was too tired. ...