惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
Cisco Talos Blog
Cisco Talos Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
V2EX
博客园 - 三生石上(FineUI控件)
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
D
Docker
S
SegmentFault 最新的问题
博客园 - 聂微东
美团技术团队
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
M
MIT News - Artificial intelligence
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The GitHub Blog
The GitHub Blog
GbyAI
GbyAI
L
LangChain Blog
Vercel News
Vercel News
博客园 - 叶小钗
MongoDB | Blog
MongoDB | Blog
Stack Overflow Blog
Stack Overflow Blog
H
Help Net Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
Engineering at Meta
Engineering at Meta
T
Threat Research - Cisco Blogs
T
Threatpost
Scott Helme
Scott Helme
T
Tailwind CSS Blog
Latest news
Latest news
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
The Register - Security
The Register - Security
罗磊的独立博客
P
Proofpoint News Feed
腾讯CDC
S
Schneier on Security
雷峰网
雷峰网
A
About on SuperTechFans
T
Tenable Blog
F
Full Disclosure
Cyberwarzone
Cyberwarzone
博客园_首页
有赞技术团队
有赞技术团队
K
Kaspersky official blog

文章列表

一场静悄悄的架构革命:Embedding 模型为何从 Encoder 转向 Decoder - aopstudio 的个人博客 同一个 if 判断,Dify 三种节点跑出三种速度 - aopstudio 的个人博客 手动拼了张4像素的图,JPEG颜色错了,PNG却对了——为什么? - aopstudio 的个人博客 最近的生活节奏:慢一点,也挺好 - aopstudio 的个人博客 HuggingFace 为 LLM Agent 做的读论文工具:`hf papers` - aopstudio 的个人博客 Hugging Face 新工具 hf-mount 解析:把 HF Hub 直接变成本地文件系统 - aopstudio 的个人博客 AI 编程工具演进梳理:从 IDE 插件到 CLI Agent,终端为何重新成为开发中心 让OpenClaw做你的个人电脑代理仍不成熟,但它可以是这个…… 阿里 CoPaw 上手体验:电子宠物养着挺好,生产工具差点意思
强化学习知识补课:同样的数据集,SFT 和 RL 学到的东西为什么不一样? - aopstudio 的个人博客
aopstudio · 2026-03-17 · via

前言

我本人虽然学习的是自然语言处理专业,但当时跟着的学习资料主要是深度学习相关的,但对于强化学习的了解非常少。然而现在 LLM 的效果增强越来越依赖于强化学习,因此我也开始补补强化学习的课。这篇文章讲的就是强化学习里面很基础的内容,但原先对于强化学习基本一无所知的我现在才终于完全搞明白,在此把自己刚弄明白的这个基础问题整理下来,既当作学习记录,也希望能帮到和我一样对强化学习刚入门的人。

我对于强化学习的了解开始主要源于 DeepSeek-R1,当时它通过 GRPO 的强化学习训练方式使得模型的推理能力大大增强,也掀起了一股热潮。网络上后来也出现了各种低资源复现 GRPO 训练的代码,其中 Unsloth 是比较有影响力的一家,但我看了它的训练数据,发现它用的是 GSM8K ,这个数据集最开始的时候是用来给 GPT 做 SFT 训练以增强数学推理能力的数据,而我原本以为强化学习的训练数据集应该和 SFT 完全不同才对。于是我就有了一个疑问:

既然数据集可以一样,那强化学习训练方式和 SFT 到底有什么区别?

这篇文章就来说说这一点。


SFT:直接学答案文本

SFT 的训练目标很直接:给定输入,让模型去拟合目标输出序列。
对语言模型来说,本质上就是最小化目标答案的 token-level loss,也就是逐 token 学习“下一个词应该是什么”。这也是 Hugging Face 对 SFTTrainer 的标准描述。

所以在 SFT 里:

  • 模型直接看到标准答案
  • 标准答案就是监督目标
  • 训练本质是模仿答案文本

一句话概括:

SFT 学的是“标准答案长什么样”。


PPO、GRPO 等强化学习方法:先作答,再看得分

PPO 和 GRPO 这类方法的逻辑不一样。
它们通常不是把标准答案直接当成目标文本去拟合,而是:

  1. 给模型一个问题
  2. 模型先生成回答
  3. 用 reward model、verifier 或规则函数打分
  4. 根据分数更新模型

更准确地说,在这个训练过程中,模型的参数更新不是直接对着标准答案文本做拟合,而是根据评分信号间接进行优化

而GRPO,通常还会对同一个 prompt 一次生成多个回答,再根据这些回答的 reward 和组内相对表现来更新。

所以它们学的是:

什么样的回答更容易拿高分。

而不是简单地模仿标准答案。


一个直观例子

假设题目是:

一个箱子里有 3 个苹果,又放进去 2 个,一共有多少个?

标准答案是 5

如果是 SFT

训练时,模型会对当前位置给出一个当前的 token 概率分布,然后把这个分布和目标答案 5 对应的正确 token 进行比较,并据此更新参数:

  • 提高正确答案 5 被输出的概率
  • 降低其他错误 token 被输出的概率

在工程上,这个过程通常是在一个 batch 内完成的:比如一次喂给模型很多道题和它们各自的标准答案,算完这一批的 loss 后统一更新。也就是说,SFT 的更新依据是:这一批标准答案和模型当前预测之间的差异。

所以 SFT 的核心是:

直接朝着标准答案文本去拟合。

如果是 PPO / GRPO

对于一批 prompt,模型会先采样出回答;而在 GRPO 中,通常还会对同一个 prompt 一次生成多个答案。比如对这个问题,模型可能生成:

  • 4,低分
  • 6,低分
  • 5,高分

接着,训练会根据这一批回答的得分来统一更新参数:

  • 对低分的输出,减少模型生成它们的倾向
  • 对高分的输出,增强模型生成它们的倾向

因此,PPO / GRPO 学到的不是“把标准答案逐 token 背下来”,而是:

让高 reward 的输出变得更可能出现,让低 reward 的输出变得更不可能出现。


Unsloth 的 GRPO 示例正好说明了这一点

Hugging Face 的 GRPO with Unsloth 教程里,GSM8K 数据集保留了 answer 列;但训练时这列答案主要被用在 reward function 里,与模型生成结果比对,再转换成 reward。课程页也给了类似 problem_reward(completions, answers, **kwargs) 的例子:把数据集里的 answers 当作正确答案,用来判断模型 completion 是否答对。

这说明:

在这个 GRPO 示例里,标准答案的作用是判题,不是监督模仿。
模型不是直接学 gold answer 文本,而是间接通过 reward 学习。


总结

所以,虽然 SFT 和 PPO / GRPO 可能使用同一个数据集,甚至这个数据集里都包含标准答案,但它们训练时“答案”扮演的角色并不一样:

在 SFT 里

标准答案是:

  • 监督目标
  • token-level loss 的直接依据
  • 模型要去拟合的文本

在 PPO / GRPO 里

标准答案更常见的是:

  • verifier 的参考依据
  • reward 的计算依据
  • 用来判断模型当前输出“好不好”的标准

所以问题的关键不在于:

数据集里有没有标准答案

而在于:

标准答案到底是被拿来“直接监督模型”,还是被拿来“给模型打分”。

如果是前者,更接近 SFT。
如果是后者,更接近 PPO、GRPO 这类强化学习方法。

更进一步的说,相比 SFT,RL 的优势在于:它不只是教模型“标准答案长什么样”,还可以进一步优化“什么样的输出更值得保留”。这让它更适合处理那些很难用单一标准答案完整描述、但可以通过评分区分好坏的问题。

但这并不意味着可以跳过 SFT 直接从零做 RL。因为 RL 提供的通常只是“这次答得好不好”的信号,而不是像 SFT 那样直接告诉模型“应该怎么答”。如果模型一开始连基本的语言能力和指令跟随能力都没有,RL 往往很难稳定训练起来。

所以更合理的理解是:SFT 负责让模型学会“怎么回答”,RL 负责让模型学会“怎样回答得更好”。