语言模型怎样构成强化学习问题:从一次回答到策略更新

成长演进

具备清晰骨架、初步数学推导或工程验证,持续补充论据与实测。

ℹ数字花园

🌿 什么是数字花园与思想演进?

遵循 Maggie Appleton 与 Andy Matuschak 的常青笔记理念:这里不是按时间沉底的流水账,而是持续修剪打磨的知识生态。文章按成熟度经历:

  • 🌱 萌芽 (Seedling): 发散灵感、读书摘录、开放猜想
  • 🌿 演进 (Budding): 结构渐明、初步代码推导、积极修正
  • 🌳 常青 (Evergreen): 逻辑闭环、持久经得起检验的基石
  • 🔬 实验待证 (Speculative): 结合沙盒与仿真探针的理论探索
浏览全站数字花园与笔记全景 →

给模型一道题,模型答错了。我们能检查出错误,却未必能为每道题写出一份高质量示范。能不能让模型先尝试,再用检查结果改进下一次回答?

这就是本卷的出发点。不过,收到反馈和学会改进之间,还隔着一套具体机制。多生成几个答案、挑出一个正确答案、把正确答案用于训练,是三件不同的事。只有明确数据怎样产生、反馈检查什么、参数怎样更新,才能判断自己在做哪一种。

本篇先搭好问题,不急着介绍 PPO 或 GRPO。文中的题目、概率和收益都是教学设定,没有运行模型训练。

先选一道检查规则明确的题#

假设任务是:给定两个非负整数 a、b,返回满足下面条件的最小非负整数 n:

3n+a≥b.3n+a\ge b.

以 a=2、b=12 为例,n=3 时左边是 11,不够;n=4 时左边是 14,满足。因此答案是 4。不是任意满足不等式的数都对,5 也满足,但不是最小值。

我们约定模型必须只输出一个 JSON 对象,例如 {"n":4}。检查器先确认结构、类型,再检查数值。暂时不要求模型输出推导过程。

这个任务很简单,甚至可以直接写公式求解。我们选它,是为了把训练问题讲清楚:正确性可以独立核对,失败也容易分类。它不是证明大模型拥有复杂推理能力的基准,更不需要为了求这个数而部署大模型。

状态就是此刻能看到的输入#

模型开始生成前,能看到题目和输出约定。生成几个 token 后,它还能看到自己已经写出的前缀。

用强化学习的语言表示,时刻 t 的状态是:

st=(x,y<t).s_t=(x,y_{<t}).

x 是题目及完整提示,y 的前缀是此前生成的 token。动作 a_t 则是接下来选择的一个 token。模型给每个可能 token 分配概率:

πθ(at∣st).\pi_\theta(a_t\mid s_t).

这里的策略 π 就是生成模型所定义的条件概率分布,θ 是模型参数。抽样选出动作后,环境把它接到前缀后面,得到下一个状态。

注意,一步并不一定是一个汉字、一个数字或一句推理。实际动作单位由分词器决定。{"n":4} 也不能凭肉眼假定为固定数量的 token。

在本例中,题目固定、生成期间没有外部工具返回信息,完整前缀足以描述接下来生成所需的历史。以后加入工具调用、隐藏环境状态或被截掉的历史时,这个简化就需要重新检查。

一段回答是一条轨迹#

从开始到停止,状态和动作串起来,就是一条轨迹。停止也要有明确规则:模型生成结束标记,或者达到最大生成长度。

我们把最终检查结果记作 R(x,y)。格式正确且 n 正确时为 1,否则为 0。先采用终局奖励:中间 token 的任务奖励为零,结束时才给出检查结果。

这不表示中间 token 不重要。4、5、多余字段、被截断的括号,都可能改变最终结果。只是当前反馈没有告诉模型“究竟哪一步导致成功或失败”。这个问题叫信用分配,后续的优势估计和过程反馈都与它有关。

最大长度停止尤其要单独记录。没有生成完整 JSON 的回答是未完成样本,不能偷偷补齐括号后当作模型成功;如果产品允许某种修复,则必须把修复规则和成本写进任务定义。本卷初始设定不进行这种修复。

整段回答也可以看作一个动作#

既然只有回答结束时才得到分数,也可以把整个回答 y 视作一次大动作:环境给一道题,策略生成一个回答,环境评分,然后本轮结束。这是上下文 bandit的视角。

InstructGPT 的方法章节就把其提示—回答—奖励环境描述为 bandit,并在优化中加入来自 SFT 参考模型的约束。这里借用的是问题建模方式,不是声称本卷的整数检查器与人类偏好奖励相同。InstructGPT,第 3.5 节

token 视角与整段视角并不矛盾。前者方便解释逐位置计算,后者方便解释一次回答的收益。两者通过自回归概率相连:

πθ(y∣x)=∏t=1Tπθ(yt∣x,y<t).\pi_\theta(y\mid x) =\prod_{t=1}^{T}\pi_\theta(y_t\mid x,y_{<t}).

若把正常结束标记计入 y,乘积中也应包含它。达到长度上限的截断则有不同的停止来源,日志里要保留这种差别。不能一边用包含结束动作的轨迹定义,一边计算概率时随意删除对应位置。

我们提高的是哪一个平均数#

假设题目来自固定分布 D,每次按当前策略采样一个回答。最基础的目标是提高期望任务奖励:

J(θ)=Ex∼D Ey∼πθ(⋅∣x)[R(x,y)].J(\theta)= \mathbb E_{x\sim D}\, \mathbb E_{y\sim\pi_\theta(\cdot\mid x)}[R(x,y)].

用大白话说:按约定的方式出题、按约定的方式生成答案,长期平均能拿多少分?

在本例中,如果 R 只取 0 或 1,而且每次只算一次生成,这个期望就是该分布下的单次通过概率。如果改为“每题生成八次,只要有一次通过就记一分”,得到的是另一个指标。它不等于上面这个单次目标。

同样,若训练加入参考模型 KL 惩罚、长度成本或格式加分,实际优化目标就不再只有任务成功率。报告时应把各项拆开,而不是把加总后的训练 reward 直接称为正确率。奖励权重表达了取舍,不能藏在算法名字里。

一个四候选的可手算例子#

暂时假定某道题只有以下四种可能输出,概率加起来为 1。这是为了计算而缩小的回答空间,真实模型还会生成很多其他字符串。

回答概率奖励原因
{"n":4}0.201结构和最小值都正确
{"n":5}0.300满足不等式,但不是最小值
{"n":3}0.400不满足不等式
答案是40.100数值文字正确,但不符合接口约定

单次期望奖励是 0.20。若保持同一个模型不变,独立采样四次,至少一次通过的概率是:

1−(1−0.20)4=0.5904.1-(1-0.20)^4=0.5904.

从 20% 到 59.04%,没有发生参数更新。变化来自多花了生成预算,而且这一计算假设四次独立、单次通过概率固定。复制同一回答四次或四次贪心解码,都不能套这个公式。

即使四个答案中存在正确答案,用户最终拿到哪一个仍取决于选择办法。本教学任务的检查器能选中通过项;真实开放问题的筛选器未必可靠。“候选里有正确答案”和“最终交付正确答案”也应分别记录。

采样、筛选和训练怎样分开#

采样只产生候选;筛选决定保留哪些候选;训练才改变参数。一个清楚的实验应记录这三个阶段各自的输入和输出。

一种做法是生成多份回答,留下通过项,再做监督微调。这通常归入拒绝采样后的微调思路:训练时模仿筛出的答案。另一种做法是把采到的回答和奖励送入策略优化,利用奖励与采样概率的关系调整参数。两者都可能使用生成数据,但更新目标不同。

DeepSeekMath 的方法章节给出了“按题采多份回答、评分、计算组内信号、更新策略”的具体算法流程,并在讨论中区分多种训练范式。本篇只用它说明采样与更新是可分开的环节,GRPO 的目标与假设会在本卷后文展开。DeepSeekMath,第 4 节

如果本轮数据是旧模型采出的,却用新模型概率直接套一个需要当前策略采样的估计式,就还多了分布不一致的问题。旧策略、当前策略和参考模型各有用途,不能只保留一个模糊的“model”字段。

任务太难或检查太松,都会误导训练#

假如当前模型几乎不会生成合法答案,一批采样全是零分,那么这批数据没有展示任何成功回答。对于最简单的无 baseline 奖励加权策略梯度,任务奖励带来的更新就是零;有价值估计、其他损失或正则时,还可能有别的梯度,不能笼统断言所有参数完全不动。

相反,如果检查器只判断 3n+a≥b,模型输出一个巨大 n 就能得分。此时训练越“成功”,离原任务的最小值要求可能越远。

还要注意题目分布。例如大量样本满足 b≤a,答案自然是 0。总是输出 0 的模型也许获得不错的平均奖励,但并没有处理真正需要计算的那部分题目。因此至少分开报告 b≤a、差值可被 3 整除、差值不可被 3 整除这几类情况。

这些问题不能靠直接换成 PPO 或 GRPO 消除。先确认任务、检查器和起始策略,再讨论优化方法,才知道分数变化意味着什么。

第一轮实验先验证闭环#

先为若干边界题人工核对答案:b≤a、b−a=1、b−a=3、b−a=4。检查器分别测试正确值、过大值、过小值、布尔值、字符串、重复键和截断输出。检查失败原因要有明确类别,不能只保存一个总分。

再固定一个模型版本、模板、分词器、温度、采样设置和长度上限,保存逐条生成、停止原因、任务奖励及 token 数。先不更新参数,确认同一个回答能被重复评分为同一个结果。

之后比较三种设置:原模型单次生成;原模型多次生成并筛选;训练后的模型单次生成。另补相同生成预算下的对照。这样才能分别回答“多花推理预算是否有用”和“参数更新是否改变了单次表现”。按题目族和数值范围划分训练、验证、测试,保留没有用于选择训练配置的测试部分。

这是实验设计,尚未执行模型对照。本篇的四候选概率计算只能验证计数逻辑,不能预测真实模型训练能提升多少。

用两个问题检查理解#

第一,同一个模型四次采样的至少一次成功率提高,为什么不能据此说模型已经学会了新能力?需要增加什么证据才能说明参数更新有效?

第二,若模型越来越倾向输出巨大整数,而训练奖励持续上升,你会先改学习率,还是检查“最小值”是否进入评分规则?请写出一个能区分这两类原因的反例。

下一篇将把检查器展开:最终答案、格式、代码测试和过程反馈分别能检查到什么,以及如何避免把容易计算的分数误当成完整目标。

文章概念网络

从章节进入正文概念。实线表示所属层级,虚线连接跨章节重复出现的概念,不代表因果关系。

75 / 75 个节点 · 正文标记术语与关键词概念

语言模型怎样构成强化学习问题:从一次回答到策略更新同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept语言模型怎样构成强化学习问题:从一次回答到策略更新语言模型怎样构成强化学习问题:从一次回答到策略更新收到反馈收到反馈学会改进学会改进先选一道检查规则明确的题先选一道检查规则明确的题状态就是此刻能看到的输入状态就是此刻能看到的输入状态状态动作动作一段回答是一条轨迹一段回答是一条轨迹轨迹轨迹终局奖励终局奖励整段回答也可以看作一个动作整段回答也可以看作一个动作上下文 bandit上下文 banditInstructGPT,第 3.5 节InstructGPT,第 3.5 节我们提高的是哪一个平均数我们提高的是哪一个平均数期望任务奖励期望任务奖励一个四候选的可手算例子一个四候选的可手算例子答案是4答案是4采样、筛选和训练怎样分开采样、筛选和训练怎样分开采样采样筛选筛选训练训练DeepSeekMath,第 4 节DeepSeekMath,第 4 节任务太难或检查太松,都会误导训练任务太难或检查太松,都会误导训练第一轮实验先验证闭环第一轮实验先验证闭环用两个问题检查理解用两个问题检查理解反馈反馈GRPOGRPOPPOPPO推理推理tokentoken环境环境强化学习强化学习条件概率条件概率工具调用工具调用分词分词tokentoken奖励奖励反馈反馈状态状态动作动作环境环境奖励奖励动作动作tokentokenSFTSFT策略策略奖励奖励rewardreward采样采样策略策略优化优化奖励奖励采样采样选择选择策略策略微调微调奖励奖励GRPOGRPO利用利用优化优化奖励奖励策略梯度策略梯度GRPOGRPOPPOPPO采样采样策略策略tokentoken分词分词采样采样奖励奖励推理推理选择选择采样采样奖励奖励反馈反馈
语言模型怎样构成强化学习问题:从一次回答到策略更新

语言模型怎样构成强化学习问题:从一次回答到策略更新

回到原文 ↗
BIBTEX

引用本文

@article{2026-10-23-llm-training-rl-01-formulation,
  author  = {枫语},
  title   = {语言模型怎样构成强化学习问题:从一次回答到策略更新},
  journal = {枫语},
  year    = {2026},
  month   = {oct},
  url     = {https://meiluosi.github.io/posts/2026-10-23-llm-training-rl-01-formulation/}
}
🌐

本篇知识星丛与滑动侧栈

语言模型怎样构成强化学习问题:从一次回答到策略更新 当前主轴

搜索

正在载入索引…