Module 2 · Large Language Models Lesson 12 概览 · 自顶向下地图

Module 2 概览:LLM 如何生成文字

这是 Module 2 的"地图课"——先看清整条生成链路的骨架(每个框一句话,细节标 🅿️ 后面逐块挖),你就知道接下来每一课在整图的哪个位置。

Topic从"最后一层 hidden state"到"吐出下一个词",再循环生成整段文字
本课目标建立 Module 2 的整体骨架 + 一个关键新观念:生成是循环
PrerequisitesModule 1 ✅(Transformer 主干把 token 加工成 hidden state)
形式概览:只给骨架和一句话,不深入;细节留给后面的下钻课
衔接Module 1 停在"最后一层 hidden state",Module 2 从这里接手

① 承上启下

Module 1 给了我们什么:一段已有文字 → Transformer 主干 → 每个位置一个 hidden state(含上下文的向量)。但它还不是词——你之前敏锐地问过"输出去哪了"。

Module 2 要做什么:把 hidden state 变成真正的下一个词,并且一遍遍循环,生成出整段文字。这就是"语言模型会说话"的那部分。

② 完整生成链路(骨架)

已有文字 "The cat sat on the" Transformer 主干(Module 1) ✅ 已学 · 每个位置 → hidden state 取「最后一个位置」的 hidden state (要预测"接在整句后"的下一个词) 输出层 / unembedding 🅿️ hidden state → 词表每个词一个分数(logits) softmax → 词表上的概率分布 采样 sampling 🅿️ 从概率挑一个词(temperature/top-k/top-p 🅿️) 下一个词 "mat" 把新词接到输入末尾,重来(自回归循环 🅿️) 每转一圈只吐一个词;把它接上,再转 → 逐词生成整段文字 "The cat sat on the" → mat → . → It → was → ...
绿=已学,粉/青=Module 2 要挖的框,🅿️=细节后面讲。核心新观念:生成是一个循环,一次只吐一个词。

③ 关键新观念:生成是"循环"(自回归)

Module 1 你以为的是"一次前向"。但 LLM 生成文字其实是把这个前向反复做

预测一个词 → 接上 → 再预测 → 接上 → …

你和 ChatGPT 对话时看到字"一个个蹦出来",就是这个循环在转,每转一圈蹦一个词。

④ 本 Module 要逐块下钻的清单

输出层 / unembeddinghidden state 怎么变成"词表上每个词的分数"→ 概率 下一课
采样 sampling为什么不总是选概率最高的词?temperature / top-k / top-p 各调什么 🅿️
自回归循环把词接上再跑;以及为什么能复用之前的计算(伏笔 → Module 3 KV Cache) 🅿️
Context window模型一次最多能"看"多长的文字,超了怎么办 🅿️
Tokenization 细节 / BPE回到起点,深入"怎么切词、词表怎么建出来的" 🅿️
🅿️ 本课是地图,不深入。上面每个框现在只需知道"它在链路的哪个位置、大致干什么"。从下一课起,我们一个框一个框往里挖(自顶向下 → 逐块下钻)。

💬 深入问答(来自讨论)

Q:为什么用"最后一个位置"的 hidden state 来预测下一个词?

先分清两个"最后":层(layer)是纵深(总用最后一层,加工最充分);位置(position)是横向(句子第几个词)。预测下一个词用的是最后一层、最后一个位置那个向量。

机制:每个位置的 hidden state 负责预测"紧跟它后面"的那个词。位置1→第2词、位置2→第3词……位置N(最后)→第N+1词 = 我们要的下一个词。前面位置也在预测,但那些词已经有了,生成时不关心。

Q:每个位置能看到整句吗?(因果掩码)🅿️

不能。每个位置只能看到自己和它前面的词,看不到后面的——叫因果掩码 (causal mask)。因为训练时每个位置都在"预测它的下一个词",偷看后面就作弊了。最后一个位置恰好"前面所有词=整句",所以它看到了全部。(细节后面讲。)

Q:平时的"一问一答"聊天是怎么实现的?问题也拼进输入了吗?

对,聊天不是新机制,完全建在"预测下一个词"之上。整段对话被拼成一个长字符串,用特殊标记分出谁在说:<|user|>问题<|assistant|>,模型用同一个自回归循环从 <|assistant|> 后面一个词一个词续写——续出来的就是"回答"。没有单独的"问答模式"。

让它像助手一样答,靠:① 对话模板 (chat template)(特殊 token 标出 user/assistant 边界);② 指令微调 (SFT/RLHF)(训练模型"看到问题就续写有用回答")。🅿️ 细节在 Module 4/5。

一句话:问答 = 把整个对话拼成一个输入 + 模型被训练成"看到问题就续写助手回答"。本质和 "The cat sat on the → mat" 一样。

✅ 快速检查(用自己的话答)

  1. Module 1 结束时我们手里有什么?Module 2 要把它变成什么?
  2. 用一句话说:LLM 生成一整段文字,靠的是什么反复动作?(关键词:一次一个词、接上、再来)
  3. 预测下一个词时,用的是哪个位置的 hidden state?为什么是那个?

答完这 3 题,下一课我们下钻第一个框:输出层(hidden state → 词表概率)——正好接上你之前问的"输出去哪了"。