1. 自注意力机制的本质与工作原理
自注意力机制(Self-Attention)是Transformer架构的核心组件,也是理解现代大语言模型的关键。这个看似复杂的概念,其实可以用我们日常生活中的思维方式来类比理解。
想象你在阅读一段文字时,大脑会自动关注句子中不同词语之间的关系。比如看到"苹果"这个词时,你会根据上下文判断它指的是水果还是科技公司。这种根据上下文动态调整关注重点的能力,正是自注意力机制要实现的。
1.1 自注意力机制的四个核心步骤
1.1.1 线性变换生成QKV向量
每个输入token(可以理解为单词或字)首先会被转换为一个嵌入向量(embedding)。这个向量会经过三个独立的线性变换:
- Query(Q):表示当前token"想要寻找什么"
- Key(K):表示当前token"可以提供什么"
- Value(V):表示当前token的"核心信息内容"
这三个矩阵(W_Q, W_K, W_V)都是可学习的参数,在训练过程中不断优化。这种设计让模型能够灵活地学习如何提取和组合信息。
技术细节:在实际实现中,这三个变换通常合并为一个矩阵乘法操作以提高效率,然后再通过reshape操作分离出Q、K、V。
1.1.2 计算注意力分数
接下来,我们用当前token的Q向量与所有token的K向量进行点积运算。点积结果越大,表示两个token的关联性越强。
数学表达式为:
Attention Score = Q · K^T
这个步骤实现了"全局视野"——每个token都能直接看到序列中的所有其他token,并评估它们与自己的相关性。
1.1.3 缩放与Softmax归一化
原始注意力分数可能数值过大,导致梯度消失问题。因此我们需要:
- 除以√d_k(d_k是K向量的维度)进行缩放
- 通过Softmax函数将分数转换为概率分布
公式表示为:
Attention Weights = softmax(QK^T/√d_k)
这个归一化过程确保所有注意力权重的总和为1,形成一个合理的概率分布。
1.1.4 加权求和生成新表示
最后,用得到的注意力权重对V向量进行加权求和:
Output = Attention Weights · V
这个输出向量就是当前to
