强化学习(RL)已经成为当今 LLM 不可或缺的技术之一。从大模型对齐到推理模型训练再到如今的智能体强化学习(Agentic RL),你几乎能在当今 AI 领域的每个领域看到强化学习的身影。
近日,Daniel Han 和 Michael Han 两兄弟组成的团队 Unsloth(用于微调模型的同名开源项目 GitHub 星数已超过 4 万)发布了一个强化学习教程,其中从吃豆人谈起,简单易懂地从 RLHF、PPO 介绍到 GRPO,还分享了如何用 GRPO 训练推理模型的技巧。
全面了解强化学习以及如何使用 GRPO 训练你自己的推理模型。这是一份从初学者到高级的完整指南。
本文涵盖了你需要了解的关于 GRPO、强化学习 (RL) 和奖励函数的所有内容 —— 从初学者到高级,还有基于 Unsloth 使用 GRPO 的基础知识。
如果你正需要学习如何一步步实现 GRPO,这份指南值得一读。
强化学习的目标是:
就这么简单!「好」和「坏」的含义错综复杂,「增加」和「降低」也许斟酌,甚至「结果」的含义也各不相同。
举个例子,在吃豆人(Pacman)游戏中:
在强化学习中,你无法知道自己可以采取的「最佳动作」,但你可以观察中间步骤,或者最终的游戏状态(胜或负)。
再来个例子,假设你被问到这个问题:「What is 2 + 2?」 (4)
一个未对齐的语言模型会输出 3、4、C、D、-10 等等各种乱七八糟的答案。
其实,我们刚刚就设计出了一个奖励函数!
OpenAI 让 RLHF(基于人类反馈的强化学习)的概念变得人尽皆知。在该方法中,我们需要训练一个 agent 来针对某个问题(状态)生成人类认为更有用的输出。
例如,ChatGPT 中的👍和👎符号就可以用于 RLHF 过程。
为了实现 RLHF,PPO(近端策略优化)被开发了出来。
在这种情况下,agent 就是语言模型。事实上,它由三个系统组成:
我们使用奖励模型来计算当前环境的奖励,而我们的目标就是最大化奖励!
PPO 的公式看起来相当复杂,因为它的设计初衷是保持稳定性。
PPO 公式
DeepSeek 开发了 GRPO(组相对策略优化)来训练他们的推理模型。它与 PPO 的主要区别在于:
这意味着 GRPO 非常高效。以前 PPO 需要训练多个模型 —— 现在移除了奖励模型和价值模型,便可以节省内存并加快速度。
RLVR(可验证奖励的强化学习)允许我们根据易于验证解答的任务来奖励模型。例如:
为什么使用「组相对」?
GRPO 完全移除了价值模型,但我们仍然需要根据当前状态估算「平均奖励」。
诀窍在于对 LLM 进行采样!然后,我们通过统计多个不同问题的采样过程来计算平均奖励。
例如,对于「What is 2 + 2?」,我们采样 4 次。我们可能得到 4、3、D、C。然后,我们计算每个答案的奖励,计算平均奖励和标准差,最后用 Z 分数进行标准化!
这就产生了优势 A,我们将用它来替代价值模型。这可以节省大量内存!
GRPO 优势计算
强化学习的诀窍在于你只需要两样东西:
仅凭这两个,我们基本上可以无限次调用语言模型,直到得到一个好的答案。例如,对于「What is 2+2?」,一个未经训练的糟糕模型语言模型可能会输出:
0、cat、-10、1928、3、A、B、122、17、182、172、A、C、BAHS、%$、#、9、-192、12.31,然后突然变为 4。
奖励信号为 0、0、0、0、0、0、0、0、0、0、0、0、0、0、0,然后突然变为 1。
因此,RL 凭借运气和偶然性,在多次迭代中找到了正确答案。我们的目标是让好答案(4)出现的次数更多,其余(坏答案)出现的次数更少。
因此,RL 的目标是耐心 —— 在极限情况下,只要正确答案的概率至少有一点(不为零),那么就只是一场等待的游戏 —— 你一定会在极限情况下 100% 找到正确答案。
所以我喜欢称之为针对强化学习的「运气 Is All You Need」。
其实,更好的说法是针对强化学习的「耐心 is All You Need」。
本质上,强化学习提供了一种技巧 —— 与其简单地等待无限,不如在实实在在地收到「坏信号」(即坏答案)时去「引导」模型尝试不生成坏答案。这意味着,尽管你可能等待了很长时间才出现一个「好」答案,但模型其实已经在尽力调整,尽量不输出坏答案。
在「What is 2+2?」这个例子中,先出现了 0、cat、-10、1928、3、A、B、122、17、182、172、A、C、BAHS、%$、#、9、-192、12.31,然后突然出现了 4。
由于我们得到了坏答案,强化学习会影响模型,使其尝试不输出坏答案。这意味着随着时间的推移,我们会仔细地「修剪」或移动模型的输出分布,使其远离错误答案。这意味着强化学习并非低效,因为我们并非只是等待无限,而是积极地尝试「推动」模型尽可能地向「正确答案空间」靠拢。
注:如果概率始终为 0,那么强化学习就永远不会奏效。这也是为什么人们喜欢基于已经过指令微调的模型进行强化学习的原因,因为这样的模型已经可以相当好地部分执行指令 —— 这很可能将概率提升到 0 以上。
这里给出了一个基于 Unsloth 使用 GRPO 训练自己的推理模型的详细教程,感兴趣的读者可以参考实验:
https://docs.unsloth.ai/basics/reinforcement-learning-guide/tutorial-train-your-own-reasoning-model-with-grpo
1.对于每个问答对,模型会生成多种可能的答案(比如,8 种变体)。
2.使用奖励函数对每个答案进行评估。
3.训练步数:如果有 300 行数据,则需要 300 个训练步骤(如果训练 3 个 epoch,则需要 900 个训练步骤)。也可以增加每个问题生成的答案数量(例如,从 8 个增加到 16 个)。
4.该模型的学习方式是在每一步对权重进行更新。
这里有一些示例笔记本:
https://docs.unsloth.ai/get-started/unsloth-notebooks#grpo-reasoning-notebooks
基础知识/技巧
Unsloth 还分享了一些他们积累的心得:
在强化学习中,奖励函数和验证器在评估模型输出方面发挥着不同的作用。一般来说,你可以将它们理解为同一件事,但从技术上讲,它们并非一回事,但这无关紧要,因为它们通常是配合使用的。
验证器(Verifier):
奖励函数(Reward Function):
主要区别:
理解奖励函数
GRPO 的主要目标是最大化奖励并学习答案的得出方式,而不是简单地记忆并根据训练数据复现答案。
参考以下示例。可以将你的生成结果输入到 ChatGPT 4o 或 Llama 3.1 (8B) 等 LLM 中,并设计一个奖励函数和验证器来评估它。例如,将你的生成结果输入到你选择的 LLM 中,并设置一条规则:「如果答案听起来太机械化,则扣 3 分。」这有助于根据质量标准优化输出。
示例 1:简单算术任务
示例 2:电子邮件自动化任务
如果答案包含必需关键词 → +1
如果答案与理想答案完全匹配 → +1
如果答案过长 → -1
如果包含收件人姓名 → +1
如果存在签名块(电话、电子邮件、地址)→ +1
Unsloth 基于邻近度的奖励函数
在前面的 GRPO Colab 笔记本,可以看到其中创建了一个完全从零开始构建的自定义基于邻近度的奖励函数,旨在奖励那些更接近正确答案的答案。这个灵活的函数可以应用于各种任务。
GSM8K 奖励函数
在其他示例中,Unsloth 使用了 @willccbb 提供的现有 GSM8K 奖励函数,该函数广受欢迎且已被证明非常有效:
1.Nathan Lambert 的 RLHF 书: https://rlhfbook.com/c/11-policy-gradients.html
2.Yannic Kilcher 的 GRPO Youtube 视频: https://www.youtube.com/watch?v=bAWV_yrqx4w
3.Unsloth 在 2025 年 AI 工程师世界博览会上举办了一场 3 小时的研讨会,幻灯片等资料请访问:https://docs.unsloth.ai/ai-engineers-2025
4.通过 Unsloth 构建的高级 GRPO 笔记本。https://docs.unsloth.ai/basics/reinforcement-learning-guide/tutorial-train-your-own-reasoning-model-with-grpo
5.基于基础模型进行 GRPO 的笔记本:https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen3_(4B)-GRPO.ipynb
文章来自于微信公众号“机器之心”。
【开源免费】Browser-use 是一个用户AI代理直接可以控制浏览器的工具。它能够让AI 自动执行浏览器中的各种任务,如比较价格、添加购物车、回复各种社交媒体等。
项目地址:https://github.com/browser-use/browser-use
【开源免费】DeepBI是一款AI原生的数据分析平台。DeepBI充分利用大语言模型的能力来探索、查询、可视化和共享来自任何数据源的数据。用户可以使用DeepBI洞察数据并做出数据驱动的决策。
项目地址:https://github.com/DeepInsight-AI/DeepBI?tab=readme-ov-file
本地安装:https://www.deepbi.com/
【开源免费】airda(Air Data Agent)是面向数据分析的AI智能体,能够理解数据开发和数据分析需求、根据用户需要让数据可视化。
项目地址:https://github.com/hitsz-ids/airda
【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。
项目地址:https://github.com/Significant-Gravitas/AutoGPT
【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。
项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md
【开源免费】XTuner 是一个高效、灵活、全能的轻量化大模型微调工具库。它帮助开发者提供一个简单易用的平台,可以对大语言模型(LLM)和多模态图文模型(VLM)进行预训练和轻量级微调。XTuner 支持多种微调算法,如 QLoRA、LoRA 和全量参数微调。
项目地址:https://github.com/InternLM/xtuner
【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。
项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md
在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0