LLM底层原理-Transformer-Attention-RLHF

2026-08-08hweihaobo-herbert👁 83 阅读9 分钟阅读📝 2632 字💬 2 评论
LLM底层原理-Transformer-Attention-RLHF

LLM 底层原理:Transformer、Attention 机制与 RLHF

用尽可能通俗的方式,讲清楚大语言模型到底是怎么工作的。


一、一个核心问题:机器怎么"理解"文字?

计算机只认识数字。要让模型理解文字,第一步是把每个词变成一个向量——一串数字。

"猫" → [0.12, -0.34, 0.87, 0.05, ...]  (一个 768 维或 4096 维的列表)

这叫 Embedding(嵌入)。奇妙之处在于:向量之间的方向和距离能表达语义关系。比如:

"国王" - "男人" + "女人" ≈ "女王"

但这只是静态的词向量。"猫"无论出现在什么句子里,向量都一样。而实际上:

  • “我在撸” —— 猫是宠物
  • “这台服务器跑的是 Tomcat” —— 猫是软件

同一个词在不同上下文里意思不同。Transformer 解决的就是这个问题——让每个词的向量"吸收"周围词的信息,变成上下文相关的表示。


二、Transformer:一切的基础

2017 年,Google 在论文《Attention Is All You Need》中提出 Transformer。它彻底取代了之前的 RNN/LSTM,成为所有现代 LLM 的基石。

2.1 整体结构:编码器 - 解码器

输入文本 → [编码器] → 深层理解 → [解码器] → 逐词输出
  • 编码器(Encoder):读完整段输入,形成深层理解
  • 解码器(Decoder):基于理解,逐词生成输出

GPT 系列只用了解码器部分(因为它的任务就是"续写"),BERT 只用了编码器(因为它的任务是"理解")。

2.2 Transformer Block 的核心三板斧

每经过一个 Transformer 层,输入向量都会变得更"聪明"一点。一层里包含三个关键操作:

输入向量① 多头自注意力(Multi-Head Self-Attention)  ← 核心,后面细讲② 残差连接 + Layer Normalization           ← 防止梯度消失,稳定训练③ 前馈网络(Feed-Forward Network)          ← 一个简单的全连接网络④ 残差连接 + Layer Normalization输出向量(比输入更"理解"了上下文)

这些层可以堆叠很多次——GPT-3 有 96 层,GPT-4 据说超过 120 层。每经过一层,向量对上下文的捕捉就深一层。


三、Attention 机制:模型的核心能力

3.1 直觉理解

想象你在读这句话:

“昨天小明去打篮球,投进了关键的最后一球。”

读到这里,你的大脑自动把"他"和"小明"关联起来了。这就是 Attention——在一段信息中,让每个词关注它应该关注的词。

3.2 Self-Attention 的具体步骤

Self-Attention(自注意力)就是让句子中每个词都去看看其他所有词,算出"我应该关注你多少"。通过三个矩阵实现:

对每个词,生成三个向量:

向量 全称 比喻
Q(Query) 查询 “我在找什么?” —— 当前词在搜索什么信息
K(Key) “我是什么?” —— 当前词身上挂的标签
V(Value) “我携带什么信息?” —— 当前词实际代表的内容

计算过程(图书检索类比):

1. 你在图书馆找书(Query = "我需要关于深度学习的书")2. 每本书都有标签(Key = "深度学习", "机器学习", "小说"...)3. Q 和每本书的 K 做相似度计算 → 得分(越相关得分越高)4. 得分归一化(Softmax)→ 变成 0~1 的权重5. 按权重取书的内容(Value)加权求和 → 得到你真正需要的信息

公式实现:

$$\text{Attention}(Q, K, V) = \text{Softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) V$$

其中 $\sqrt{d_k}$ 是缩放因子,防止点积结果太大导致 Softmax 梯度消失。

3.3 多头注意力(Multi-Head Attention)

单头注意力只能捕捉一种关系。比如:

追着老鼠,最终把它抓住了。”

单头可能只捕捉到"猫-追"的关系,忽略了"老鼠-被抓"的关系。多头注意力并行运行多个(如 8 个、16 个)注意力头,每个头可以从不同角度理解句子:

头 # 可能捕捉的关系
头 1 主谓关系:猫 → 追
头 2 动宾关系:追 → 老鼠
头 3 指代关系:它 → 老鼠
头 4 长距离依赖

所有头的结果拼接起来,形成丰富的语义表示。

3.4 注意力可视化:直观理解

输入句子:"The cat sat on the mat"cat 对各词的注意力权重:  The:  0.02  cat:  0.85   ← 关注自己  sat:  0.08  on:   0.01  the:  0.01  mat:  0.03

越重要的词,注意力权重越高。训练过程中,模型自己学会了"该怎么分配注意力"。


四、训练 LLM 的三个阶段

大语言模型的训练不是一步到位的,而是分阶段精雕细琢:

预训练(Pre-training)  → 监督微调(SFT, Supervised Fine-Tuning)    → 人类反馈强化学习(RLHF)

4.1 第一阶段:预训练——“读完半个互联网”

任务:给定前文,预测下一个词。

输入:"中国的首都是"模型预测:"北" → "京" → [结束]

模型在万亿级 token 的文本上做这个任务——维基百科、书籍、代码仓库、论坛帖子。训练完的模型有了海量知识,但它只会"续写",不会"对话"。

关键技术

  • 因果注意力掩码:防止模型"偷看"未来的词,确保它真的在"预测"而不是"背诵"
  • 梯度累积 + 混合精度:模型太大了,4096 块 GPU 并行训练

这一阶段的产出叫 Base Model(基座模型)。

4.2 第二阶段:监督微调(SFT)——“学会对话”

Base Model 知道很多东西,但不会以问答形式交流。你问它"什么是光合作用",它可能续写"是植物的重要生理过程之一,从 19 世纪开始被研究…"

SFT 做的就是:给模型喂高质量的人类标注对话数据

{"prompt": "什么是光合作用?", "response": "光合作用是植物利用光能...(结构化的专业回答)"}

几千到几万条这样的对话数据,让模型学会:

  • 回答要直接回应问题
  • 不懂要说"不知道"
  • 保持礼貌和安全

这一阶段的产出叫 SFT Model。

4.3 第三阶段:RLHF——“符合人类偏好”

SFT 后模型已经能对话了,但还有问题:

  • 回答太啰嗦
  • 偶尔有偏见
  • 有时会编造有害内容

RLHF(Reinforcement Learning from Human Feedback)解决"对齐"问题——让模型的输出符合人类价值观。

三步走:

Step 1:收集人类偏好数据

对同一个 Prompt,让模型生成多个回答,标注员排序:Prompt: "如何赚大钱?"回答 A:"通过学习和努力...(正常建议)"        → 排第 1(最好)回答 B:"买彩票"                                → 排第 2回答 C:"骗人、偷窃(危险内容)"               → 排第 3(最差)

Step 2:训练奖励模型(Reward Model)

基于排序数据,训练一个"打分器"——输入一个回答,输出一个分数,分数越高的回答越"符合人类偏好"。

Step 3:PPO 强化学习

用奖励模型给 SFT Model 的回答打分,通过 PPO(Proximal Policy Optimization) 算法更新模型参数,让模型倾向于生成高分回答。

同时加入 KL 散度惩罚:不能让模型"学歪了"偏离太远——为了高分而胡说八道。

最终产出就是 ChatGPT / Claude / Gemini 这样你实际使用的对话模型。


五、GPT 的解码过程:如何逐词生成

你输入问题的那一刻,GPT 做的事情:

1. 你的输入被 Tokenizer 切成 tokens   "解释AI" → ["解释", "A", "I"]  或  ["解释", "AI"]2. 每个 token 查 Embedding 表,变成向量3. 向量们加位置编码(Positional Encoding)   让模型知道"A"在"I"前面(Transformer 本身不感知顺序)4. 逐层经过 Transformer Blocks   每层:自注意力 → 前馈网络 → 残差连接5. 最后输出一个概率分布   模型给出下一个 token 是每个可能词的概率:   "人工" 0.32, "智能" 0.28, "技术" 0.15, ...6. 采样策略决定选哪个   - 贪心:直接选概率最高的(每次都一样)   - Top-k:从概率最高的 k 个里随机选(增加多样性)   - Top-p(Nucleus):累计概率到 p 的候选池里随机选   - Temperature:T↑ → 概率分布更平 → 输出更随机/有创意7. 选定的 token 拼回输入尾部,重复步骤 1-6   直到生成 <EOS> 结束标记或达到最大长度

六、关键细节补遗

6.1 位置编码

Transformer 并行处理所有 token(不像 RNN 逐词串行),所以它不知道词的先后顺序。解决方式是给每个位置一个独特的信号,加在词向量上。

  • 正弦位置编码:原始 Transformer 用的,不同频率的正弦/余弦波
  • 可学习位置编码:BERT/GPT 用的,把位置也当输入训练
  • 旋转位置编码(RoPE):Llama、Qwen 等用的,相对位置编码,外推性好

6.2 Tokenizer

GPT 的参数"120B"指的是 1200 亿个参数,不是 1200 亿个词。但 Tokenizer 决定了你的输入被切成多少个 token——影响速度和成本。

英文:"Hello world" → 2 tokens(英文天然按空格分词)中文:"你好世界"   → 4-6 tokens(每个字 1-2 tokens)

这也是中文 API 消耗比英文多的原因。

6.3 幻觉的根源

LLM 本质是"概率续写模型",不是"事实查证系统"。它没有"真假"的概念,只有"训练数据里什么样的词接在这里概率高"。当训练数据不足或矛盾时,模型会编造——这就是幻觉。


七、一张图总结

原始语料(万亿 token)[Tokenizer] 文本 → tokens[Embedding + Positional Encoding] tokens → 向量[×N Transformer Layers]  每层: Self-Attention → FFN → Add & Norm基座模型(Base Model)—— 只会续写[监督微调 SFT] 高质量对话数据对话模型 —— 能问答了[RLHF] 人类偏好 + 奖励模型 + PPO对齐后的对话模型 —— ChatGPT / Claude

一句话总结:Transformer 的 Self-Attention 让模型能理解上下文中词与词的关系,大规模预训练灌入知识,SFT 教它对话,RLHF 让它对齐人类价值观——这就是你面前聊天框里的 AI。

hweihaobo-herbert
技术博客作者
2632 字 · 2 评论
2026-08-08

评论 (2)

WeHoBo2026-08-08T11:27

确实

hweihaobo-herbert2026-08-08T00:38

写的真好

登录后发表评论