大模型底层原理 · 可视化讲解

Transformer 到底
是怎么"思考"的?

ChatGPT、文心一言、通义千问…它们的"大脑"都是 Transformer。 没有循环、没有卷积,全靠一个叫 自注意力(Self-Attention) 的机制。 下面用动画把它拆开给你看。

先记一句话

Transformer = 把"词"变成"数字向量",
再让每个词去"看"一遍所有词

① 编码
文字 → 一串向量(带位置信息)
② 注意力
每个词计算"我该关注哪些词"
③ 预测
根据上下文猜下一个词是什么

传统模型(RNN)像"读书逐字读",前面忘了后面; Transformer 像"一眼扫全段",谁和谁相关当场算出来 —— 这就是它能理解长句子、又能并行加速的根本原因。

第 1 步 · 整体架构

先看清全貌:编码器 + 解码器

原始 Transformer 分左右两半。编码器读入句子、抽取含义; 解码器根据含义一个词一个词地生成输出。现在的"只 decoder"大模型(如 GPT)只保留右边一半,但核心机制完全一样。

输入句子 "猫 追 老鼠" 编码器 Encoder ×N 多头自注意力 Self-Attention 前馈网络 FFN + 残差 / 归一化 解码器 Decoder ×N 带掩码自注意力 交叉注意力 ← 看编码器输出 前馈网络 FFN + 残差 / 归一化 输出概率 Linear+Softmax K,V ↑ 同样的块堆 N 层(如 12/24/96 层) ↑ 同样的块堆 N 层
💡 箭头里的紫色虚线是关键:解码器生成每个词时,会"回头看"编码器的全部输出 —— 这就是翻译、问答能对齐上下文的原因。
第 2 步 · 把文字变成数字

输入怎么进模型:分词 → 嵌入 → 加位置

模型不认识字,只认识向量。要经过三道转换:

1. 分词 Tokenize

句子切成 token(词 / 子词)。
"小猫"→

2. 词嵌入 Embedding

每个 token 变成一串数(向量),如 512 维。含义相近的词,向量也相近。

3. 位置编码 Positional

注意力本身"无顺序感",必须额外加上"第几个词"的位置信号。

"猫 追 老鼠" 嵌入成向量(这里是 4 维示意) + 位置 →
输出 = Embedding(token) + PositionalEncoding(位置)

位置编码常用"不同频率的正弦/余弦波"叠加到向量上,让模型既能知道绝对位置,也能算出相对距离。

第 3 步 · 核心机制

自注意力:让每个词"环顾四周"

这是 Transformer 的灵魂。每个词都会和句子里所有词两两计算"相关度", 然后按相关度把别人身上的信息"加权汇总"到自己这里。于是"它"这个词就能知道自己指的是"猫"还是"老鼠"。

① 三个向量:Q / K / V

每个词用自己原来的向量,乘三个不同的矩阵,变出三个角色:

Q 查询
"我在找什么信息"
K 键
"我能提供什么信息"
V 值
"我实际携带的内容"
Attention(Q,K,V) = Softmax( Q·Kᵀ / √d ) · V

Q·Kᵀ 算出"我和你有多相关" → Softmax 归一化成注意力权重(加起来=1)→ 乘 V 按权重汇总别人的内容。

② 交互演示:点一个词,看它关注谁

Q×K 相关度 Softmax 权重 权重越大 = 越关注

③ 多头注意力 Multi-Head

一个头只能关注一种关系。模型会并行开好几组 Q/K/V(如 8 个头), 有的头看语法、有的头看指代、有的头看远距离搭配,最后拼起来 —— 就像好几个人从不同角度同时读同一句话。

同一个输入 → 多个头并行计算,各自关注不同方面
第 4 步 · 加工与稳定

前馈网络 + 残差 + 归一化

前馈网络 FFN

对每个词独立做两次线性变换(中间放大再压回)。 注意力负责"交换信息",FFN 负责"消化加工"每个词学到的东西。

残差连接 Add

输出 = 输入 + 子层结果。让信息有"直通路",深层网络才训得动、梯度不消失。

层归一化 LayerNorm

把向量数值拉回稳定范围,训练更稳、更快。顺序通常是 Norm → 子层 → Add(Pre-LN)

一个 Transformer 子层 = 残差 + 注意力/FFN + 归一化
第 5 步 · 生成

怎么"写出"下一个词

最后一层出来后:

Linear
把向量映射成"词表大小"的分数(每个候选词一个分)
Softmax
把分数变成概率,所有词概率加起来 = 1
采样/贪心
按概率挑一个词输出,再拼回输入,循环生成
输出向量 → 词表分数 → 概率分布 → 取概率最高的词
🔁 自回归生成:把刚生成的词加回句子末尾,再跑一遍整个模型,直到出现"结束符"。这也就是为什么越长越慢、且一次只能出一个字。
总结 · 为什么它能打

Transformer 的三大杀招

并行
整句同时算,不像 RNN 要一个一个等。GPU 吃得满,训练飞快。
长程依赖
任意两个词一步直达,第 1 个词和第 100 个词关系同样好算。
可堆叠
层数越深、头越多、参数越大,能力越强(规模即能力)。

一句话收尾

Transformer 本质是个 "加权信息搬运机": 把每个词变成向量,让向量之间按"注意力权重"互相交换信息,叠很多层后, 模型就"理解"了上下文,从而能预测、能生成、能翻译、能问答。 所谓"大模型",不过是把这套结构做得很深、很宽、喂了海量数据而已。