4.2.1 自回归语言模型与下一个 token 预测
4.2.1.1 自回归模型
在 4.1 节里,我们已经从“语言模型 = 预测下一个词的机器”的角度做过直观介绍。这里开始进入现代大语言模型(LLM)的主流形式:自回归(autoregressive)语言模型 。
给定一个 token 序列 \(x_{1:T} = (x_1, x_2, \dots, x_T)\),自回归模型假设整段文本的概率可以被分解为从左到右的一系列条件概率:
\[ p_\theta(x_{1:T}) = \prod_{t=1}^{T} p_\theta(x_t \mid x_{<t}) \]
也就是说,第 \(\displaystyle t\) 个 token 的分布,只依赖于它左侧所有已经出现的 token 。这就是“自回归”的含义:用自己过去的输出来回归(预测)未来。
在工程上,主流实现是 Transformer 的纯 Decoder 结构(第 2.4.4 节已介绍):
- 输入是一串 token 的嵌入向量;
- 自注意力(Self-Attention)使用因果掩码(causal mask),只允许每个位置看到自己左边的 token;
- 最后一层通过一个线性层 + Softmax 输出在整个词表上的概率分布,即“下一个 token 的分布”。
生成过程可以用几行伪代码概括:
tokens = [BOS] # 开始符
for t in range(T_max):
p = model(tokens) # 得到当前步的下一个 token 概率分布
x_next = sample(p) # 采样或取最大概率的 token
tokens.append(x_next)
if x_next == EOS: # 结束符:生成终止
break
这里的 sample 可以是贪心(取最大概率)、带温度的采样、top-k / nucleus sampling 等,在 8 章讲到动作 token 生成时还会再次出现。自回归生成的特点是:一步一步往后写,前文一旦写出就不再修改 。
【图 4-2-1 插图占位:画出一个 Transformer Decoder,仅向左注意力的掩码示意,并标注从 “我 / 今天 / 去 / 了 / …” 逐步预测下一 token 的流程。】
对于具身智能,本章暂时先只把“自回归语言模型”当成一个可以自然生成序列的核心模块 。在第 8 章你会看到,把“token”从纯文本扩展到视觉 token、动作 token 后,同样的自回归结构就能统一生成“视觉–语言–动作”序列,为 VLA 打下统一建模的基础。
4.2.1.2 预训练目标
大语言模型的预训练阶段,本质上就是在海量文本上,把上面的分解式变成一个优化问题:
\[ \mathcal{L}_{\text{LM}}(\theta) = - \mathbb{E}_{x_{1:T} \sim D} \left[ \sum_{t=1}^{T} \log p_\theta(x_t \mid x_{<t}) \right] \]
也就是最小化所有 token 的交叉熵损失,最大化训练语料在模型下的对数似然。这里的语料库 \(\displaystyle D\) 通常包括互联网网页、书籍、论文、代码、对话等复杂混合数据。
几个关键点:
- 自监督(self-supervised) 每个序列本身就自带标签:前缀是输入,当前 token 是要预测的“标签”。不需要额外人工标注,这使得 LLM 可以利用极其巨大的无标注语料进行训练。
- Teacher Forcing 训练方式 训练时第 \(\displaystyle t\) 步的条件 \((x_{<t})\) 是真实文本,而不是模型上一步生成的 token,这叫 teacher forcing。好处是梯度传播稳定、训练高效;代价是在推理时会出现所谓 ** exposure bias**(见 4.2.1.3)。
- 统一的预训练任务
不论是翻译、问答、代码补全还是推理题,在预训练阶段统统都被当成“补完一段文本”来处理:
- 输入部分可以是“题目 + 提示”;
- 输出部分是“答案 + 解释”;
- 模型完全不知道“现在是在做什么任务”,它只是尽量把“后面的 token 写得像训练数据里的样子”。
大量理论与经验研究表明,单一的“下一个 token 预测”目标,已经足以让模型学会相当复杂的模式:包括上下文学习(in-context learning)、算术推理等。
从具身智能的角度,可以先把这一步理解为:在预训练阶段,我们只是教会模型**“读写符号序列”**,包括自然语言、代码、数学公式等,还没有加入任何机器人动作或传感信息。后续在第 8、9 章,会把这些新模态也统一成“token 序列”,继续用同一个目标进行训练或微调。
4.2.1.3 优点与局限
一、优点
(1)目标统一、实现简单 自回归 + 下一个 token 预测,为整个大模型生态提供了一个极其统一的训练目标:
- 不需要为每个任务设计专门的损失函数;
- 不需要显式区分“分类 / 回归 / 生成”;
- 所有东西都变成“在某个上下文下继续写 token”。
(2)高效利用无标注数据 由于是自监督,可以拿几乎任何文本(甚至代码、公式、注释)去训练 LLM,极大提高了参数中的“世界知识密度”,也带来了预训练规模和能力随之扩展的Scaling Law 现象:模型变大、数据变多、算力增大,性能往往按幂律提升,并出现新的能力。
(3)生成能力自然、可扩展到多模态 自回归模型本来就是生成模型,扩展到多模态时,只需把图像 patch、动作 token 等也视作序列中的元素,让模型继续“从左到右生成序列”即可。这种统一视角是 VLM / VLA 等方向的基础(见第 8 章)。
二、局限
(1)推理与训练目标的错位 预训练阶段只关心“像训练语料一样写下一个 token”,并不直接关心真伪、因果、价值观 。如果训练语料里存在虚假或有害文本,模型也会学到相应模式。在开放式问答时,这直接表现为“看起来很真但其实瞎编”的幻觉(4.2.3、4.2.4 将展开)。
(2)Exposure Bias 与错误放大 训练时用真实历史 \((x_{<t})\),推理时用模型自己生成的历史。一旦前面几步略有偏差,后续条件分布就建立在“错误的历史”之上,错误可能迅速滚雪球。
(3)上下文有限与生成不可回头 自回归生成是单向、不可回退 的:
- 一旦生成了前面的 token,就很难整体重写全部回答;
- Transformer 的注意力复杂度是 \(O(n^2)\),上下文长度有限,长推理链或长对话中的信息很容易被截断。
(4)对具身任务来说缺乏环境闭环 在机器人场景中,只靠“文本自回归”是远远不够的:
- 现实世界状态随时间变化;
- 机器人需要根据传感器反馈不断调整动作。 然而自回归语言模型本身只看到“历史 token 序列”,看不到真实物理状态。这就是为什么后文会引入指令微调、RLHF、工具调用、VLA 架构 等机制,把“预测 token”这套能力嵌入到更大的闭环系统中。
4.2.2 指令微调与对话式模型
4.2.2.1 指令微调
预训练后的 LLM 更像一个“万能补全引擎”:写小说、续代码、模仿网页风格都没问题,但并不一定会乖乖按人类给出的“指令”办事 。指令微调(Instruction Tuning)就是要把它从“自动补全器”变成一个“听得懂任务说明的助手”。
典型流程(以 InstructGPT 为例):
-
构造指令数据集 收集大量“指令–输入–输出”三元组,例如:
- 指令:“请用一句话总结下列实验结果。”
- 输入:一段论文中的实验部分;
- 输出:简要总结。 这些样本覆盖分类、翻译、抽取、推理、代码等多种任务,并尽量使用自然语言描述,而不是硬编码任务 ID。
-
仍然使用下一个 token 预测作为目标 把“指令 + 输入 + 特殊分隔符”与“期望回答”拼接成一个长序列,继续用交叉熵最小化:
\[ \mathcal{L}_{\text{SFT}}(\theta) = - \sum_{t \in \text{answer}} \log p_\theta(x_t \mid x_{<t}) \]
这一步通常被称为 SFT(Supervised Fine-Tuning),从行为上把模型“拉向”人类示范。
-
指令格式与元信息 工程上往往约定统一格式,例如:
### 指令:
解释下面这段代码的功能。
### 输入:
...
### 回答:
模型只在“回答”部分计算损失。对于具身任务,这里的“输入”可以扩展为文字描述场景、传感信息摘要等。
指令微调的本质,是把“任务是什么”也用自然语言编码进输入,让同一个预训练模型,在见到不同指令时自动切换行为。对 VLA 而言,“把红色方块放进蓝色盒子”也只是另一种指令,后续我们会让模型学会把这种指令翻译成动作序列。
4.2.2.2 ChatGPT 风格的对话模型
在指令微调的基础上,再进一步引入多轮对话数据,就得到 ChatGPT 这类对话式模型 。典型训练样本不再是单轮的 “指令–回答”,而是一整段带角色的对话:
[system] 你是一个乐于助人的机器人助手。
[user] 我想学一下强化学习,需要什么基础?
[assistant] 你可以从概率论、线性代数和优化方法开始...
[user] 那和监督学习的主要区别是?
[assistant] ...
训练方式仍然是自回归下一个 token 预测:把整段对话视作一个长序列,只对 assistant 角色的 token 计算损失。通过大量此类数据,模型逐渐学会:
- 如何在对话中保持礼貌、连贯;
- 如何利用历史轮次补全省略信息(如“那这个算法呢?”中的“这个”指代前文);
- 如何遵守 system 角色设定(例如保持某种语气、遵守安全规范)。
在机器人场景下,ChatGPT 风格的模型承担的是人类接口 角色:
- 用户用自然语言表达需求、偏好和约束;
- 对话模型负责解释、澄清、分解任务;
- 后端再把相对明确的“子任务描述”交给 VLA 或传统规划器去执行(见第 8、10 章)。
【图 4-2-2 插图占位:对话式模型的输入输出示意图,展示 system / user / assistant 三类 role 如何拼接成一个统一的 token 序列。】
4.2.2.3 对话管理
传统任务型对话系统一般分成四个模块:
- 语义理解(NLU):把用户话语解析成槽位、意图;
- 对话状态跟踪(DST):维护“当前任务进展到哪一步”;
- 策略(Policy):根据状态选择下一步系统动作;
- 自然语言生成(NLG):把动作转成回复句子。
大语言模型出现后,很多系统把这四步合并到一个 LLM 里,让它直接“端到端生成回复”。但在工程实践,尤其是具身机器人领域,完全端到端的对话管理仍然不够安全与可靠,通常会采用“LLM + 外部对话管理器”的混合方案。
可以粗略分成三个层次:
- 纯生成式对话管理 全部状态都以文本形式隐含在对话历史中,由 LLM 自行“脑补”。优点是简单;缺点是难以强约束、安全性难保证。
- 结构化状态 + LLM
把关键信息(当前任务、机器人位置、是否抓到物体等)维护在结构化的“世界状态”中,让 LLM 只做两件事:
1)理解用户意图并转换为结构化指令(如调用 API
pick(object=red_block)); 2)在需要时给出自然语言说明。 这类似 Chapter 10 所说的“VLA 与传统规划模块共存”。 - LLM 作为高层“对话策略模块” 高层由 LLM 决定“应该和用户说/问什么”“需要调用哪个工具或子系统”;低层对话轮次管理、日志记录、安全过滤则由传统对话管理框架负责。
对机器人而言,对话管理还有一个核心要求:把“语言状态”与“物理状态”对齐 。例如用户说“再往左一点”,系统需要结合当前相机画面、机器人位姿来解释这个“左”。这要求对话管理器必须同时读懂对话历史和环境状态,而不能只靠语言模型单方面推理;这一点会在第 4.4、10.1 节继续展开。
4.2.3 RLHF(人类反馈强化学习)的动机与基本流程
4.2.3.1 模型幻觉与价值不对齐问题
从前两小节可以看到:
- 预训练 + 指令微调的模型已经很会“说话”;
- 但它的优化目标依然是“写出高似然的下一个 token”。
结果就是:
- 幻觉(Hallucination) LLM 会产生看起来流畅、逻辑通顺但事实错误 的内容,例如捏造不存在的论文、凭空编造 API 接口等。多篇综述将这种现象统称为“幻觉”,强调其在开放式问答、信息检索等场景中的严重性。近期研究指出,当前评测指标往往鼓励“宁可乱猜也不要说不知道”,这进一步放大了幻觉:模型会被奖励为“好考生”,而不是“诚实的助手”。
- 价值观与安全的不对齐 预训练语料包含大量有毒言论、偏见、甚至危险做法。仅靠指令微调,很难保证模型在所有场景下都避免攻击性语言、尊重隐私、避免提供危险操作建议 。InstructGPT 的工作系统地展示了:仅放大模型规模,不能自动解决“对齐(alignment)”问题。
在纯文本助手里,幻觉“顶多说错话”;而在具身机器人中,如果把 LLM 输出直接映射成实际动作,错误决策可能导致设备损坏甚至安全事故 。这就是引入 RLHF 的直接动机:
- 不再只看“预测下一个 token 的概率”;
- 而是让人类对模型行为进行打分或排序,用强化学习把这些偏好编码进策略中,使之更“有用、无害、诚实”。
4.2.3.2 人类反馈数据
RLHF 一般包含两类核心人类数据(在 InstructGPT 与后续工作中已形成“标准三部曲”):
- 示范数据(Demonstrations)——监督微调阶段 标注者看到一个 prompt(例如用户问题),直接写出一份他们认为“理想的回答”。这些数据用于 SFT 阶段,把模型从纯 LM 拉到“基本像个助手”的水平。
- 偏好数据(Preference Data)——奖励模型阶段 给定同一个 prompt 和多条候选回答(通常来自 SFT 模型采样),标注者只需在其中排序或选择更喜欢的一条 。
训练一个奖励模型 \(r_\phi(x, y)\),目标是让其在“好回答”上给出的分数高于“差回答”。典型的损失函数为成对逻辑回归:
\[ \mathcal{L}_{\text{RM}}(\phi) = - \mathbb{E}_{(x, y_w, y_l)} \left[ \log \sigma\big(r_\phi(x, y_w) - r_\phi(x, y_l)\big) \right] \]
使得 \(r_\phi\) 近似“人类偏好函数”。
- 相比绝对打分,成对比较更稳定、简单;
- 采集到的样本形如 \((x, y_{\text{good}}, y_{\text{bad}})\)。
除了文本助手,类似的人类偏好也可以施加在机器人轨迹 上:例如给两段示教视频打分“哪种抓取更稳定、更安全”。这与 5.3 节的“奖励学习”“逆强化学习”在思想上是一致的,只是对象从“物理轨迹”变成了“文本回答”。
4.2.3.3 强化学习微调
在拿到 SFT 模型和奖励模型后,RLHF 的第三步才是真正的“强化学习”:用奖励模型指导策略(LLM)更新 。
典型做法(以 PPO 为例)可简化为:
-
策略初始化 把指令微调后的模型记为 \(\pi_{\text{SFT}}\)。以其为起点初始化 RL 策略 \(\pi_\theta\),这样一开始行为就已经“像个人”。
-
生成数据并打分 从真实或合成的 prompt 分布 \(x \sim D\) 采样,令策略生成回答 \(y \sim \pi_\theta(\cdot \mid x)\)。
- 用奖励模型计算分数 \(r_\phi(x, y)\);
- 同时加入一个 KL 惩罚项,限制策略不要偏离初始的 \(\pi_{\text{SFT}}\)。
-
优化目标 我们希望最大化期望奖励,同时保持与 SFT 模型接近,可以写成:
\[ \max_\theta \ \mathbb{E}_{x, y \sim \pi_\theta} \big[ r_\phi(x, y) - \beta , \mathrm{KL}(\pi_\theta(\cdot|x)\Vert \pi_{\text{SFT}}(\cdot|x)) \big] \]
其中 \(\beta\) 控制“听奖励模型”和“别离谱乱跑”之间的平衡。实际实现中使用 PPO 这样的 Actor–Critic 算法,以保证更新稳定(这与第 5 章中的 RL 算法是一脉相承的)。
-
得到 RLHF 模型 经过多轮迭代,我们得到一个既继承预训练知识、又更符合人类偏好的新策略。InstructGPT 结果显示,1.3B 参数的 RLHF 模型,在人工偏好评估中甚至可以优于 175B 的原始 GPT-3,可见“对齐”有时比“变大”更重要。
【图 4-2-3 插图占位:RLHF 三阶段流水线示意图——左侧是 SFT,中央是“人类偏好数据 + 奖励模型”,右侧是 PPO 微调策略的循环。】
在具身智能语境下,可以类比地考虑:
- 策略 \(\pi_\theta\) 不再输出文本,而是输出动作 token 序列;
- 奖励模型可以基于人类对轨迹视频的偏好训练;
- PPO 之类的 RL 算法同样适用。 不过机器人 RLHF 还需要解决安全约束、样本效率等额外问题,这会在第 5 章和第 9 章进一步探讨。
4.2.4 LLM 的推理能力与局限性
4.2.4.1 涌现的推理能力
一个看似“魔法”的现象是:随着参数量、数据量和训练算力的扩大,LLM 会突然表现出一些在小模型中不存在的能力,例如多步算术推理、链式思维(Chain-of-Thought)推理、复杂代码生成等。Wei 等人将这种现象命名为“涌现能力(emergent abilities)”并进行了系统量化。
典型观察包括:
- 在模型规模较小时,某些任务(如多步骤算术、逻辑组合题)准确率接近随机;
- 当参数量跨过某个阈值后,性能会突然出现“跳变”;
- 一些研究从理论上分析了:单一的下一个 token 预测任务,就足以让模型在上下文中学会“隐式拟合任务”和“算法样式”,从而表现出 in-context learning、算术等能力。
更直观地说,大模型在学习如何“最合理地接龙”时,被迫压缩了大量统计结构和模式,包括:
- 语法、语义模式;
- 论证结构(先提出假设,再论证,再得结论);
- 问题–解题步骤–答案的模板。
当我们用“逐步思考一下再回答”的提示(Chain-of-Thought prompting)时,其实是在要求模型显式展开它在内部已经学到的“解题模板”。这并不等价于人类的逻辑推理,但在很多任务上效果非常接近。
【图 4-2-4 插图占位:横轴为模型规模(log 尺度),纵轴为某推理任务准确率,画出一条在某点附近出现明显“弯折”的曲线,用以说明涌现能力。】
对具身智能来说,这种涌现能力的意义在于:
- 可以把高层任务分解、策略规划、条件判断等“符号逻辑味很重”的部分交给 LLM;
- 再由 VLA 或传统控制模块负责把这些高层步骤“编译”成具体的物理动作。 换句话说,LLM 更适合担当文本世界里的“策士”,而不是直接作为底层执行器。
4.2.4.2 知识局限
尽管 LLM 参数中“存了大量知识”,但它的知识能力有几个根本限制:
- 静态知识:有时间截止 预训练数据是在某个时间点之前采集的,之后发生的事件、发布的论文、新的 API 等,模型天然不知道 。要获取最新知识,必须连接检索或工具。
- 不完整且有偏 即便在截止时间之前,训练语料也不可能覆盖世界的全部事实,而且采集自互联网势必带来地域、语言、阶层等偏差。这些偏差会被模型放大乃至固化。
- “记住在参数里”并不等于“随时取得出” 即使某个事实确实出现在训练文本中,模型也可能因为 prompt 的写法不同、上下文干扰等原因而给出错误答案。这和人类“记得学过,但一时想不起来”有点类似,但机制完全不同。
一种主流缓解方式是 检索增强生成(Retrieval-Augmented Generation, RAG):在推理时先从外部知识库(如 Wikipedia 或公司内网文档)检索相关文段,再把检索结果和用户问题一起喂给 LLM,让它在“外部记忆 + 内部参数”的联合信息上生成答案。RAG 已被证明能显著提高知识密集型任务的准确度和可追溯性。
另一个方向是工具增强(tool-augmented)语言模型:让 LLM 学会在需要时调用外部计算器、搜索引擎、数据库查询、代码执行环境等,从而把自己从“单机离线模型”升级为“会使用工具的代理(agent)”。系统性综述表明,这类架构在复杂推理、数值计算、领域专用知识等任务中有显著优势。
对于机器人而言,这种“外部知识源”更加重要:
- 参数里的知识可以告诉机器人“如何一般性地折叠衣服”;
- 但只有外部传感(相机、力觉)和专用地图/数据库,才能告诉它“这件衣服到底在哪、当前皱成什么样”。 因此,在具身系统中,LLM 的知识局限应该通过环境感知 + 检索 + 专用知识库 来弥补,而不能被当成“世界真相的唯一来源”。
4.2.4.3 错觉与事实性问题
“幻觉”一词在本书中已经多次出现,这里做一个更系统的整理。大部分研究把 LLM 幻觉定义为:输出内容在形式上流畅自然,但在事实、逻辑或与上下文一致性上存在错误或捏造 。
常见类型可以粗略分为:
- 上下文外幻觉(extrinsic):回答与外部真实世界矛盾,例如捏造不存在的论文、引用虚假的法律条款;
- 上下文内幻觉(intrinsic):回答与输入上下文自身矛盾或逻辑不一致,例如前面说“这是一个 3×3 矩阵”,后面却把它当成 2×2 处理。
造成幻觉的根本原因有:
- 目标函数不追求“真”,只追求“像” 下一个 token 预测 + RLHF(以人类偏好为导向),本质上都鼓励模型产生“看起来像好答案的文本”。只要在训练/偏好数据中,高分回答往往是“自信作答”而不是“诚实地说不知道”,模型就会更倾向于猜测而不是拒答。
- 训练数据本身包含错误与噪声 互联网文本并不总是可靠,模型可能正确学习到“错误的事实”。
- 生成算法放大高概率但错误的“故事” 为了提高可读性,我们常用温度调节、top-k / nucleus sampling 等采样策略;这些策略会倾向抽取“概率较高的 token”,一旦模型的内部分布略有偏差,就可能生成一条表面极其合理 的错误叙事。
在工程上,人们提出了多种缓解方案:
- RAG 与知识库 grounding:在回答前强制检索权威数据源,让模型“围绕检索结果说话”;
- 自一致性与多次采样交叉验证:对同一问题生成多份答案,相互比对,选取一致性更高的一份;
- 显式不确定性表达:修改训练与评价指标,鼓励模型在不确定时说“我不知道”而不是乱猜;
- 外部验证器:用小模型或规则系统对 LLM 输出进行事实核查,例如验证引用是否真实存在。
尽管如此,当前共识仍然是:幻觉无法被完全消除,只能被压低到某个可接受水平 。这在纯文本助手里已经是一个严重问题,在具身机器人系统中更是安全关键:
- 如果 LLM 错把“有水的杯子”当成空杯子去翻转倒置,后果就是一桌水;
- 如果 LLM 误判危险区域、忽略用户设定的安全约束,会直接演化为物理世界的事故。
因此,在本书后续关于 VLA 系统部署与安全性(第 10.3 节)中,我们会坚持一个原则:
不要把 LLM 的输出当成“事实”,而应当当成“需要验证与约束的建议” 。
在机器人具身智能的发展路线中,大语言模型提供了强大的知识与推理接口,但它必须始终处在传感–规划–控制 这一闭环架构之中,被感知模块、控制约束和人类监督共同“托举”,才能真正安全、可靠地发挥价值。