← 后训练概览(英文)

QRS 讲解 · 后训练 · 完整指南

从下一个 token 预测,到会推理的助手

先讲历史,再讲监督微调、偏好学习、它们所依赖的强化学习、PPO 之后出现的方法,以及这些方法在实践中如何运行和评测。每个概念都先讲直觉,再讲数学。

Read in English →

第 1 部分 约 11 分钟从预训练到后训练

1一个任务一个模型

直到 2010 年代后期,自然语言处理基本上是一个问题一个模型。情感分类器、问答系统和翻译模型各有各的架构、标注数据和训练流程;一个模型训练好之后,若要解决另一个问题,就再训练一个模型。

能共享的只有最底层。word2vec (Mikolov et al., 2013) 和 GloVe (Pennington et al., 2014) 这样的词向量从无标注文本中为每个词学习一个向量,任务模型把这些向量当作输入特征。这已经是迁移学习,但比较浅:每个词无论上下文如何都只有一个向量,所以 “river bank” 和 “bank account” 里的 bank 看起来一样,而词向量之上的一切仍然需要为每个任务从头学起。

2015 到 2020 年间,情况变了。领域逐渐收敛到另一套做法:在海量无标注文本上训练一个大型语言模型,保留下来,再适配到各个任务。这种“广泛训练一次、低成本适配多次”的做法,就是今天预训练与后训练分工的雏形。

2先预训练,再适配

Word vectorsPre-train, then adaptArchitectureScale and promptingPost-training2013word2vec2015Dai & Le2017Transformer2018ULMFiTELMoGPT-1BERT2019GPT-2T52020GPT-32021FLAN2022InstructGPT2023DPO2024GRPOo12025DeepSeek-R1
Word vectorsPre-train, then adaptArchitectureScale and promptingPost-training2013word2vec and GloVe2015Semi-supervised sequence learning2017The Transformer2018ULMFiT2018ELMo2018GPT-12018BERT2019GPT-22019T52020GPT-32021FLAN2022InstructGPT2023Direct Preference Optimization2024GRPO (DeepSeekMath)2024OpenAI o12025DeepSeek-R1
图 1. 从词向量到推理模型。颜色表示每个节点所属的范式。点击“播放”、点击某个节点,或将焦点置于时间线上后用方向键移动。

悄然开场:半监督序列学习(2015)

Dai and Le (2015) 先把 LSTM 预训练成语言模型或序列自编码器,再用它的权重初始化有监督的文本分类器。经过预训练的网络在训练时更稳定,在多个分类基准上也有更好的泛化表现。“语言模型不必是最终产品,而可以作为有监督学习的预训练阶段”这一想法,在当时已经出现。

但这一想法并未立刻流行起来。LSTM 沿着序列逐步处理,训练难以并行,规模一大成本就很高。在缺乏充分证据表明预训练整个网络确实值得之前,人们没有足够理由放弃熟悉的“预训练词向量 + 任务专用模型”模式。

上下文相关的表示:ELMo(2018)

ELMo (Peters et al., 2018) 针对的是“一个词只有一个向量”的局限。它训练了一个双向 LSTM 语言模型:一个方向预测下一个词,另一个方向预测前一个词,因此每个词的内部表示都依赖上下文。不同层捕捉的信息不同,因此 ELMo 的最终表示是各层的任务特定加权组合,权重为每个任务单独学习。

ELMo 表明,大规模预训练语言模型学到的表示可以迁移到许多任务,并将这一领域从静态表示推向了上下文表示。但它仍然是基于特征的迁移:预训练模型生成特征,再交给一个独立的任务模型使用。

微调整个模型:ULMFiT(2018)

ULMFiT (Howard and Ruder, 2018) 选择了另一条路:既然已经有了一个通用语言模型,就直接在目标任务上微调这个模型本身。其做法分三步:先在通用文本上预训练语言模型;再用目标任务自己的文本继续做语言模型训练,使模型适应该领域的数据分布;最后加上分类器,用标签进行训练。中间这一步已经带有今天持续预训练和分阶段适配的影子。

在小数据集上微调整个网络,容易产生灾难性遗忘:大幅更新可能抹去预训练学到的内容。ULMFiT 使用了判别式微调(不同层使用不同学习率)、倾斜三角学习率调度和逐层解冻(先解冻最上层,再解冻下一层,依此类推)。这些具体技巧今天已不再那么重要,但“适配”与“遗忘”之间的张力仍是后训练的核心问题。

它最亮眼的结果体现在数据效率上:论文报告,只用 100 个标注样本,ULMFiT 就能达到从头训练使用 100 倍数据时的效果。这有力地说明,预训练模型已经掌握了任务所需的大部分内容,微调主要只是完成适配。

与任务无关的 Transformer:GPT-1(2018)

GPT-1 (Radford et al., 2018) 将“先预训练再微调”与 Transformer (Vaswani et al., 2017) 结合了起来。Transformer 对所有位置并行处理,使规模大得多的预训练变得可行。GPT-1 在一个书籍语料上预训练了一个仅解码器的 Transformer,然后针对每个任务进行微调。

它的关键设计是改变输入,而不是改变模型。结构差异很大的任务,通过任务特定的输入变换统一转换成 token 序列:蕴含任务把前提和假设用分隔符拼接;相似度任务把两个句子按两种顺序各拼一次;多项选择任务把上下文分别与每个候选答案配对。同一个网络处理所有任务,只额外加一个小的线性输出层。这是“把任务写成文本”的早期形态:今天用户直接用自然语言表达任务,而 GPT-1 用的是设计者规定的固定格式。

在微调时,GPT-1 还保留语言建模损失作为辅助目标,以免模型丢掉已有的语言建模能力。这与 ULMFiT 所面对的担忧相同,只是解法不同。论文的消融实验发现,辅助损失在较大的数据集上有帮助,在较小的数据集上没有明显收益,因此它并不是 GPT-1 最主要的贡献。

更重要的是一个关于零样本行为的观察。作者在预训练过程中的多个检查点上,测量尚未做任何微调的模型用简单启发式解决若干任务的能力。随着预训练的进行,性能总体上相当平稳地上升。他们提出的假设至今仍影响着这个领域:为了做好下一个 token 预测,语言模型不得不学会下游任务所需的一些能力,部分原因是无标注文本本身就包含这些任务的样例。LSTM 也表现出类似行为,但波动更大;作者据此推测 Transformer 的归纳偏置更有利于迁移。在另一些任务上,零样本启发式效果很弱,因此这并没有让微调变得多余。

如果预训练已经让模型具备通用表示和一定的问题解决能力,那么后训练究竟是在教会模型新的能力,还是在选择并释放模型已有的能力?

双向预训练:BERT(2018)

2018 年底,BERT (Devlin et al., 2019) 通过掩码语言建模(从两侧预测被随机遮住的 token)和下一句预测任务预训练了一个双向 Transformer 编码器,随后在大量语言理解基准上微调,取得了很强的性能。BERT 使“预训练大模型,再为每个任务微调”成为 NLP 的主流范式。不过,它仍需要为每个任务单独微调,而且编码器不能生成文本,统一的任务接口尚未出现。

3规模与提示

既然一个模型可以适配这么多任务,而仅凭预训练就已能产生一些零样本能力,我们真的还需要为每个任务做微调吗?

GPT-2:语言模型是无监督的多任务学习者(2019)

GPT-2 论文的标题就是它的论点 (Radford et al., 2019)。网络文本中充满了隐含的任务示范:采访记录里“Q:”后面跟着问题,“A:”后面跟着回答;文章后面接“TL;DR:”,再往后就是摘要。一个能很好地预测这类文本的模型,可能不得不学会“Q: … A:”之后应该跟什么。因此,在足够多的文本上训练足够大的模型,任务就可能在没有被标注为任务的情况下被学会。

GPT-2 拥有 15 亿参数,是 GPT-1 的十倍以上,训练数据是 WebText,约 40 GB 文本,来自约 800 万个网页文档。作者训练了多个规模的模型,并在不做任何微调的零样本设置下评测;各任务上的性能随模型规模大致呈对数线性提升。这是后来被系统研究的规模规律 (Kaplan et al., 2020) 的早期信号。

GPT-2 显然仅凭预训练就获得了与任务相关的行为。这也说明为什么预训练不是全部:问它一个问题,基座模型可能会继续续写文档而不是回答,比如接着写更多问题。它有知识,却没有按用户期望去使用知识的习惯。这一差距正是指令微调最重要的动机之一。

T5:一切都是文本到文本(2019)

T5 (Raffel et al., 2020) 没有提出新架构。它的贡献是统一的格式:所有任务都是“输入文本,输出文本”,并加上任务前缀,比如 translate English to German: 或 summarize:。这样,同一个模型、同一种损失就能处理翻译、摘要、分类和问答。T5 仍需要在下游任务上微调,但它的系统性研究也发现,性能随规模持续提升,一直到最大的 110 亿参数模型。

GPT-3:上下文学习(2020)

GPT-3 (Brown et al., 2020) 拥有 1750 亿参数,比 GPT-2 大两个数量级;论文训练了从 1.25 亿参数起的八个规模。在大量任务上,零样本、单样本和少样本性能总体都随规模上升,而且零样本与少样本之间的差距往往随模型增大而扩大。

少样本上下文学习是指在提示里放几个现成的例子,不更新任何权重,让模型按规律继续写下去。给定

English → French sea → mer cat → chat cheese → ?

模型很可能输出 fromage。这些例子把模型的输出分布推向我们想要的方向,却没有改动任何参数。可以说,GPT-3 最重要的规模现象不是更大的模型生成的文本更好,而是它们更擅长借助提示完成任务。

监督微调是自然的下一步。上下文学习表明,几个示范就能临时把一个固定模型引向某个任务;SFT 则把“按我的要求做”这种行为写进参数里,永久生效,并对所有提示生效。后训练的其余部分都建立在它之上。

贯穿全文的例子

为了看清每种方法在同一个对象上的作用,我们在全文中跟踪同一个提示:“What is the capital of France?”(法国的首都是哪里?)。我们的玩具模型可以给出六个完整回复 y1 到 y6 中的一个。下表列出后训练各阶段给它们的概率,以及后面阶段要用到的两个分数:一个奖励模型(§9),它学会了偏爱完整回答,但也高估了奉承;以及一个验证器(§20),它只检查回复是否答出了 Paris。

回复内容基座模型SFT 之后(πref)奖励模型 r验证器RLHF 之后(β = 1)
y1“What is the capital of Germany?”42%4%−1.500.3%
y2“France is a country in Western Europe, bordered by…”26%11%−0.403%
y3“Paris.”12%40%0.51(答出 Paris)25%
y4“The capital of France is Paris.”7%33%1.61(答出 Paris)61%
y5“Lyon.”10%9%−1.001%
y6“Great question! The capital of France is Paris, a city famous for…”3%3%2.21(答出 Paris)10%

从左到右读。基座模型大多在续写文档,就像 GPT-2 那样:y1 把这个提示当成测验里的一道题。SFT 把概率转移到了回答上(§6)。RLHF 在贴近 SFT 模型的前提下优化奖励模型的分数,进一步集中概率,主要集中到完整句子 y4 上,也有一部分集中到奖励模型高估的奉承式回复 y6 上(§16 与 §19)。所有数字都是示意,并非真实模型的测量结果。

第 1 部分一句话总结

预训练把知识和技能集中到同一个模型里;后训练要回答的开放问题,是如何让这个模型可靠地按人们期望的方式使用它们。

自测 为什么说 ELMo 是基于特征的迁移?ULMFiT 的做法有什么不同?

ELMo 的预训练网络生成表示,作为特征输入给每个任务单独训练的模型。ULMFiT 则直接在目标任务上微调语言模型自身的参数,这正是现代后训练所走的路线。

第 2 部分 约 11 分钟监督微调

4SFT 优化的是什么

监督微调(Supervised Fine-Tuning,SFT),又称指令微调,是在由提示–回复对组成的数据集上继续训练预训练模型,使其学会遵循指令并按预期方式作答。它通常紧接在预训练之后,是从通用语言能力通往有用行为的桥梁。

训练信号与预训练相同:预测下一个 token。变化的是数据。假设我们有 N 对提示 x 和参考回复 y=(y1,…,yT):

𝒟={(xi,yi)}i=1N,Pθ(y∣x)=∏t=1TPθ(yt∣x,y<t).

这一分解正是概率的链式法则:模型逐个生成 token,每个 token 都以提示和此前生成的 token 为条件。最大似然会选择使观测到的回复概率尽可能大的参数。

假设样本对彼此独立,则似然为各样本概率的乘积;取负对数后转化为可最小化的求和:

θ⋆=argmaxθ∏i=1NPθ(yi∣xi)=argminθ[−∑i=1NlogPθ(yi∣xi)].

代入分解式后,乘积的对数化为对数之和,每个回复 token 对应一项:

ℒSFT(θ)=−∑i=1N∑t=1TilogPθ(yi,t∣xi,yi,<t).

每一项都是正确 token 上的 one-hot 分布与模型在词表上的预测分布之间的交叉熵,所以 SFT 本质上是 token 级分类,与预训练完全一样。在数据上取平均后,最小化该损失等价于最小化 KL 散度 KL(pdata‖Pθ),因为剩余的数据熵项与 θ 无关。这种“前向” KL 会严重惩罚模型给数据中的任何内容赋予低概率,因此 SFT 倾向于覆盖所有示范,而不是只挑出其中最好的。这一点在 §7 中很重要。

5数据、模板与损失掩码

SFT 数据的来源

  • 人工示范。标注者会编写一个提示(或取自真实用户),并写出模型在理想情况下应给出的回复。InstructGPT 正是在这类标注者编写的示范上对 GPT-3 进行微调(Ouyang et al., 2022)。这是最纯粹但也最昂贵的 SFT 数据。
  • 改写已有数据集。已有的监督数据集可以改写为指令形式。例如,一个句子s的情感分类样本,可以改写为“下面这条评论的情感是积极还是消极?s”,答案为“积极”。FLAN 正是以这种方式构建训练数据,为每个数据集配置多个自然语言模板(Wei et al., 2022a)。
  • 合成数据。由模型生成指令和回复,经筛选后加入训练集。Self-Instruct 正是从少量种子任务出发,以这种方式自举生成指令数据(Wang et al., 2023)。
  • 领域数据。当模型需要覆盖某个特定领域时,可使用代码、数学、医学或公司内部文档。

现代 SFT 通常会混合使用上述所有来源的数据。数据覆盖哪些行为、质量如何、各类比例怎样,在很大程度上决定了最终结果。训练前通常需要清洗数据:过滤有害、错误、低质量或不希望模型学习的样本,并平衡数据配比,避免某一类占据主导。

对话模板

对话会被序列化为一个 token 序列,并用特殊 token 标记角色。不同模型家族使用的具体 token 有所不同,示意如下:

<|system|> You are a helpful assistant.<|end|> <|user|> What is the capital of France?<|end|> <|assistant|> The capital of France is Paris.<|end|>

系统提示设定整体行为;用户轮是提示x;助手轮是回复y。推理时,模型接收<|assistant|>之前的全部内容,并生成剩余部分,直到生成结束 token 为止。训练与推理使用同一模板至关重要。

Teacher forcing 与损失掩码

训练使用teacher forcing:在预测第t个 token 时,模型以数据中真实的前文为条件,而不是以自己之前的预测为条件。由于每个位置的上下文事先已知,所有位置可以在一次前向传播中并行训练,与预训练一致。

通常只在回复上计算损失,也就是上文中高亮的部分。记z为整个对话的 token 序列,掩码mt在助手 token 上为1,其余为0,则

ℒ(θ)=−1∑tmt∑tmtlogPθ(zt∣z<t).

提示仍会在上下文中影响预测,但模型并不是被训练来生成提示,而是被训练来回答提示。这种只在回复上计算的损失(response-only loss)很常见,但并非公认标准:有些流程会对整段对话计算损失,损失的归一化方式(按 token、按回复或按批次)也各不相同。

6为什么少量数据就够

一个非常强的经验事实是:只需很少的 SFT 数据,就能大幅改变模型行为,并且这种改变能够泛化。

  • LIMA 只用 1,000 条精心挑选的提示—回复对微调了 650 亿参数的 LLaMA 模型,在没有使用强化学习的情况下就获得了很强的指令遵循能力,并且能泛化到训练数据中未出现过的任务 (Zhou et al., 2023)。
  • FLAN 在 60 多个以指令形式表述的 NLP 数据集上对一个 1370 亿参数的模型做了指令微调。它在未见过的任务类型上的零样本表现显著提升,在评测的 25 个数据集中有 20 个超过了零样本的 175B GPT-3 (Wei et al., 2022a)。它的消融实验同样很有启发:任务簇越多越好,自然语言指令本身很重要,而且收益只在模型足够大时出现;在测试的较小模型上,指令微调反而损害了留出任务上的表现。

预训练已经让模型见过海量文本。很难相信一千个样本能教给它足够多的新知识,来解释如此大的变化。一个广为接受的观点,也就是 LIMA 作者所说的表层对齐假说(superficial alignment hypothesis),认为模型的知识和能力几乎全部在预训练中习得,对齐主要是教会它在与用户交互时采用哪种格式和风格 (Zhou et al., 2023)。

User: What is the capital of France?Assistant: ▮ ← next token?␣Paris y340%␣The y433%␣Great y63%␣What y14%␣France y211%␣Lyon y59%dashed outline: base model
User: What is the capital of France?Assistant: ▮ ← next token?␣Paris y340%␣The y433%␣Great y63%␣What y14%␣France y211%␣Lyon y59%dashed outline: base model
图 2. SFT 重塑下一个 token 的分布。这是贯穿全文的例子在第一个 token 层面的样子:在这个玩具模型里,六个回复各以不同的 token 开头,所以这些概率就是 §3 表中“基座模型”和“SFT 之后”两列。基座模型已经赋予 Paris 一些概率,但大部分花在了续写文档上。SFT 之后,概率集中到以回答开头的 token 上;错误答案 Lyon 没有变多。切换模型,或拖动滑块在两者的对数概率之间插值。 示意概率,不是真实模型的测量结果。

图 2 展示了这种直观认识。预训练见过无数次“the capital of France is Paris”,所以 Paris 本来就在候选集合里。但基座模型也在测验、列表和论坛帖子中见过这个问题;在这些地方,问题后面跟着的往往是另一个问题或一段离题的话。SFT 不需要教会这个事实;它要做的是把概率从“续写文档”挪到“回答问题”上。(SFT 也可以把模型推向别的目标,比如续写故事;这里讨论的是“回答”这一常见情形。)

这一图景有直接证据。Lin et al. (2024) 逐 token 比较同一模型的基座版本和对齐版本,可以发现两者在大多数位置上排名第一的 token 相同,变化集中在语篇标记、安全免责声明这类风格性 token 上。他们还表明,给基座模型配上几个精心挑选的上下文示例,就能接近对齐模型的表现。

这个观点也有边界。SFT 可以教会新事实,但过程很慢,而且有证据表明存在代价:Gekhman et al. (2024) 发现,引入模型原本不知道的知识的微调样本,比与已有知识一致的样本学得更慢;随着这些知识被学会,模型也更容易产生幻觉。因此,“SFT 主要是激发”最好理解为对 SFT 擅长什么的描述,而不是一条定律。

为什么参数高效微调有效

同样的观点也解释了为什么很小的更新就足够了。LoRA (Hu et al., 2022) 冻结预训练权重 W0,学习一个低秩修正:

W=W0+ΔW=W0+BA,B∈ℝd×r,A∈ℝr×k,r≪min(d,k),

其中 B 初始化为零,所以训练恰好从预训练模型出发。LoRA 的动机是这样一个假设:适配过程中的权重变化具有较低的“内在秩”。它建立在更早的工作之上;那项工作发现,微调可以在一个低得惊人的子空间中被重新参数化,而且预训练模型越大,这个子空间越小 (Aghajanyan et al., 2021)。如果预训练模型已经处在参数空间中一个能力很强的区域,后训练只需沿少数几个方向移动它。学习 B 和 A,实际上就是在学习往哪些方向调整。这与“激发”的观点一致,但并不是它的证明。

7优点与局限

SFT 的优点很容易概括。它简单稳定:就是带有交叉熵损失的监督学习。它的信号直接:人类直接示范期望的输出。它数据效率高,只需比预训练少得多的数据就能改变行为。它可控:风格、格式和领域都能通过示范塑造。指令微调还带来一定的泛化能力,能迁移到未见过的任务。

真正推动后续发展的,是它的局限。

  1. 它告诉模型好答案是什么样子,却不告诉模型哪个答案更好。SFT 说的是“模仿这个回复”。但许多提示并没有唯一正确的回复:两个答案可能都可以接受,只是其中一个更准确、更简洁、更有帮助或更安全。在我们的例子中,经过 SFT 后,“Paris.”和完整句子都很可能出现;SFT 数据中没有任何信息说明哪个更受欢迎。而且对人来说,写出理想答案往往比比较两个答案更难。在提升质量时,比较可能是更容易提供、也更直接的信号。
  2. 它的上限取决于示范。模型只是在模仿训练回复。如果示范平庸、有偏差或前后不一致,模型会把这些缺陷一并学会;而最大似然的“覆盖”性质(§4)意味着它会学会复现整个分布,而不只是最好的部分。
  3. 它看不到自己的错误。使用 teacher forcing 时,模型总是以真实前文为条件;推理时却以自己的生成结果为条件。小错误可能不断累积,使模型进入训练数据从未覆盖的状态。这种不匹配被称为暴露偏差(exposure bias)(Ranzato et al., 2016),而 SFT 本身没有机制来针对模型自己常犯的错误。

接下来的几部分会把训练信号从“学会一个好答案”转向“学会更好的答案”,并让模型从自己的生成结果中学习。

第 2 部分一句话总结

SFT 是在示范上做最大似然;它成本低,善于激发行为,但不能给答案排序、不能超越数据,也不能纠正模型自己的错误。

自测 当只在回复上计算损失时,哪些 token 参与 SFT 损失?为什么提示仍然重要?

只有助手的 token(掩码 mt=1)计入损失。提示仍在上下文中,每次预测都以它为条件;模型学会回答提示,而不会被训练去写提示。

第 3 部分 约 7 分钟从偏好中学习

8从示范到比较

模型学会回答之后,下一个目标是让它回答得更好。很多时候,写不出唯一的参考答案,判断两个答案哪个更好却很容易。这就是示范数据和偏好数据最本质的区别:前者提供可供模仿的参考答案,后者提供答案之间的偏好关系。

示范(SFT)

一个提示和一个由人写出的理想回复。

信号:“生成这个”。

比较(偏好)

一个提示和两个或更多回复,通常由模型采样得到,由人排序。

信号:“这个比那个好”。

偏好数据的来源可以非常多样。人可以针对某个属性写出对比样本,比如希望回答详细时,写一个简略回复和一个详细回复。更常见的是由模型生成候选、由人来评判。在 SFT 中这样做很危险,因为在一个尚弱的模型输出上训练,可能会强化它的缺陷;但对比较数据来说,这很自然。“模型生成、人来评价”的这种分工,正是 RLHF 所利用的 (Christiano et al., 2017; Stiennon et al., 2020)。它还有一个好处:反馈针对的是模型自己的输出,而这恰恰是我们关心的输出。

比较不是免费的午餐。有些比较本身就很难,人与人之间会有分歧;单条“A 比 B 好”所携带的信息,比一整段高质量示范要少。它真正的优势在于:对许多开放式生成任务来说,比较是一种更容易扩展的监督接口。

现在的数据形如下式,其中 yw 是被偏好(“胜出”)的回复,yl 是被拒绝(“落败”)的回复:

𝒟pref=\{(xi,yiw,yil)\}i=1N.

在我们的例子里,标注者看到 y4(“The capital of France is Paris.”)和 y3(“Paris.”)时,可能更喜欢完整句子,于是得到三元组 (x,y4,y3)。如何把这样的排序变成训练信号?一个想法是给好的答案标 1、差的标 0,训练一个分类器。但能判断两个答案孰优孰劣的分类器,不一定能说清单个答案到底怎么样;而这恰恰是我们需要的:如果想让模型自己生成答案、打分、再改进,也就是强化学习,就需要一个能给单个答案打分的函数。

9Bradley–Terry 奖励模型

因此,我们想从成对排序中学到一个能为单个回复打分的函数 r(x,y)。由于“更好”本身没有固定定义,人的判断又带有噪声,偏好的概率模型便成为自然的出发点。设回复 y1 和 y2 的分数分别为 r1 和 r2,对两个分数做 softmax,就得到 y1 胜出的概率:

P(y1≻y2∣x)=er1er1+er2=11+e−(r1−r2)=σ(r1−r2),

其中 σ 是 logistic sigmoid 函数。这就是成对比较中的 Bradley–Terry 模型 (Bradley and Terry, 1952):一个只依赖分数差的 logistic 模型。按标准最大似然方法,我们最大化观测偏好的概率,等价于最小化负对数似然:

ℒRM(ϕ)=−∑i=1Nlogσ(rϕ(xi,yiw)−rϕ(xi,yil)).
Reward model scores r(x, y)Starts at the running example: A = y4 (full sentence), B = y3 (“Paris.”)-4-3-2-101234Δ = 1.1BA0.00.51.0-6-3036Δ = r(A) − r(B)P(A preferred to B) = σ(Δ)75%0246-6-3036Δ = r(A) − r(B)Loss if A was the chosen reply: −log σ(Δ)
Reward model scores r(x, y)A starts as y4, B as y3-4-3-2-101234Δ = 1.1BA0.00.51.0-6-3036Δ = r(A) − r(B)P(A preferred to B) = σ(Δ)75%0246-6-3036Δ = r(A) − r(B)Loss if A was the chosen reply: −log σ(Δ)
图 3. 偏好概率是奖励差的 sigmoid。只有差值 Δ=r(A)−r(B) 起作用。图中沿用我们的例子:A 是 y4(奖励 1.6),B 是 y3(奖励 0.5),因此奖励模型预测标注者以 75% 的概率更偏好完整句子。沿奖励轴拖动 A 和 B,或使用滑块。整体平移会同时移动两个奖励:概率和损失都不变。

这看起来像分类,但分类器被限制为 σ(Δr) 的形式,所以真正学到的是分数 rϕ。

记 Δ=rϕ(x,yw)−rϕ(x,yl),梯度为

∂∂Δ(−logσ(Δ))=−(1−σ(Δ))=−σ(−Δ),∇ϕℒ=−σ(−Δ)(∇ϕrϕ(x,yw)−∇ϕrϕ(x,yl)).

每次更新都会提高胜者分数、降低败者分数,更新权重是 σ(−Δ):模型已有把握排对的样本对几乎没有贡献,排错的样本对贡献最大。虽然训练数据是成对的,得到的却是一个可以单独使用的打分函数。在 LLM 中,rϕ 通常本身也是一个 Transformer,常从 SFT 模型初始化,并把输出层替换为一个标量头,读入完整的提示和回复后输出一个数 (Ouyang et al., 2022)。InstructGPT 会为每个提示收集多个回复的排序,并把同一排序中的所有成对比较放在一起训练。

平移不变性

给每个分数都加上同一个常数,所有偏好概率都不变,因为进入 σ 的只有差值。事实上,任何只依赖提示的平移 r′(x,y)=r(x,y)+c(x) 在数据中都无法辨识。这种平移不变性意味着奖励的绝对水平不可辨识;正因如此,InstructGPT 在 RL 之前对奖励模型做了归一化,使标注者示范的平均得分为零 (Ouyang et al., 2022)。这一点之所以重要,是因为偏好学习只关心相对差异,而 RL 优化器对奖励的绝对大小很敏感;奖励的水平和尺度需要通过其他方式控制。同样的不变性还会在 §14(减去 baseline 无害)和 §19(DPO 的归一化常数被消掉)中再次出现。

Reward hacking

奖励模型最大的隐患已经显现。我们希望优化的是一个难以形式化的人类目标,于是训练了一个模型来近似它。但分数越高就一定越好吗?我们无法保证不存在奖励模型打高分、人却并不喜欢的回复。在我们的例子中,奖励模型给奉承式的 y6 打出了全场最高分 2.2。对一个不完美的代理目标用力优化,恰恰会找出这样的回复:这就是 reward hacking(奖励投机),也是 Goodhart 定律的一个实例。用留出的“黄金”奖励来衡量时,对代理奖励模型的优化起初会提升真实质量,但随着优化继续推进,真实质量反而下降 (Gao et al., 2023; Stiennon et al., 2020)。因此,在实践中我们从不简单地最大化学到的奖励;§16 会引入一个约束,让策略保持在奖励模型可信的区域附近。

第 3 部分一句话总结

Bradley–Terry 奖励模型把成对偏好变成标量分数,但这个分数只确定到相差一个平移,而且只在训练数据附近可信。

自测 把同一提示下每个回复的奖励分数都加 5,Bradley–Terry 损失会怎样?这个事实后面在哪里再次出现?

不变:进入 σ 的只有分数差,所以损失和所有偏好概率都不变。同样的不变性使只依赖状态的 baseline 在策略梯度中无害(§14),也让 DPO 中依赖提示的常数 logZ(x) 被消掉(§19)。

第 4 部分 约 23 分钟从零开始的强化学习

10智能体、MDP 与回报

奖励模型能判断一个答案有多好,却不能让模型生成更好的答案。为此,模型必须根据分数调整自己的生成策略,也就是输出分布。这就是强化学习(RL)。本节从第一性原理出发,构建 RLHF 所需的强化学习;Sutton and Barto (2018) 是本节内容的标准参考书。

智能体与环境

智能体(agent)不断与环境(environment)交互。在时刻 t,它观察到状态 St=st,按照自己的策略(policy)π 选择动作 At=at,环境返回奖励 Rt+1=rt+1 和新状态 St+1=st+1:

St→πAt→environment(Rt+1,St+1).

我们通常假设环境具有马尔可夫性:

P(St+1∣St,At,St−1,At−1,…,S0,A0)=P(St+1∣St,At).

一个常见的误解是“未来与过去无关”。正确的理解是:当前状态已经包含了历史中所有会影响未来的信息,所以更早的状态不再提供额外信息。对语言模型来说,状态很自然地就是

st=(x,y<t),at=yt,st+1=(x,y≤t),

即提示加上已生成的 token。每个状态在字面上已经包含了之前所有状态,所以马尔可夫性天然成立,状态转移也是确定的:把选中的 token 接到末尾。

马尔可夫决策过程

形式上,这个问题是一个马尔可夫决策过程(MDP)ℳ=(𝒮,𝒜,P,R,γ):状态空间、动作空间、转移概率 P(s′∣s,a)(在相同状态下采取相同动作,也可能得到不同结果)、奖励函数 R,以及折扣因子 γ。我们希望智能体最大化长期奖励,而不只是即时奖励,因此定义折扣回报

Gt=Rt+1+γRt+2+γ2Rt+3+⋯=∑k=0∞γkRt+k+1,0≤γ≤1,Gt=Rt+1+γGt+1.

右边的递推式几乎驱动了后面的一切。γ 接近 0 时,智能体目光短浅;γ 接近 1 时,它几乎同等看待远期和眼前的奖励,能学会权衡短期与长期收益。当 γ<1 且奖励有界时,即使回合无限长,这个求和也是有限的。语言模型的回合在结束 token 处终止,RLHF 通常取 γ=1。

0.00.51.0024681012141618steps into the future, kWeight γk on the reward k steps aheadhorizon 1/(1−γ) ≈ 10.0+1 now+5 at step 10Discounted return G0Quick1.00Patient1.94
0.00.51.005101519steps into the future, kWeight γk on the reward k steps aheadhorizon 1/(1−γ) ≈ 10.0+1 now+5 at step 10Discounted return G0Quick1.00Patient1.94
图 4. 折扣因子决定智能体看得多远。柱子表示奖励在 k 步之后的权重 γk。“快”奖励流立即给 +1;“慢”奖励流在十步之后给 +5。调整 γ:低于约 0.84 时快奖励胜出,高于该值时慢奖励胜出。虚线标出有效视野 1/(1−γ)。示意奖励流。

策略、轨迹与目标

强化学习的核心对象是策略。随机策略在每个状态下给出动作的概率分布:

πθ(a∣s)=P(At=a∣St=s).

语言模型天然就是一个策略:它计算 Pθ(yt∣x,y<t),也就是给定当前状态时下一个动作的分布。策略与环境交互会产生一条轨迹 τ=(s0,a0,r1,s1,a1,r2,…);对语言模型来说,一条轨迹就是一整段生成的回复。它的概率是

Pθ(τ)=ρ0(s0)∏t≥0πθ(at∣st)P(st+1∣st,at),

其中 ρ0 是初始状态的分布(对我们来说就是提示的分布)。强化学习的目标是最大化期望回报

J(θ)=𝔼τ~πθ[G0],θ⋆=argmaxθJ(θ).

在最简单的 RLHF 设定中,奖励只在最后出现一次,因此 J(θ)=𝔼x~𝒟𝔼y~πθ(·∣x)[r(x,y)]。在我们的例子中,一条轨迹就是六个回复之一,J 就是策略生成的回复的平均奖励模型得分。

与 SFT 对比一下:SFT 在固定数据集上告诉模型该生成什么。RL 让模型自己生成、对生成结果打分,再调整策略,使高分输出更可能出现、低分输出更不可能出现。只要奖励足够好,模型原则上可以从自己的尝试中不断改进。今天的推理方法(§20–21)也建立在同样的思想上,主要区别是把学到的奖励模型换成了验证器。

不过探索并不是随意的。模型只能发现自己以一定概率生成的好回复,所以起点很重要。这就是为什么语言模型的 RL 从 SFT 模型出发,而不是从头开始:在我们的例子中,基座模型只有 22% 的概率给出正确答案,SFT 模型则是 76%。

11策略梯度

策略究竟应该如何根据奖励来调整?直觉是:让高回报的轨迹更可能出现,让低回报的轨迹更不可能出现。把一条轨迹的回报记为 R(τ)=G0。我们想进行梯度上升 θ←θ+α∇θJ(θ)。

∇θJ(θ)=∇θ𝔼τ~πθ[R(τ)]=∇θ∑τPθ(τ)R(τ)=∑τ∇θPθ(τ)R(τ).

难点在于 θ 出现在我们取平均所用的分布里,所以这个梯度看起来不像一个可以通过采样估计的期望。对数导数技巧(log-derivative trick)解决了这个问题:

∇θlogPθ(τ)=∇θPθ(τ)Pθ(τ)⟹∇θPθ(τ)=Pθ(τ)∇θlogPθ(τ),
∇θJ(θ)=∑τPθ(τ)∇θlogPθ(τ)R(τ)=𝔼τ~πθ[R(τ)∇θlogPθ(τ)].

再展开轨迹的对数概率。初始状态项和转移项来自环境,与 θ 无关,因此梯度为零;这也意味着我们永远不需要环境模型:

logPθ(τ)=logρ0(s0)+∑t(logπθ(at∣st)+logP(st+1∣st,at))⟹∇θlogPθ(τ)=∑t∇θlogπθ(at∣st).

把这两部分合起来:

∇θJ(θ)=𝔼τ~πθ[∑tR(τ)∇θlogπθ(at∣st)].

这就是最基本的策略梯度。它表达的正是直觉的含义:∇θlogπθ(at∣st) 是让动作 at 更可能出现的方向,再乘以整条轨迹有多好。对语言模型来说,它就是被采样回复的对数似然梯度(SFT 用的也是这个量),再按奖励加权。SFT 可以看作每条示范的权重都为 1 的特例。

REINFORCE

REINFORCE (Williams, 1992) 用蒙特卡洛方法估计该期望:用当前策略采样 M 条轨迹并取平均,然后更新:

g^=1M∑m=1M∑tR(τ(m))∇θlogπθ(at(m)∣st(m)),θ←θ+αg^.

Reward-to-go

有一个很明显的改进。轨迹中每个动作都得到相同的权重 R(τ),但它们的权重不应相同。如果回报高是因为第 2 步的一个好选择,后面平平无奇的选择不应因此得到加分;而且一个动作当然不可能影响在它之前到来的奖励。因此,可以把整条轨迹的回报换成从第 t 步开始的回报。根据 R(τ)=∑kγkrk+1,去掉 at 之前的奖励后剩下 ∑k≥tγkrk+1=γtGt:

∇θJ(θ)=𝔼τ~πθ[∑tγtGt∇θlogπθ(at∣st)].

这一结果是严格成立的,并非近似:被去掉的项期望为零。实践中通常省略因子 γt;而在语言模型常用的 γ=1 下它本来就是 1,于是得到熟悉的 ∑tGt∇θlogπθ(at∣st)。

证明:过去的奖励可以去掉

取任意一个在动作 at 之前获得的奖励 rk+1(即 k<t),令 Ht=(s0,a0,r1,…,st) 表示截至 st 的历史,它包含 rk+1。给定 Ht,动作按 at~πθ(·∣st) 抽取。根据全期望公式,

𝔼[rk+1∇θlogπθ(at∣st)]&=𝔼[𝔼[rk+1∇θlogπθ(at∣st)|Ht]]=𝔼[rk+1𝔼[∇θlogπθ(at∣st)|Ht]]&=𝔼[rk+1∑aπθ(a∣st)∇θlogπθ(a∣st)]=𝔼[rk+1∇θ∑aπθ(a∣st)]=𝔼[rk+1∇θ1]=0.

关键事实 𝔼a~πθ[∇θlogπθ(a∣s)]=0 是得分函数期望为零的恒等式;它会在 §14 再次出现。

算法 1 · REINFORCE(可选 baseline)

输入:策略 πθ、步长 α、批量大小 M、baseline b(s)(原始 REINFORCE 取零;见 §14)。

  1. 运行 πθ,采样 M 条轨迹 τ(1),…,τ(M)。
  2. 对每条轨迹的每一步 t,计算 reward-to-go Gt。
  3. 估计梯度:g^=1M∑m,t(Gt−b(st))∇θlogπθ(at∣st)。
  4. 更新 θ←θ+αg^,丢弃这批轨迹,然后回到第 1 步。

REINFORCE 采样轨迹,再对 ∑tGt∇θlogπθ(at∣st) 取平均。但 Gt 只是对未来的一次充满随机性的采样。想知道一个状态或动作平均而言有多好,就需要 Gt 的条件期望;这正是价值函数。

12价值函数与 Bellman 方程

状态价值函数是从状态 s 出发、按照 π 行动得到的期望回报;动作价值函数(Q 函数)是在状态 s 采取动作 a、之后按照 π 行动得到的期望回报:

Vπ(s)=𝔼π[Gt∣St=s],Qπ(s,a)=𝔼π[Gt∣St=s,At=a].

两者直接相关:在状态 s 下,下一个动作从 π 中采样,对其取平均即得

Vπ(s)=∑aπ(a∣s)Qπ(s,a).

在我们的例子中,对于 SFT 策略和奖励模型,提示的价值 V(x) 就是按 SFT 概率加权的平均奖励 0.60;它会在 §16 再次出现。

Bellman 期望方程

利用 Gt=Rt+1+γGt+1 以及马尔可夫性,一步之后的价值等于即时奖励加上到达状态的折扣价值。记 p(s′,r∣s,a) 为转移到 s′ 并获得奖励 r 的概率:

Qπ(s,a)=∑s′,rp(s′,r∣s,a)[r+γVπ(s′)],Vπ(s)=∑aπ(a∣s)∑s′,rp(s′,r∣s,a)[r+γVπ(s′)].

将第一个关系代入自身,就得到只含 Q 的同一递推:

Qπ(s,a)=∑s′,rp(s′,r∣s,a)[r+γ∑a′π(a′∣s′)Qπ(s′,a′)].

这些就是 Bellman 方程:价值由一步之后的价值来定义。它们关于 Vπ 是线性的,因此对于已知的有限 MDP 可以精确求解。

最优性

我们希望得到最优策略。定义最优价值函数,以及关于 Q⋆ 贪心的最优策略:

V⋆(s)=maxπVπ(s),Q⋆(s,a)=maxπQπ(s,a),π⋆(s)∈argmaxaQ⋆(s,a).

当每一步都采取最优动作时,对下一个动作取平均就变成了取最大值,由此得到 Bellman 最优方程:

V⋆(s)=maxa∑s′,rp(s′,r∣s,a)[r+γV⋆(s′)],Q⋆(s,a)=∑s′,rp(s′,r∣s,a)[r+γmaxa′Q⋆(s′,a′)].

价值迭代与策略迭代

将第一个方程的右端视为作用在价值函数上的算子 𝒯。当 γ<1 时,它在最大范数下是压缩映射,‖𝒯V−𝒯U‖∞≤γ‖V−U‖∞,因此由 Banach 不动点定理,从任意初值反复应用 Vk+1=𝒯Vk 都会收敛到唯一的不动点 V⋆。这就是价值迭代。

策略迭代交替进行两步。评估:通过求解 Bellman 期望方程计算当前策略的 Vπ。改进:使策略变得贪心,π′(s)∈argmaxaQπ(s,a)。新策略不会更差;只要仍有改进空间,就会严格变好。原因很简单:Vπ(s) 是各个 Qπ(s,a) 的加权平均,而最大值不小于平均值,所以对每个状态都有 Qπ(s,π′(s))=maxaQπ(s,a)≥Vπ(s)。

证明:贪心策略至少一样好(策略改进)

从 Vπ(s)≤Qπ(s,π′(s)) 出发,将 Qπ 展开一步,再在下一个状态上反复应用同一不等式:

Vπ(s)&≤Qπ(s,π′(s))=𝔼[Rt+1+γVπ(St+1)|St=s,At=π′(s)]&≤𝔼π′[Rt+1+γQπ(St+1,π′(St+1))|St=s]&=𝔼π′[Rt+1+γRt+2+γ2Vπ(St+2)|St=s]≤⋯≤𝔼π′[Gt∣St=s]=Vπ′(s).

如果没有任何状态还能改进,即处处 maxaQπ(s,a)=Vπ(s),那么 Vπ 满足 Bellman 最优方程,π 已经是最优策略。

这两种方法都需要转移模型 p(s′,r∣s,a) 来计算期望。通常我们并没有该模型,只能通过行动观察结果。这就是无模型(model-free)强化学习。

13蒙特卡洛与 TD 学习

蒙特卡洛

最直接的想法是回到定义 Vπ(s)=𝔼π[Gt∣St=s],通过采样来估计这个期望:从 s 出发多次运行策略,记录回报并取平均。增量形式是每个回合结束后把估计朝观测到的回报移动一点:

Vπ(s)≈1N∑i=1NGt(i),V(St)←V(St)+α[Gt−V(St)].

Qπ(s,a) 也可以用每次访问 (s,a) 之后的回报来估计,再像之前那样贪心地改进策略,因此评估和改进都不需要模型。但蒙特卡洛必须等回合结束才能更新,而且一整条轨迹的随机性使 Gt 的方差很大,回合越长越明显。

时序差分学习

Bellman 方程告诉我们不必等待:

Vπ(s)=𝔼π[Rt+1+γVπ(St+1)∣St=s].

走一步之后我们观察到 r 和 s′,而 r+γV(s′) 已经是对 V(s) 的一个新估计。时序差分(TD)学习 (Sutton, 1988) 把旧估计朝它移动:

V(St)←V(St)+α[Rt+1+γV(St+1)−V(St)],δt=Rt+1+γV(St+1)−V(St).

δt 是 TD 误差:看到这一步之前做出的预测,与看到之后做出的、信息更充分的预测之间的差值。TD 学习就是让旧预测向新预测靠拢。用一个估计去更新另一个估计,称为自举(bootstrapping)。

蒙特卡洛目标:Gt

真实回报。无偏,但方差大,而且只有回合结束才能得到。

TD 目标:Rt+1+γV(St+1)

一个真实奖励加上当前估计。每一步都能得到,方差通常更低,但只要 V 不准就有偏差。

0ABCDE+10.00.51.0ABCDEEstimated value V(s)Monte CarloTD(0)true value0.00.10.20.30255075100episodesRMS error against the true values
0ABCDE+10.00.51.0ABCDEEstimated value V(s)Monte CarloTD(0)true value0.00.10.20.30255075100episodesRMS error against the true values
图 5:五状态随机游走上的蒙特卡洛与 TD。每个回合从 C 出发,随机向左或向右走;在右端结束时得到 +1,所以真实价值为 1/6,…,5/6(Sutton and Barto (2018) 中的经典例子)。两种方法看到相同的回合,并都从 0.5 起步。运行一个回合,观察 TD 每一步都更新、蒙特卡洛只在结束时更新;或者运行多个回合比较误差;也可以调整步长 α。 一组确定性的模拟回合。

SARSA 与 Q-learning

同样的思想也适用于 Q 函数。对固定策略,动作价值的 Bellman 方程是 Qπ(s,a)=𝔼[r+γQπ(s′,a′)],其中 a′~π(·∣s′)。交互一次后观察到 (St,At,Rt+1,St+1,At+1),其中 At+1 是策略接下来实际采取的动作,然后更新

Q(St,At)←Q(St,At)+α[Rt+1+γQ(St+1,At+1)−Q(St,At)].

这就是 SARSA (Rummery and Niranjan, 1994),其名字来自它用到的五元组。收集数据的策略就是被评估和改进的策略,所以 SARSA 是 on-policy 方法。

如果想直接学习最优价值,就对 Bellman 最优方程 Q⋆(s,a)=𝔼[r+γmaxa′Q⋆(s′,a′)] 做同样的采样:

Q(St,At)←Q(St,At)+α[Rt+1+γmaxa′Q(St+1,a′)−Q(St,At)].

这就是 Q-learning (Watkins and Dayan, 1992):Q 值迭代的无模型、基于采样版本。它的目标使用贪心动作 maxa′,与行为策略下一步实际做什么无关,所以被学习的策略(贪心)与收集数据的策略(往往带探索)不同:Q-learning 是 off-policy 方法。

这一节始终在回答同一个问题:如何估计一个状态或动作的长期价值,并用它来改进策略。采样整条轨迹得到蒙特卡洛;只向前采样一步并借助自举得到 TD;对固定策略的 Q 函数做 TD 得到 SARSA;对最优方程做 TD 得到 Q-learning。

14Baseline 与 advantage

回到策略梯度。Gt 衡量的是回报的绝对水平,它混杂了三类因素:状态有多好、动作有多好,以及运气。这让梯度估计噪声很大,而且难以区分高回报究竟来自动作本身,还是继承自好的状态。

第一步是把样本 Gt 替换为它的期望 Qπ(st,at)。由于 ∇θlogπθ(at∣st) 只依赖 (st,at),且 𝔼[Gt∣st,at]=Qπ(st,at),根据全期望公式,梯度保持不变,而未来采样带来的噪声被去掉了:

∇θJ(θ)=𝔼πθ[∑tQπθ(st,at)∇θlogπθ(at∣st)].

这正是策略梯度定理 (Sutton et al., 2000) 的形式,在策略由一般函数逼近器表示时同样成立。但它仍然没有把状态和动作分开。于是,减去一个衡量状态好坏的 baseline b(st),用相对回报来加权:

∇θJ(θ)=𝔼πθ[∑t(Qπθ(st,at)−b(st))∇θlogπθ(at∣st)].

为了保持梯度不变,baseline 这一项的期望必须为零。只要 baseline 只依赖状态而不依赖动作,任何 baseline 都满足:

𝔼a~πθ(·∣s)[b(s)∇θlogπθ(a∣s)]=b(s)∑aπθ(a∣s)∇θlogπθ(a∣s)=b(s)∑a∇θπθ(a∣s)=b(s)∇θ∑aπθ(a∣s)=b(s)∇θ1=0.
对整条轨迹求和时同样的论证
𝔼τ~πθ[∑tb(st)∇θlogπθ(at∣st)]&=∑t𝔼st[𝔼at~πθ(·∣st)[b(st)∇θlogπθ(at∣st)|st]]&=∑t𝔼st[b(st)∑a∇θπθ(a∣st)]=∑t𝔼st[b(st)∇θ∑aπθ(a∣st)]=0.

如果 baseline 依赖动作 at,它就无法被移到内层期望之外,梯度一般会有偏。

自然的选择是状态价值 b(s)=Vπ(s),即该状态下的期望回报。于是权重变成 advantage(优势函数):

Aπ(s,a)=Qπ(s,a)−Vπ(s),∇θJ(θ)=𝔼πθ[∑tAπθ(st,at)∇θlogπθ(at∣st)],

它表示在该状态下选择动作 a 比策略的平均水平好多少;对动作求平均后为零。期望梯度不变,但状态本身的好坏被去掉了,权重也变为以零为中心,从而降低了方差。(一般而言 Vπ 并不恰好是使方差最小的 baseline,但它简单且效果好。)这是 §9 中平移不变性在 RL 中的对应:减去任何只依赖状态的量,期望都不变,噪声却大不一样。

Without a baseline0⅓10100200300update stepWith a baseline0⅓10100200300update step
Without a baseline0⅓10100200300update stepWith a baseline0⅓10100200300update step
图 6. Baseline 保留梯度,去掉噪声。在一个带噪声奖励的三臂老虎机上运行 softmax 策略的 REINFORCE(均值分别为 1.0、1.5 和 2.0,单位方差噪声,再加上一个常数偏移)。每条细线表示 12 次带种子运行中的一次,显示选中最优臂的概率;粗线是它们的均值。baseline 取过去奖励的滑动平均。改变加到每个奖励上的常数:它不会改变哪个臂最好,但在没有 baseline 时,它会让每个被采样的臂都显得不错,运行结果四散;有 baseline 时则不受影响。 示意模拟;两个面板使用相同的种子。

在实践中,Qπ 和 Vπ 都是未知的,因此这个公式还不是一个算法。advantage 该如何估计?

15Actor–critic 与 GAE

如果不知道 advantage,就去学习它。策略 πθ 是 actor,负责行动;学到的价值函数是 critic,负责评价,并用评价指导 actor 更新。这就是 actor–critic 方法族;用 advantage 作为权重时,常称为 advantage actor–critic,即 A2C,它是 A3C (Mnih et al., 2016) 的同步版本。

同时学习 Q 和 V 再相减会带来额外负担。TD 误差绕开了这个问题:如果 V 是策略的真实价值函数,那么 TD 误差的期望就是 advantage:

𝔼[δt∣st,at]=𝔼[rt+1+γVπ(st+1)∣st,at]−Vπ(st)=Qπ(st,at)−Vπ(st)=Aπ(st,at).

因此只需学习一个 critic Vw≈Vπ:用 Vw 算出的 δt 就是一步 advantage 估计。critic 本身则像 TD 学习一样,通过向目标回归来训练。

但一步估计太短视了:它只使用一个真实奖励,就把整个未来交给 V(st+1);一旦 critic 不够准,它的误差就会直接污染 advantage。解决方法是先多用几个真实奖励,再把剩余部分交给 critic。k 步 advantage 先使用 k 个奖励再自举,并且可以裂项写成 TD 误差之和:

A^t(k)=rt+1+γrt+2+⋯+γk−1rt+k+γkV(st+k)−V(st)=∑l=0k−1γlδt+l.

k=1 时,它就是 actor–critic 的一步 TD 误差;k 一直到回合结束时,它就变成蒙特卡洛回报减去 baseline。广义优势估计(GAE)(Schulman et al., 2016) 不做选择,而是对它们全部取指数加权平均:

A^tGAE(γ,λ)=(1−λ)(A^t(1)+λA^t(2)+λ2A^t(3)+⋯)=∑l=0∞(γλ)lδt+l,0≤λ≤1.
从加权平均到 TD 误差之和,以及两个极限

代入 A^t(k)=∑l<kγlδt+l 并交换求和顺序;TD 误差 δt+l 会出现在所有 k>l 的 A^t(k) 中:

(1−λ)∑k=1∞λk−1∑l=0k−1γlδt+l=∑l=0∞γlδt+l(1−λ)∑k=l+1∞λk−1=∑l=0∞γlδt+lλl.

λ=0 时,只剩 l=0 一项:A^t=δt,即一步 actor–critic 估计;λ=1 时,价值项裂项相消,得到蒙特卡洛回报减去 baseline:

∑lγlδt+l=∑lγlrt+l+1−V(st)=Gt−V(st).
0.00.51.00510152025l, steps aheadWeight (γλ)l on the TD error δt+l01151015202530k, look-ahead of the k-step estimateWeight (1−λ)λk−1 on the k-step advantage
0.00.51.0051015l, steps aheadWeight (γλ)l on the TD error δt+l01151015k, look-ahead of the k-step estimateWeight (1−λ)λk−1 on the k-step advantage
图 7. GAE 在 TD 与蒙特卡洛之间插值。上:每个未来 TD 误差上的权重 (γλ)l。下:等价地,各个 k 步 advantage 估计上的权重 (1−λ)λk−1。将 λ 从 0(一步 TD:方差低,但带 critic 的偏差)移到 1(蒙特卡洛:无偏,但方差大)。

在代码里,GAE 就是一次反向遍历 A^t=δt+γλA^t+1,critic 则回归到 A^t+V(st)。通过对远期 TD 误差打折,GAE 在一步 actor–critic 和蒙特卡洛之间给出了连续的偏差–方差权衡;它并没有消除这个权衡。实践中通常取中间值;§23 列出了论文中报告的取值。

纵观这一路,策略梯度的骨架从未改变:∇θJ=𝔼[∑tΨt∇θlogπθ(at∣st)]。变化的只是权重 Ψt:从 R(τ),到 Gt,到 Q,到 Q−V,再到 TD 误差和 GAE。每一步都让梯度(基本)保持不变,同时让估计噪声更小、更容易在线计算。

第 4 部分一句话总结

策略梯度按“结果比预期好多少”来提高动作的对数概率;价值函数、TD 误差和 GAE 都是在用更小的噪声估计“比预期好多少”。

自测 为什么减去 baseline b(s) 不会使策略梯度有偏?为什么 baseline b(s,a) 会出问题?

因为得分函数的期望为零,𝔼a~πθ[∇θlogπθ(a∣s)]=0(概率之和恒为 1),所以任何不依赖动作的因子都可以提出来,并与零相乘。依赖 a 的 baseline 提不出来,多出的那一项一般不再为零,梯度就有偏了。

第 5 部分 约 10 分钟RLHF 实践

16从 TRPO 到 PPO

普通的策略梯度更新存在两个实际问题。第一,梯度只在当前策略处有效:数据是从 πθ 采样的,一旦 θ 改变,这些样本就不再描述新策略,因此每批数据只能安全地用于一小步更新。第二,步长很难选择:参数的微小变化可能导致行为的巨大改变,一次糟糕的更新就可能让策略崩溃,之后它只会继续生成糟糕的数据,难以恢复。

带重要性权重的替代目标

性能差异引理 (Kakade and Langford, 2002) 精确地说明了新策略 π′ 比 π 好多少:等于沿 π′ 的轨迹累积的 advantage π,

J(π′)−J(π)=𝔼τ~π′[∑tγtAπ(st,at)].

但在更新之前,我们并不知道 π′ 会访问哪些状态。

如果新策略与旧策略足够接近,就可以沿用旧策略访问到的状态,并用重要性比率修正动作分布。这就得到了替代目标(surrogate objective)

Lθold(θ)=𝔼s,a~πθold[πθ(a∣s)πθold(a∣s)Aπθold(s,a)],

它可以用旧样本估计,并且在 θ=θold 处的梯度等于策略梯度。不过,它只在 θold 附近可信。

TRPO:信赖域

信赖域策略优化(TRPO)(Schulman et al., 2015) 明确刻画了“附近”。其理论给出了真实改进的下界:替代目标减去一个关于新旧策略之间 KL 散度的惩罚;实际算法则在平均 KL 不超过某个上限的约束下最大化替代目标:

maxθLθold(θ)subject to𝔼s~πθold[KL(πθold(·∣s)‖πθ(·∣s))]≤δ.

约束是在行为空间而非参数空间中衡量的,这正是它稳健的原因。TRPO 使用二阶近似、共轭梯度和线搜索来求解。它虽然有效,但实现复杂,也不便于与大型共享网络结合。

PPO:裁剪比率

近端策略优化(PPO)(Schulman et al., 2017) 保留了这一思想,但去掉了复杂的机制。对每个样本,比率

ρt(θ)=πθ(at∣st)πθold(at∣st),LCLIP(θ)=𝔼^t[min(ρt(θ)A^t,clip(ρt(θ),1−ϵ,1+ϵ)A^t)].

分情况讨论。如果动作是好的(A^t>0),目标会鼓励提高它的概率,但只到比率达到 1+ϵ 为止;超过之后,裁剪项保持平坦,该样本不再贡献梯度。如果动作是坏的(A^t<0),降低它的概率也只在 1−ϵ 之前有益。取最小值使目标成为一个悲观的下界:裁剪可以去掉继续更新的动力,但永远不会掩盖惩罚。如果比率已经朝错误方向移动,例如一个坏动作变得更可能了,未裁剪项仍然完全生效。

Advantage A > 0 (a good action)01200.511.52ρ = πθ(a|s) / πold(a|s)1−ε1+εclipped: no gradientAdvantage A < 0 (a bad action)-2-1000.511.52ρ = πθ(a|s) / πold(a|s)1−ε1+εgradient pushes ρ downunclipped ρAPPO: min(ρA, clip(ρ, 1−ε, 1+ε)A)
Advantage A > 0 (a good action)01200.511.52ρ = πθ(a|s) / πold(a|s)1−ε1+εclipped: no gradientAdvantage A < 0 (a bad action)-2-1000.511.52ρ = πθ(a|s) / πold(a|s)1−ε1+εgradient pushes ρ downunclipped ρAPPO: min(ρA, clip(ρ, 1−ε, 1+ε)A)
图 8. 单个样本上 PPO 的裁剪目标。虚线:未裁剪的替代目标 ρA。实线:PPO 的目标。阴影带为 [1−ϵ,1+ϵ]。实线平坦之处,该样本不提供梯度。移动比率与裁剪范围;空心标记表示样本已被裁剪。

由于裁剪限制了每批数据能把策略更新推多远,PPO 可以在每批样本上安全地执行多个 epoch 的小批量梯度更新,样本效率远高于普通策略梯度。使用共享的 actor–critic 网络时,完整目标还需加上价值函数损失,以及可选的、鼓励探索的熵奖励ℋ:

L(θ)=𝔼^t[LtCLIP(θ)−c1(Vθ(st)−R^t)2+c2ℋ[πθ(·∣st)]].

PPO 论文还描述了一种用 KL 惩罚代替裁剪的变体,其中惩罚权重会自适应调整以达到目标 KL;实验表明,裁剪版本表现更好。

对参考模型的 KL 惩罚

对语言模型来说,还存在第二种、含义不同的 KL。PPO 的裁剪使每次更新贴近上一个策略;RLHF 则让整个优化过程贴近一个固定的参考模型 πref,通常就是 SFT 模型(Ziegler et al., 2019; Stiennon et al., 2020; Ouyang et al., 2022):

maxπθ𝔼x~𝒟,y~πθ(·∣x)[rϕ(x,y)]−β𝔼x~𝒟[KL(πθ(·∣x)‖πref(·∣x))].

这就是 §9 中承诺的、防止 reward hacking 的护栏:奖励模型是在类似πref的模型的输出上训练的,因此只在它们附近可靠;这一惩罚还能让文本保持流畅和多样。实现中,该惩罚通常被折算为逐 token 的奖励,奖励模型的分数则加在最后一个 token 上:

rt=−βlogπθ(yt∣x,y<t)πref(yt∣x,y<t)+1[t=T]rϕ(x,y).

在一个采样回复上把这些对数比率相加,即可得到序列级 KL 的单样本无偏估计,因为

𝔼y~πθ[logπθ(y∣x)−logπref(y∣x)]=KL(πθ(·∣x)‖πref(·∣x)).

随后 PPO 照常运行:价值头在每个 token 处估计V(st),GAE 将逐 token 的奖励转换为 advantage,裁剪目标用于更新策略。

算法 2 · 用于 RLHF 的 PPO

输入:SFT 模型πSFT、奖励模型rϕ、提示集𝒟;设置β,ϵ,γ,λ、epoch 数K。

  1. 初始化策略πθ←πSFT、冻结的参考模型πref←πSFT以及 criticVw。
  2. 采样提示x~𝒟和回复y~πθold(·∣x),其中θold是当前θ的一份拷贝。
  3. 用rϕ(x,y)给每个回复打分,构造包含对πref的 KL 惩罚的逐 token 奖励rt。
  4. 计算Vw(st)、TD 误差δt、GAE advantageA^t和价值目标R^t=A^t+Vw(st)。
  5. 在小批量上运行K个 epoch:对θ上升LCLIP,对w下降(Vw(st)−R^t)2。
  6. 返回第 2 步。

回到我们的例子:一步 PPO

从 SFT 模型开始进行 RLHF。此时πθ=πref,因此每一项 KL 都恰好为零;若 critic 完美,提示的价值就是按 SFT 加权的平均奖励V(x)=0.60。每个回复的 advantage 等于其奖励减去这个平均值:

回复奖励模型 rAdvantage A = r − V(x)
y1 Quiz: Germany?−1.5−2.10
y2 Rambles−0.4−1.00
y3 Paris.0.5−0.10
y4 Full sentence1.6+1.00
y5 Lyon.−1.0−1.60
y6 Flattering2.2+1.60

注意y3“Paris.”:它虽然正确,但 advantage 为−0.10,因为平均回复的得分已经比它高。PPO 会略微降低它的概率,并提高y4(完整句子)和y6(奉承式回复)的概率。这正是奖励模型的偏好,连同它的缺陷;阻止y6占据主导的正是 KL 惩罚(图 9 展示了在不同β下它会走多远)。

17InstructGPT 流程

基于偏好的语言模型强化学习早于 InstructGPT:此前已用于风格续写和摘要(Ziegler et al., 2019; Stiennon et al., 2020),并建立在基于人类偏好的深度强化学习(Christiano et al., 2017)之上。InstructGPT(Ouyang et al., 2022) 把这些组件组装成了后来成为对话助手模板的流程;同年,Anthropic 也采用类似流程训练了有用且无害的助手(Bai et al., 2022a)。

InstructGPT 中的 RLHF

  1. 监督微调。针对提示(其中许多由 API 用户提交)收集标注者编写的示例,并在这些示例上微调 GPT-3(§4–5)。
  2. 奖励模型。对每个提示,从模型中采样多个输出,由标注者排序,再用 Bradley–Terry 损失在每个排序的所有成对比较上训练奖励模型(§9)。
  3. 强化学习。用 PPO 针对奖励模型优化 SFT 模型,并加入对 SFT 模型的逐 token KL 惩罚(§16)。第 2 步和第 3 步可以迭代:在当前策略上收集新的比较数据。

最终目标还多了一项。RLHF 在若干公开 NLP 基准上造成退化,即所谓“对齐税”(alignment tax);于是作者混入了预训练目标,并将该变体称为 PPO-ptx(他们把这个系数写作γ,与折扣因子无关):

objective(θ)=𝔼x~𝒟,y~πθ(·∣x)[rϕ(x,y)−βlogπθ(y∣x)πSFT(y∣x)]+γptx𝔼x~𝒟pretrain[logπθ(x)].

最引人注目的结果是:尽管规模相差百倍,标注者仍更偏好 13 亿参数的 InstructGPT 的输出,而非 1750 亿参数的 GPT-3。决定模型有用程度的,不只是规模,还有后训练。

数一数第 3 步涉及的网络:被训练的策略、用于 KL 惩罚的冻结参考模型、奖励模型,以及作为 critic 的价值网络。四个大模型、一个在线采样循环和大量超参数,使得基于 PPO 的 RLHF 既昂贵又脆弱。后来的许多工作,都是在想办法去掉其中的某些组件。

18RLHF 的局限

RLHF 有效,但每个阶段都有各自的失败模式;Casper et al. (2023) 对此做了详细综述。

  • 反馈本身。标注者之间会有分歧、会犯错,也有各自的偏好和盲区。单一标量奖励无法代表偏好真正不同的人群。在困难任务上提供好的反馈需要专业知识,既慢又贵。
  • 奖励模型。它是在有限数据上训练的不完美代理。当被强烈优化时,策略会找到它的错误:过度优化会在代理分数上升的同时降低真实质量 (Gao et al., 2023)。
  • 学到的捷径。有些缺陷是系统性的。更长的回答往往更受青睐,RLHF 中测得的奖励提升,很大一部分可以归因于回答变长 (Singhal et al., 2023)。用人类反馈训练的助手倾向于谄媚(sycophancy),说用户似乎想听的话;而人类偏好判断有时会偏爱有说服力的谄媚回答,而不是正确回答 (Sharma et al., 2024)。我们例子中奉承式的 y6 就是这两者的漫画版。
  • 成本与稳定性。内存里有四个模型,训练循环中包含在线生成,并且对 β、ϵ 和学习率等超参数敏感。

此后出现了两个方向。一个是在书面原则指导下用 AI 反馈代替人类标注者,例如 Constitutional AI (Bai et al., 2022b),以扩展监督规模。另一个是简化优化本身,这正是下一部分的内容。

第 5 部分一句话总结

PPO 用裁剪的重要性比率稳定策略梯度更新;RLHF 再加上对参考模型的 KL 惩罚,使对学到的奖励的优化不至于超出奖励可信的范围。

自测 一个 A^>0 的样本,比率已经达到 1.5,ϵ=0.2,PPO 的裁剪项给出什么梯度?若 A^<0、比率相同呢?

A^>0 时,比率超过了 1+ϵ,取最小值的是平坦的裁剪项,该样本不贡献梯度。A^<0 时,未裁剪项 ρA^ 更小,完整的惩罚生效,梯度会把概率往回压。

第 6 部分 约 12 分钟PPO 之后

19直接偏好优化

§16 中带 KL 正则的目标有一个重要的性质:对于固定的奖励,其最优策略可以写成闭式解。直接偏好优化(DPO)(Rafailov et al., 2023) 利用这一点,同时跳过了奖励模型和 RL 循环。

闭式的最优策略

固定一个提示 x,考虑回复上的任意分布 π。将奖励项和 KL 项合并到一个对数里:

𝔼y~π[r(x,y)]−βKL(π‖πref)&=−β𝔼y~π[logπ(y∣x)πref(y∣x)exp(r(x,y)/β)]&=−β𝔼y~π[logπ(y∣x)π⋆(y∣x)]+βlogZ(x)=−βKL(π‖π⋆)+βlogZ(x),

其中归一化分布的定义见下式。Z(x) 与 π 无关,而 KL 散度非负,且仅当两个分布相同时为零。因此目标恰好在 π=π⋆ 处达到最大:

π⋆(y∣x)=1Z(x)πref(y∣x)exp(r(x,y)β),Z(x)=∑yπref(y∣x)exp(r(x,y)β).

最优策略就是用指数化的奖励对参考模型重新加权。β 相当于温度:β 较大时贴近 πref,β 较小时集中到奖励最高的回复上。在我们的例子中,“RLHF 之后”那一列正是 β=1 时对应的 π⋆。

Reference πref (outline) and optimal policy π* (bars)y1 Quiz: Germany?r = -1.50%y2 Ramblesr = -0.43%y3 Paris.r = 0.525%y4 Full sentencer = 1.661%y5 Lyon.r = -1.01%y6 Flatteringr = 2.210%0.51.01.52.00123KL(π* ‖ πref)Expected reward-4-202True reward (outline), implicit reward (bars)y1y2y3y4y5y6
Reference πref (outline) and optimal policy π* (bars)y1 Quiz: Germany?r = -1.50%y2 Ramblesr = -0.43%y3 Paris.r = 0.525%y4 Full sentencer = 1.661%y5 Lyon.r = -1.01%y6 Flatteringr = 2.210%0.51.01.52.00123KL(π* ‖ πref)Expected reward-4-202True reward (outline), implicit reward (bars)y1y2y3y4y5y6
图 9. 带 KL 正则的最优解,以及隐藏在其中的奖励。仍然沿用我们的例子:SFT 模型作为参考模型,奖励模型高估了奉承式的 y6。左:当前 β 下的 π⋆。右上:随 β 变化,期望奖励与到参考模型的 KL 之间的关系。右下:隐式奖励 βlog(π⋆/πref) 等于真实奖励平移一个常数。调低 β,观察策略如何用 KL 换取奖励,并最终塌缩到奉承式回复上。 为示意性的玩具分布。

你的语言模型其实是一个奖励模型

现在把关系反过来。取对数并移项,就可以用最优策略来表示奖励:

r(x,y)=βlogπ⋆(y∣x)πref(y∣x)+βlogZ(x).

Z(x) 是对所有可能回复求和,无法计算。但它只依赖提示,而 §9 已经表明,依赖提示的奖励平移对 Bradley–Terry 模型是不可见的,因此它在每个偏好概率中都会被消去。

代入 σ(r(x,yw)−r(x,yl)):

P(yw≻yl∣x)=σ(βlogπ⋆(yw∣x)πref(yw∣x)−βlogπ⋆(yl∣x)πref(yl∣x)).

偏好概率现在只是策略的函数。于是直接参数化 πθ,像拟合奖励模型那样用最大似然将其拟合到偏好数据上:

ℒDPO(θ)=−𝔼(x,yw,yl)~𝒟[logσ(βlogπθ(yw∣x)πref(yw∣x)−βlogπθ(yl∣x)πref(yl∣x))].

定义隐式奖励

r^θ(x,y)=βlogπθ(y∣x)πref(y∣x).

于是梯度为

∇θℒDPO=−β𝔼[σ(r^θ(x,yl)−r^θ(x,yw))(∇θlogπθ(yw∣x)−∇θlogπθ(yl∣x))]:

提高被偏好回复的对数概率,降低被拒绝回复的对数概率,并按照隐式奖励当前把这一对排错的程度为每一对加权。训练只需要策略和一个冻结的参考模型,计算固定回复的对数概率,训练过程中不需要采样。它几乎和 SFT 一样简单。

算法 3 · DPO

输入:SFT 模型 πSFT,偏好数据 𝒟={(x,yw,yl)},β,步长 α。

  1. 初始化 πθ←πSFT 和冻结的参考模型 πref←πSFT。可选:预先计算一次 logπref(yw∣x) 和 logπref(yl∣x)。
  2. 对每个小批量三元组:由 token 对数概率之和计算 r^θ(x,yw) 和 r^θ(x,yl)。
  3. 对小批量平均的 −logσ(r^θ(x,yw)−r^θ(x,yl)) 做一步梯度下降。
  4. 在固定数据集上重复若干个 epoch;不生成任何回复。

回到我们的例子:一对 DPO 样本

以 §8 中标注者给出的那一对为例:y4 优于 y3。初始时 πθ=πref,两个隐式奖励都为零,损失为 log2≈0.693;第一步梯度会提高 logπθ(y4∣x)、降低 logπθ(y3∣x),其他回复只会通过共享参数被间接改变。如果训练达到与这些偏好一致的奖励模型所对应的 KL 最优策略 π⋆,那么隐式奖励之差就等于奖励差 1.1,该样本对的损失为 0.287。

与 PPO 的一个区别立刻显现出来。DPO 只从数据集中的样本对学习。如果标注者从未拿奉承式的 y6 与其他回复比较过,DPO 既不会像奖励模型有缺陷时的 PPO 那样被推向它,也不会学会避开它。

DPO 放弃了什么,以及它的近亲

DPO 通常离线运行,使用从其他模型收集的固定偏好数据集。基于 PPO 的 RLHF 则是在线的:它不断从当前策略采样并打分,因此能随着模型变化获得关于模型自身输出的反馈,这正是 §8 中引入偏好时所看重的优势。DPO 的在线和迭代变体会在当前策略上收集新的偏好,以部分弥补这一点。其他离线目标则修改了推导中的不同环节:

  • IPO (Azar et al., 2024) 指出,当偏好接近确定时,Bradley–Terry 似然会把隐式奖励差推向无穷,从而使 KL 正则失效;它改用朝向有限目标差值的平方损失来替代 log-sigmoid。
  • KTO (Ethayarajh et al., 2024) 从仅标注为“可取”或“不可取”的非成对样本中学习,使用受前景理论启发的损失。
  • SimPO (Meng et al., 2024) 移除了参考模型,以长度归一化的平均对数概率作为隐式奖励,并加入目标间隔。

20可验证奖励与 GRPO

学习得到的奖励模型是 RLHF 的薄弱环节:它是一个近似模型,容易被投机利用,而且需要偏好数据。对某些任务来说,它完全没有必要。答案已知的数学题、带单元测试的代码、带可检查约束的指令,都可以由程序打分。针对这类检查进行训练称为基于可验证奖励的强化学习(RLVR),这一名称随 Tülu 3 模型提出 (Lambert et al., 2024)。基于规则的奖励不太会像神经奖励模型那样被投机利用;不过,只检查最终答案的检查器,并不能说明推理过程是否可靠。

人们早已知道推理受益于中间步骤:提示模型写出思维链能提升大模型的多步推理 (Wei et al., 2022b);STaR 则通过在自己生成的、得出正确答案的推理过程上微调来自举推理能力 (Zelikman et al., 2022)。直接奖励步骤本身(过程监督)在训练数学奖励模型时优于只奖励最终答案 (Lightman et al., 2023),但步骤级标注成本很高。来自验证器的结果奖励成本低,也容易扩展。

GRPO:用一组样本替代 critic

组相对策略优化(GRPO)由 DeepSeekMath 提出 (Shao et al., 2024)。它保留了 PPO 的裁剪目标,但去掉了价值网络。对于每个提示 q,它从旧策略中采样一组 G 个输出 o1,…,oG,给它们打分,并用这组样本本身作为 baseline。当每个输出只有一个奖励时(结果监督),输出 i 的每个 token 都会得到归一化的 advantage

A^i,t=ri−mean(r1,…,rG)std(r1,…,rG).

这是 §14 中 baseline 思想最简单的形式:对同一提示多次尝试的平均奖励,估计了提示状态有多好,因此 advantage 表示这一次尝试比它的“兄弟”好多少。无需训练 critic,这既省去了一个和策略同样大的模型,也避免了从只在结尾才出现的奖励中学习 token 级价值的困难。目标与 PPO 的目标一致,在组内和 token 上取平均,并把与参考模型之间的 KL 直接加在损失里,而不是折算进奖励:

𝒥GRPO(θ)=𝔼[1G∑i=1G1|oi|∑t=1|oi|\{min(ρi,tA^i,t,clip(ρi,t,1−ϵ,1+ϵ)A^i,t)−β𝔻KL[πθ‖πref]\}],

其中逐 token 的比率为

ρi,t=πθ(oi,t∣q,oi,<t)πθold(oi,t∣q,oi,<t),

KL 的逐 token 估计为

𝔻KL[πθ‖πref]=πref(oi,t∣q,oi,<t)πθ(oi,t∣q,oi,<t)−logπref(oi,t∣q,oi,<t)πθ(oi,t∣q,oi,<t)−1,

它始终非负(因为 u−logu−1≥0);并且由于比率 πref/πθ 在 πθ 下的期望为 1,它也是 KL 的无偏估计。

算法 4 · GRPO

输入:初始策略(SFT 或基座模型)、提示集、奖励函数(验证器或奖励模型)、组大小 G、ϵ、β 和内层迭代次数 μ。

  1. 用初始策略初始化 πθ 以及冻结的参考模型 πref。
  2. 采样一批提示 q,并对每个提示采样 G 个输出 o1,…,oG~πθold(·∣q)。
  3. 给每个输出打分 ri,并为 oi 的每个 token 赋予 advantage A^i,t=(ri−mean(r))/std(r)。
  4. 迭代 μ 次:沿 𝒥GRPO 上升(裁剪比率、逐 token 的 KL 惩罚)。
  5. 令 θold←θ,回到第 2 步;不训练 critic。
Prompt: What is the capital of France? Verifier: reward 1 if the reply names Paris, else 0.replyrewardadvantage✗ y10−0.38✗ y20−0.38✓ y61+2.65✗ y10−0.38✗ y20−0.38✗ y10−0.38✗ y20−0.38✗ y20−0.38
Prompt: What is the capital of France?Verifier: reward 1 if the reply names Paris, else 0.replyradvantage✗ y1 Quiz: Germany?0−0.38✗ y2 Rambles0−0.38✓ y6 Flattering1+2.65✗ y1 Quiz: Germany?0−0.38✗ y2 Rambles0−0.38✗ y1 Quiz: Germany?0−0.38✗ y2 Rambles0−0.38✗ y2 Rambles0−0.38
图 10. 我们示例中的组相对 advantage。一组回复从基座模型、SFT 模型或 §19 的 RLHF 策略中采样,并由只检查 Paris 的验证器打 1 或 0 分。每个回复的 advantage 等于其奖励减去组均值后除以组内标准差,回复中的每个 token 共享该值。重新采样并切换策略和组大小:从基座模型采样时,少见的正确回复获得很大的 advantage;从强策略采样时,全部回复都正确的组完全不提供信号。 示意性的、带种子的样本。

图 10 展示了二元奖励的两个性质。如果组内正确比例为 p^,则正确回答的 advantage 是 (1−p^)/p^,错误回答是 −p^/(1−p^):少见的成功会被强烈强化。而一组回答全对或全错时,完全没有信号,因此太容易或太难的提示都会被浪费掉。它还展示了验证器看不到什么:y3、y4 和奉承式的 y6 都会得到 1 分,所以风格和语气必须来自别处,比如 SFT 数据或另一个奖励。后续工作对这些细节做了调整:DAPO 过滤掉没有信息的组,把裁剪的下界和上界解耦,并按 token 而不是按序列对损失取平均 (Yu et al., 2025);Dr. GRPO 认为按回复长度归一化和按标准差缩放会给训练带来偏差(例如偏向更长的错误回答),因此去掉了这两项 (Liu et al., 2025)。

21DeepSeek-R1 与推理

2024 年,OpenAI 报告 o1 的表现既随着更多强化学习而提升,也随着测试时更长的思考而提升 (OpenAI, 2024),但没有详细描述方法。DeepSeek-R1 (DeepSeek-AI, 2025) 公开给出了一条实现类似行为的路线,它建立在 GRPO 和可验证奖励之上。

DeepSeek-R1-Zero:只用 RL

直接在预训练基座模型上应用 GRPO,不做 SFT。奖励基于规则:准确性(最终答案是否正确、代码是否通过测试)和格式(推理是否放在思考标签之间)。出于对 reward hacking 的担忧,刻意没有使用神经奖励模型。

训练过程中,回复自发变得越来越长,并涌现出重新检查、重新评估先前步骤等行为,其中包括被广泛引用的“顿悟时刻”(aha moment)。但输出难以阅读,还会混用语言。

DeepSeek-R1:多阶段流程

  1. 冷启动:在少量较长且可读的思维链样本上做 SFT。
  2. 像 R1-Zero 那样进行面向推理的 RL,并额外加入语言一致性奖励。
  3. 从该模型进行拒绝采样,并加入通用数据,再做一轮 SFT。
  4. 最后一个 RL 阶段覆盖各类提示,兼顾推理、有用性和无害性。

还有两个发现对全局也很重要。论文通过在 R1 的输出上做普通 SFT,将其推理能力蒸馏到更小的开源模型中,并发现蒸馏比直接在小模型上做大规模 RL 更有效。论文也报告了使用过程奖励模型和蒙特卡洛树搜索的失败尝试;在其设定下,这些方法未能在大规模上奏效。

这个结构值得注意。SFT 仍是流程的开端,但现在的作用是为长推理设定可读的格式,而不是教模型如何回答;基于可检查奖励的 RL 承担了主要工作;在模型自己筛选过的输出上再做 SFT,则巩固了成果。第 1 到第 5 部分的思想——模仿、比较、策略梯度、baseline 和 KL 控制——仍然都在。

第 6 部分一句话总结

DPO 将带 KL 正则的目标转化为偏好对上的监督损失;带可验证奖励的 GRPO 去掉了 critic 和学到的奖励,使得面向推理的大规模 RL 变得可行。

自测 在一个包含 8 个回复的 GRPO 组里,8 个回复都正确。它们的 advantage 是多少?DAPO 对这样的组做了什么?

所有奖励都等于均值,标准差为零,因此每个 advantage 都是零,这一组不会贡献策略梯度(只有 KL 项起作用)。DAPO 会过滤掉回复全对或全错的组,并继续采样更多提示,直到批次中填满有信息的组。

第 7 部分 约 10 分钟实践

22方法并排对比

本文中的四类方法,与其说差别在数学(它们共享同一套数学),不如说在于需要什么,以及学习信号从哪里来。模型副本按完整大小计数;critic 往往更小或与策略共享网络;RLVR 描述的是奖励来源,可以与 PPO、GRPO 或其他优化器搭配。

方法所需数据内存中的模型采样方式学习信号主要失败模式
SFT提示–回复示范1 个:策略离线:固定数据集,teacher forcing示范的对数似然照搬数据中的缺陷;暴露偏差;新知识学得慢,并与更多幻觉相关
奖励模型 + PPO排序比较(用于训练奖励模型)和提示4 个:策略、参考模型、奖励模型、criticOn-policy:每轮迭代都要生成学到的奖励减去 KL 惩罚,再转化为 GAE advantageReward hacking、长度偏差与谄媚;KL 失控;成本高、对调参敏感
DPO偏好对 (x,yw,yl)2 个:策略和参考模型 (参考模型的对数概率可预先计算)离线:训练中不生成每个偏好对的隐式奖励差受限于所收集的样本对;缺少对自身输出的反馈;在近乎确定的偏好上可能过拟合
GRPO 配合 RLVR带有可检查答案的提示,或一个奖励模型2 个:策略和参考模型 (如用奖励模型则再加一个)On-policy:每个提示 G 个样本相对于组均值的奖励,无 critic组内无信号;归一化带来的长度偏差;只检查答案的验证器

这张表由两组对比组织起来。信号从哪里来:示范(SFT)、经由学习到的模型进行的人类比较(PPO)或直接的人类比较(DPO),或者一个程序(RLVR)。评判的是谁的输出:固定数据集(SFT、离线 DPO),还是模型自己当前的样本(PPO、GRPO)。后者对 §7 中 SFT 的第三个局限最为关键:只有 on-policy 方法能看到并纠正模型自己犯的错误。

23实际运行:设置、成本、故障

论文报告的设置

超参数的取值取决于模型、数据和代码实现,因此下表中的数值只是相应论文报告的参考点,而非推荐值。

设置作用报告的取值来源
PPO 裁剪 ϵ每批数据最多能将每个动作的概率改变多少0.2(在所比较的设置中效果最好)Schulman et al. (2017)
GAE λ、折扣 γadvantage 估计的偏差–方差权衡;有效视野在其基准实验中 λ=0.95、γ=0.99Schulman et al. (2017)
RLHF 的 KL 权重 β策略与 SFT 模型之间的距离0.02;PPO-ptx 的预训练混合系数为 27.8Ouyang et al. (2022)
自适应 KL不固定 β,而是让 KL 保持在目标值附近在训练中动态调整 β,使 KL 接近目标值Ziegler et al. (2019)
DPO 的 β隐式 KL 约束的强度默认 0.1;TL;DR 摘要任务为 0.5Rafailov et al. (2023)
GRPO 组大小 G、KL 权重 β每个提示用于构造 baseline 的样本数;策略与参考模型之间的距离G=64,β=0.04Shao et al. (2024)
解耦的裁剪范围让低概率 token 的概率上升空间大于下降空间ϵlow=0.2,ϵhigh=0.28Yu et al. (2025)

计算与内存

ZeRO 论文给出了一个实用的经验法则:使用混合精度 Adam 训练时,每个可训练参数约占 16 字节(16 位的权重与梯度,加上 32 位的主权重和 Adam 的两个矩估计),且不包括激活值 (Rajbhandari et al., 2020)。以 16 位精度存储的冻结模型每个参数约占 2 字节。因此,对一个有 N 个参数、进行全参数训练的策略而言:

  • SFT 的模型与优化器状态约需 16N 字节;仅一个 70 亿参数的模型就需要约 112 GB,这也是分片训练和 LoRA 等参数高效方法如此常见的原因。
  • PPO 需要训练策略和 critic,同时冻结参考模型和奖励模型:若四者规模都与策略相同,总计约 16N+16N+2N+2N。此外,它在每轮迭代中都要生成样本,而自回归生成可能占去每一步相当大一部分时间。
  • DPO 约需 16N+2N;若预先算好参考模型的对数概率,则只需 16N,并且无需生成。
  • GRPO 约需 16N+2N(若使用奖励模型则需另加),不需要 critic,但每个提示要生成 G 个样本。

故障如何显现

在语言模型上进行的 RL 训练大多会记录相同的几个量:平均奖励、相对参考模型的 KL、策略熵、回复长度、被裁剪样本的比例,以及留出集上的评测。下面四种故障涵盖了相当大一部分常见问题。

KL 失控

症状。相对参考模型的 KL 迅速上升,而奖励往往仍在上涨;样本的风格发生漂移,或变得重复。

诊断。把每批的 KL 与留出集上的质量指标画在同一张图上;阅读出现漂移的批次中的样本。

应对。使用更大的或自适应的 β (Ziegler et al., 2019),降低学习率或缩小裁剪范围,减少每批数据上的 epoch 数。

长度偏差

症状。平均回复长度随奖励同步增长,更长的回答无论内容如何都在评测中胜出。

诊断。检查奖励的提升有多少可以仅由长度解释 (Singhal et al., 2023);比较长度控制后的评测与原始评测(§24)。

应对。使用考虑长度的目标函数或归一化 (Meng et al., 2024; Liu et al., 2025)、长度控制的评测,以及更均衡的偏好数据。

熵塌缩

症状。策略熵迅速下降;同一提示下的样本趋于一致,许多 GRPO 组的 advantage 为零,pass@k 不再提升。

诊断。跟踪熵以及无信号组所占的比例。

应对。加入熵奖励(PPO 目标中的 c2)、像 DAPO 那样提高裁剪上界(DAPO 正是为对抗熵塌缩而提出这一做法)(Yu et al., 2025),或提高采样温度。

Reward hacking

症状。代理奖励持续上升,而人工评判或留出集上的评判却停滞甚至下降 (Gao et al., 2023; Stiennon et al., 2020);输出钻了奉承、格式等漏洞。

诊断。使用不同于被优化对象的评判者进行评测;阅读奖励最高的样本。

应对。施加 KL 惩罚、依据留出集质量提前停止训练、像 InstructGPT 那样基于当前策略收集新的比较数据,或在条件允许时使用可验证奖励。

24后训练模型如何评测

后训练改变的是行为,因此对它评测时衡量的也应是行为:人们更偏好哪个回答,以及回答是否正确。

偏好:人与模型评判者

  • 人类胜率。将两个模型对同一提示的输出交给评审者,统计各自被偏好的频率。InstructGPT 最主要的结果正是这样一种比较 (Ouyang et al., 2022)。
  • 竞技场排名。Chatbot Arena 收集用户与两个匿名模型对话后的成对投票,并对投票拟合 Bradley–Terry 模型来给模型排名 (Chiang et al., 2024):这正是 §9 中奖励模型用到的那个模型,只不过这里是在给模型打分,而不是给回复打分。
  • 模型评判者。一个强大的语言模型可以充当评判者。Zheng et al. (2023) 发现,强评判者与人类偏好一致的频率,与人类之间彼此一致的频率相当,同时还记录了位置偏差、冗长偏差和自我偏好偏差。由于评判者倾向于偏爱更长的回答,长度控制版本会对长度做校正 (Dubois et al., 2024)。

可验证的基准

当答案可以核验时,基准就不再需要评判者:GSM8K 中的小学数学应用题 (Cobbe et al., 2021)、MATH 中的竞赛数学 (Hendrycks et al., 2021),以及 HumanEval 中带单元测试的编程题 (Chen et al., 2021)。它们正是 RLVR 的天然标尺,常见的注意点是公开测试集可能泄漏进训练数据。

pass@1、pass@k,以及二者区别为何重要

可验证基准可以按单次尝试或多次尝试来计分。pass@k 是 k 个样本中至少有一个正确的概率。对每道题采样 n≥k 个答案,数出其中 c 个正确答案,Chen et al. (2021) 给出了一个无偏估计:

pass@k=𝔼problems[1−(n−ck)/(nk)].

pass@1 衡量模型一次尝试时会做什么;大 k 下的 pass@k 衡量模型究竟能够达到什么。对 k 个样本做多数投票(maj@k)则介于两者之间。这一区别正处在“激发还是教会”之争的核心:DeepSeekMath 发现,RL 提升了多数投票准确率,却没有提升 pass@K (Shao et al., 2024);Yue et al. (2025) 发现,尽管 RLVR 在小 k 时占优,但在大 k 时基座模型追平甚至超过了其经 RLVR 训练的版本。如果 RL 主要提升的是 pass@1,那么它是在让模型本来就能得到的答案更可能出现,这是一种“锐化”而不是新能力,至少在这些问题上如此。在我们的例子中,RLHF 把给出正确回复的概率从 76% 提高到了 96%,但每个正确回复本来就在 SFT 模型的能力范围之内。

评测还需要发现后训练可能破坏的东西。InstructGPT 测量了在标准 NLP 基准上的退化,这正是促使他们提出 PPO-ptx 的对齐税 (Ouyang et al., 2022)。

25开放问题

我们从 GPT-1 留下的问题出发:后训练是在教会模型新能力,还是在激发模型已有的能力?到目前为止,SFT 方面的证据偏向“激发”(§6),而同样的争论在 RL 上又重新展开(§24)。

  • RL 是在创造推理,还是在锐化推理?上文的 pass@k 结果表明,在所研究的问题上,它起到的是锐化作用。更长、更广或设计不同的 RL 是否会改变这一点,仍是开放问题。
  • 超越可验证奖励。可验证奖励覆盖数学、代码以及可检查的约束。人们想要的大部分东西,例如好的写作、可靠的建议或诚实的不确定性,都无法被机械地检查;这又把我们带回学习到的奖励及其失败模式。
  • 优化什么。GRPO 及其后继方法与 DPO 家族之间的差别在于归一化、裁剪和损失聚合方式,看似细枝末节,却会改变行为。哪些选择重要、为何重要,仍在研究之中。
  • 谁的偏好?单一奖励模型是在彼此存在分歧的人群上取平均。如何表示多元偏好,以及如何在人类难以评判的任务上监督模型,仍然悬而未决。

后训练至今的轨迹是:模仿好的答案,学会哪些答案更好,再让模型针对无法被糊弄的信号从自身的尝试中改进。每一步对人类标注者的要求都更少,对模型的要求都更多。

自测 经过 RLVR 之后,一个模型的 pass@1 上升了,但 pass@256 没有变化。这说明什么?

这说明 RL 让那些只要采样足够多就能找到的答案更有可能排在第一位:它锐化了输出分布,而没有扩展模型能解决的范围,至少在这些问题上如此。pass@1 衡量默认行为;大 k 下的 pass@k 衡量能力范围。

参考文献

  1. Armen Aghajanyan, et al. (2021). Intrinsic Dimensionality Explains the Effectiveness of Language Model Fine-Tuning. ACL 2021.
  2. Mohammad Gheshlaghi Azar, et al. (2024). A General Theoretical Paradigm to Understand Learning from Human Preferences. AISTATS 2024.
  3. Yuntao Bai, et al. (2022). Constitutional AI: Harmlessness from AI Feedback. arXiv:2212.08073.
  4. Yuntao Bai, et al. (2022). Training a Helpful and Harmless Assistant with Reinforcement Learning from Human Feedback. arXiv:2204.05862.
  5. Ralph Allan Bradley, Milton E. Terry (1952). Rank Analysis of Incomplete Block Designs: I. The Method of Paired Comparisons. Biometrika 39(3/4).
  6. Tom B. Brown, et al. (2020). Language Models are Few-Shot Learners. NeurIPS 2020.
  7. Stephen Casper, et al. (2023). Open Problems and Fundamental Limitations of Reinforcement Learning from Human Feedback. Transactions on Machine Learning Research.
  8. Mark Chen, et al. (2021). Evaluating Large Language Models Trained on Code. arXiv:2107.03374.
  9. Wei-Lin Chiang, et al. (2024). Chatbot Arena: An Open Platform for Evaluating LLMs by Human Preference. ICML 2024.
  10. Paul F. Christiano, Jan Leike, Tom B. Brown, Miljan Martic, Shane Legg, Dario Amodei (2017). Deep Reinforcement Learning from Human Preferences. NeurIPS 2017.
  11. Karl Cobbe, et al. (2021). Training Verifiers to Solve Math Word Problems. arXiv:2110.14168.
  12. Andrew M. Dai, Quoc V. Le (2015). Semi-supervised Sequence Learning. NeurIPS 2015.
  13. DeepSeek-AI (2025). DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning. arXiv:2501.12948.
  14. Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova (2019). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. NAACL 2019.
  15. Yann Dubois, et al. (2024). Length-Controlled AlpacaEval: A Simple Way to Debias Automatic Evaluators. arXiv:2404.04475.
  16. Kawin Ethayarajh, Winnie Xu, Niklas Muennighoff, Dan Jurafsky, Douwe Kiela (2024). KTO: Model Alignment as Prospect Theoretic Optimization. ICML 2024.
  17. Leo Gao, John Schulman, Jacob Hilton (2023). Scaling Laws for Reward Model Overoptimization. ICML 2023.
  18. Zorik Gekhman, et al. (2024). Does Fine-Tuning LLMs on New Knowledge Encourage Hallucinations?. EMNLP 2024.
  19. Dan Hendrycks, et al. (2021). Measuring Mathematical Problem Solving With the MATH Dataset. NeurIPS 2021 Datasets and Benchmarks.
  20. Jeremy Howard, Sebastian Ruder (2018). Universal Language Model Fine-tuning for Text Classification. ACL 2018.
  21. Edward J. Hu, et al. (2022). LoRA: Low-Rank Adaptation of Large Language Models. ICLR 2022.
  22. Sham Kakade, John Langford (2002). Approximately Optimal Approximate Reinforcement Learning. ICML 2002.
  23. Jared Kaplan, Sam McCandlish, Tom Henighan, Tom B. Brown, Benjamin Chess, Rewon Child, Scott Gray, Alec Radford, Jeffrey Wu, Dario Amodei (2020). Scaling Laws for Neural Language Models. arXiv:2001.08361.
  24. Nathan Lambert, et al. (2024). Tülu 3: Pushing Frontiers in Open Language Model Post-Training. arXiv:2411.15124.
  25. Hunter Lightman, et al. (2023). Let's Verify Step by Step. ICLR 2024.
  26. Bill Yuchen Lin, et al. (2024). The Unlocking Spell on Base LLMs: Rethinking Alignment via In-Context Learning. ICLR 2024.
  27. Zichen Liu, et al. (2025). Understanding R1-Zero-Like Training: A Critical Perspective. arXiv:2503.20783.
  28. Yu Meng, Mengzhou Xia, Danqi Chen (2024). SimPO: Simple Preference Optimization with a Reference-Free Reward. NeurIPS 2024.
  29. Tomas Mikolov, Kai Chen, Greg Corrado, Jeffrey Dean (2013). Efficient Estimation of Word Representations in Vector Space. arXiv:1301.3781.
  30. Volodymyr Mnih, et al. (2016). Asynchronous Methods for Deep Reinforcement Learning. ICML 2016.
  31. OpenAI (2024). Learning to Reason with LLMs. OpenAI blog post.
  32. Long Ouyang, Jeff Wu, Xu Jiang, et al. (2022). Training Language Models to Follow Instructions with Human Feedback. NeurIPS 2022.
  33. Jeffrey Pennington, Richard Socher, Christopher D. Manning (2014). GloVe: Global Vectors for Word Representation. EMNLP 2014.
  34. Matthew E. Peters, Mark Neumann, Mohit Iyyer, Matt Gardner, Christopher Clark, Kenton Lee, Luke Zettlemoyer (2018). Deep Contextualized Word Representations. NAACL 2018.
  35. Alec Radford, Karthik Narasimhan, Tim Salimans, Ilya Sutskever (2018). Improving Language Understanding by Generative Pre-Training. OpenAI technical report.
  36. Alec Radford, Jeffrey Wu, Rewon Child, David Luan, Dario Amodei, Ilya Sutskever (2019). Language Models are Unsupervised Multitask Learners. OpenAI technical report.
  37. Rafael Rafailov, Archit Sharma, Eric Mitchell, Stefano Ermon, Christopher D. Manning, Chelsea Finn (2023). Direct Preference Optimization: Your Language Model is Secretly a Reward Model. NeurIPS 2023.
  38. Colin Raffel, Noam Shazeer, Adam Roberts, Katherine Lee, Sharan Narang, Michael Matena, Yanqi Zhou, Wei Li, Peter J. Liu (2020). Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. Journal of Machine Learning Research 21.
  39. Samyam Rajbhandari, Jeff Rasley, Olatunji Ruwase, Yuxiong He (2020). ZeRO: Memory Optimizations Toward Training Trillion Parameter Models. SC 2020.
  40. Marc'Aurelio Ranzato, Sumit Chopra, Michael Auli, Wojciech Zaremba (2016). Sequence Level Training with Recurrent Neural Networks. ICLR 2016.
  41. Gavin A. Rummery, Mahesan Niranjan (1994). On-Line Q-Learning Using Connectionist Systems. Technical report, Cambridge University Engineering Department.
  42. John Schulman, Sergey Levine, Philipp Moritz, Michael I. Jordan, Pieter Abbeel (2015). Trust Region Policy Optimization. ICML 2015.
  43. John Schulman, Philipp Moritz, Sergey Levine, Michael I. Jordan, Pieter Abbeel (2016). High-Dimensional Continuous Control Using Generalized Advantage Estimation. ICLR 2016.
  44. John Schulman, Filip Wolski, Prafulla Dhariwal, Alec Radford, Oleg Klimov (2017). Proximal Policy Optimization Algorithms. arXiv:1707.06347.
  45. Zhihong Shao, et al. (2024). DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models. arXiv:2402.03300.
  46. Mrinank Sharma, et al. (2024). Towards Understanding Sycophancy in Language Models. ICLR 2024.
  47. Prasann Singhal, Tanya Goyal, Jiacheng Xu, Greg Durrett (2023). A Long Way to Go: Investigating Length Correlations in RLHF. arXiv:2310.03716.
  48. Nisan Stiennon, et al. (2020). Learning to Summarize from Human Feedback. NeurIPS 2020.
  49. Richard S. Sutton (1988). Learning to Predict by the Methods of Temporal Differences. Machine Learning 3.
  50. Richard S. Sutton, David McAllester, Satinder Singh, Yishay Mansour (2000). Policy Gradient Methods for Reinforcement Learning with Function Approximation. Advances in Neural Information Processing Systems 12.
  51. Richard S. Sutton, Andrew G. Barto (2018). Reinforcement Learning: An Introduction (2nd edition). MIT Press.
  52. Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser, Illia Polosukhin (2017). Attention Is All You Need. NeurIPS 2017.
  53. Yizhong Wang, et al. (2023). Self-Instruct: Aligning Language Models with Self-Generated Instructions. ACL 2023.
  54. Christopher J. C. H. Watkins, Peter Dayan (1992). Q-learning. Machine Learning 8.
  55. Jason Wei, et al. (2022). Chain-of-Thought Prompting Elicits Reasoning in Large Language Models. NeurIPS 2022.
  56. Jason Wei, Maarten Bosma, Vincent Y. Zhao, Kelvin Guu, Adams Wei Yu, Brian Lester, Nan Du, Andrew M. Dai, Quoc V. Le (2022). Finetuned Language Models Are Zero-Shot Learners. ICLR 2022.
  57. Ronald J. Williams (1992). Simple Statistical Gradient-Following Algorithms for Connectionist Reinforcement Learning. Machine Learning 8.
  58. Qiying Yu, et al. (2025). DAPO: An Open-Source LLM Reinforcement Learning System at Scale. arXiv:2503.14476.
  59. Yang Yue, et al. (2025). Does Reinforcement Learning Really Incentivize Reasoning Capacity in LLMs Beyond the Base Model?. arXiv:2504.13837.
  60. Eric Zelikman, Yuhuai Wu, Jesse Mu, Noah D. Goodman (2022). STaR: Bootstrapping Reasoning With Reasoning. NeurIPS 2022.
  61. Lianmin Zheng, et al. (2023). Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena. NeurIPS 2023 Datasets and Benchmarks.
  62. Chunting Zhou, et al. (2023). LIMA: Less Is More for Alignment. NeurIPS 2023.
  63. Daniel M. Ziegler, et al. (2019). Fine-Tuning Language Models from Human Preferences. arXiv:1909.08593.

贯穿全文的示例及图 2–10 均使用为本页构建的小型示意玩具模型,其中的数字并非真实模型的测量结果。回到顶部 ↑