前言
在Transformer架构主导的现代大模型中,QKV(Query、Key、Value)是注意力机制的核心组成部分。它们看似简单的线性变换与点积运算,实际上承载着模型对输入信息的动态筛选与关联建模。本文将从计算逻辑和数据存储逻辑方面,深入解析QKV的运作原理。
一、QKV的数学本质:从输入到特征空间的映射
1. 输入嵌入的线性变换
在Transformer中,每个输入token首先通过嵌入层转化为高维向量(如768维)。QKV的初始形态均来源于这些嵌入向量:
- Query(查询) :通过可学习的权重矩阵
- ,将输入映射到查询空间 Q=X * Wq
- Key(键) :通过权重矩阵
- 生成 :K = X* Wk
- Value(值) :通过权重矩阵
- 生成 : V = X * W
这里肯定有读者会疑惑,QKV到底存的是什么?
其实还是用户输入的内容,假设用户输入 X = never give up
Wq 保存的就是用户当前输入的内容 never give up,图片缩减了维度,真实情况是,有上万个列(维度),每一个列保存的都是nerver单词在各种环境下的语义信息。
Wk 保存的是也是 never give up,也有上万个维度,只不过保存的是匹配 never give up 词汇的上下文语境含义,比如:
Wq( never give up)-> Wk(I have a dream)
Wv 没有什么含义,可以理解为简单把 never give up 变成词汇矩阵。
没错,大模型就是通过这样的暴力计算,得到了上下文的语义信息,QKV矩阵保存的语义信息,最初是初始化生成的,然后通过多轮训练,就会生成准确的语义信息。
维度解析:假设输入维度
=768,通常设置
。这种降维操作既减少计算量,又通过多头机制(Multi-Head)恢复表达能力。
2. 注意力分数的生成
QKV的核心交互通过点积实现,其计算流程如下:
- 相似度度量:
- Attention Score=
- 其中每个元素
- 表示第i个token对第j个token的关注强度。
- 概率化处理:
- 通过Softmax将分数归一化为概率分布:
- ,这一步是为了将数字转为0到1的概率数字,减少计算量和概率偏差(极大或极小值)
- 信息加权聚合:
- 每个输出向量是Value矩阵的加权和,权重由Query与Key的相似度决定,这个加权计算过的V其实就是我们需要的注意力分数
什么是注意力分数?QKV经过计算后,需要选择出一个概率最大的词汇最为输出,这个得分就是注意力分数,得分越高,就会输出哪些词汇。
为什么要做矩阵的转置相乘? 注意力计算本质是要获得一个矩阵,我们知道,Wq代表用户输入,Wk代表匹配用户输入,这两个如果直接相成是没有含义的,如果把Wk转置,就会生成一个行、列都是用户输入的语境矩阵,得到一个注意力分数。
二、QKV的变体与优化
1. 多头注意力(Multi-Head Attention)
通过并行多组QKV投影,模型能够:
- 捕捉不同特征空间的关联(如语法与语义)
- 增强鲁棒性(避免单点失效)
2. 稀疏注意力
为应对长序列计算瓶颈,衍生出:
- 局部注意力(Local Attention)
- 分块稀疏(Sparse Transformers)
- 线性化注意力(如Performer)