【大语言模型基础(2)】自注意力与多头机制:QKV、缩放与因果掩码

文章目录

    • 摘要
    • [1. 为什么需要自注意力](#1. 为什么需要自注意力)
    • [2. Q、K、V 到底是什么](#2. Q、K、V 到底是什么)
    • [3. Attention 公式在干什么](#3. Attention 公式在干什么)
      • 第一步:计算相似度
      • 第二步:做缩放
      • [第三步: s o f t m a x \mathrm{softmax} softmax 归一化](#第三步: s o f t m a x \mathrm{softmax} softmax 归一化)
      • [第四步:对 V a l u e Value Value 做加权平均](#第四步:对 V a l u e Value Value 做加权平均)
    • [4. 为什么 GPT 需要因果掩码](#4. 为什么 GPT 需要因果掩码)
    • [5. 多头注意力为什么有用](#5. 多头注意力为什么有用)
    • [6. 看注意力权重要注意什么](#6. 看注意力权重要注意什么)
    • [7. 一张图就能记住的核心逻辑](#7. 一张图就能记住的核心逻辑)

摘要

Transformer 到底是怎么做到的:在当前位置,先看完整句话,再决定自己该变成什么样

这件事主要靠两样东西:

  • Q / K / V + s o f t m a x Q / K / V + \mathrm{softmax} Q/K/V+softmax:把整句话的信息汇总成当前位置的新表示。
  • 因果掩码(causal mask):让同一套注意力公式在 GPT 里变成"只能看过去"。

本文会顺着这条线讲清楚自注意力的直觉、QKV 的分工、缩放因子 d k \sqrt{d_k} dk 的作用,以及为什么多头注意力和掩码会让 Transformer 既能理解语言,也能生成语言。


1. 为什么需要自注意力

先看一个最经典的现象:

bank 在"河岸"语境里是河边的岸,在"银行"语境里是金融机构。

同一个词,放进不同句子里,意思完全不同。

这说明一个词的表示,不能只看它自己,还得看上下文。

早期 RNN 的思路是把信息按顺序往后传,但句子一长,前面的信息很容易在传递中变弱、变形。Transformer 选择了另一条路:

让每个位置直接和所有位置交互,由模型自己决定该重点关注谁。

这就是自注意力的出发点。


2. Q、K、V 到底是什么

自注意力里常见的三个字母,看起来抽象,其实可以理解得很直白。

  • Query( Q Q Q):当前位置"在问什么"
  • Key( K K K):每个位置"是什么类型的信息"
  • Value( V V V):每个位置"真正提供的内容"

你可以把它想成一个匹配过程:

我现在这个词,想从整句话里借一点信息回来,但我得先判断谁最相关。

一个具体例子

看这句话:

The animal didn't cross the street because it was too tired.

这里我们关心的是:it 指的是谁?

对于当前位置的 it 来说:

  • Q u e r y Query Query 表示:我在找一个能解释"too tired"的对象。
  • 句子里每个词都有自己的 K e y Key Key
  • 每个词真正带来的语义内容,是它自己的 V a l u e Value Value

it 的 Q u e r y Query Query 去和所有 K e y Key Key 做匹配后,会发现:

  • animal 的匹配度高
  • street 的匹配度低

于是 s o f t m a x \mathrm{softmax} softmax 之后,animal 对应的权重更大。

最后 it 会主要吸收 animal 的 V a l u e Value Value 信息,于是它的表示里就带上了"它指的是 animal"这层上下文。

一句话概括:

Q Q Q 在问问题, K K K 决定谁该被关注, V V V 提供真正要拿走的信息。


3. Attention 公式在干什么

标准的缩放点积注意力公式是:

A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K ⊤ d k ) V \mathrm{Attention}(Q, K, V) = \mathrm{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right) V Attention(Q,K,V)=softmax(dk QK⊤)V

这条式子看起来长,其实只有四步:

第一步:计算相似度

Q K ⊤ QK^\top QK⊤

意思是:当前位置和所有位置分别有多相关。

第二步:做缩放

Q K ⊤ d k \frac{QK^\top}{\sqrt{d_k}} dk QK⊤

这里的 d k d_k dk 是 K e y Key Key 向量的维度。

为什么要除以 d k \sqrt{d_k} dk ?

因为维度越大,点积的数值通常越容易变大, s o f t m a x \mathrm{softmax} softmax 就会变得特别尖锐,注意力几乎只押在一个位置上,训练会更不稳定。

所以这个缩放因子本质上是在:

给 s o f t m a x \mathrm{softmax} softmax 降温,让注意力分布别太极端。

第三步: s o f t m a x \mathrm{softmax} softmax 归一化

s o f t m a x \mathrm{softmax} softmax 会把相似度变成权重,保证所有权重加起来等于 1 1 1。

这一步之后,你得到的不再是"分数",而是"我到底该听谁多少"。

第四步:对 V a l u e Value Value 做加权平均

最后把这些权重乘到 V V V 上,得到当前位置的新表示。

也就是说:

自注意力本质上是在做一次"按相关性加权的信息汇聚"。


4. 为什么 GPT 需要因果掩码

这里是很多人第一次真正理解"生成式模型"和"理解式模型"区别的地方。

BERT 和 GPT 的差别

  • BERT 做的是理解任务,允许一个位置看到整句话的左右上下文。
  • GPT 做的是生成任务,要建模的是:

p ( x t ∣ x < t ) p(x_t \mid x_{<t}) p(xt∣x<t)

也就是:只能根据前面的词预测下一个词。

如果在训练时,当前位置还能看到未来词,那就等于把答案泄露给模型了。

这当然不行。

因果掩码怎么做

做法很简单:

  • 在注意力分数矩阵里
  • 把未来位置,也就是 j > t j > t j>t 的部分,填成 − ∞ -\infty −∞
  • s o f t m a x \mathrm{softmax} softmax 之后,这些位置的权重就会变成 0 0 0

这样一来,模型虽然"看得见"整个矩阵结构,但实际上:

未来的信息在计算上被彻底屏蔽了。

最重要的一点是:

Attention 的公式没变,变的是"允许谁参与计算"。

所以,BERT 和 GPT 可以共享同一类注意力机制,但因为掩码不同,最终学到的是完全不同的建模方式。


5. 多头注意力为什么有用

如果只有一个注意力头,模型每次只能用一种方式看问题。

但语言里的关系不止一种:

  • 有的关注语法
  • 有的关注指代
  • 有的关注语义
  • 有的关注长距离依赖

多头注意力的做法是:

  • 把隐藏维度切成几份
  • 每一份独立做一套注意力
  • 最后把结果拼接起来

这样模型就可以同时从多个角度理解同一句话。

可以把它理解成

不是一个人独自判断"谁重要",而是几位专家各看一遍:

  • 一个专家看语法
  • 一个专家看语义
  • 一个专家看指代关系

最后把大家的意见综合起来。

多头注意力的价值就在这里:

它让模型不只学一种相关性,而是并行学习多种关系模式。


6. 看注意力权重要注意什么

很多工具都能把注意力权重画成热力图,看起来很直观。

但这里有一个常见误区:

注意力权重不是语法树,也不等于人类可解释的最终答案。

它只是模型内部的一种统计信号,说明某些位置在当前计算中更受关注。

它可以帮助我们观察模型,但不能简单地把它当成"模型真正理解了什么"的唯一证据。


7. 一张图就能记住的核心逻辑

如果把整篇内容压缩成一句话,那就是:

自注意力是在全句范围内按相关性重新分配信息,而因果掩码决定模型能不能看未来。

再展开一点,就是:

  • Q Q Q:当前位置在问什么
  • K K K:谁和这个问题更匹配
  • V V V:匹配成功后拿走什么信息
  • s o f t m a x \mathrm{softmax} softmax:把匹配分数变成权重
  • d k \sqrt{d_k} dk:防止注意力过于尖锐
  • m a s k \mathrm{mask} mask:决定能看过去、还是能看全句
  • 多头:让模型同时用多种视角理解句子

Transformer 的聪明之处,不在于它"记住了句子",而在于它学会了:

在每个位置上,重新判断整句话里谁最重要。

而 GPT 和 BERT 之所以走向不同方向,只是因为它们在同一套注意力公式上,分别加上了不同的"观看权限"。

相关推荐
明月照山海-2 小时前
机器学习周报三十八
人工智能·机器学习
不熬夜的熬润之2 小时前
KCF算法解析
人工智能·算法·计算机视觉·机器人
Mintopia2 小时前
AI 生成代码的“债务清单”:哪些地方省下的时间,最后会加倍还
人工智能
Bruce20489982 小时前
技术小白AI入门指南(从0到1,无缝衔接技术基础)
人工智能
guslegend2 小时前
3月29日(openclaw安全保障)
人工智能·安全·大模型
俊哥V2 小时前
每日 AI 研究简报 · 2026-03-29
人工智能·ai
2201_754864782 小时前
学习日记(2026年3月29日)
人工智能·python·机器学习
阿钱真强道2 小时前
03 从 MLP 到 LeNet:一个分类模型,究竟是怎样做出判断的?
人工智能·分类·图像分类·softmax·多层感知机
热点推送2 小时前
爱电竞酒店2026开年加速扩张,1-2月签约开业多点开花,生态协同效应凸显
人工智能