【多模态学习】QA7: GRPO算法?KL散度指的是什么?什么叫做长思维连冷启动?模型退火是什么意思?
Q&A
- 什么是GRPO算法?
- 1. GRPO 是什么?
- 2. 背景:从 RLHF 到 GRPO 的驱动力
- 3. GRPO 的核心思想
- 4. GRPO 的工作流程
- 5. GRPO 的优势与特点
- 6. GRPO 与 PPO 的关系
- 总结
- KL散度指的是什么?
- 1. 核心思想:衡量“差异”
- 2. 数学定义
- 3. 关键特性
- 4. 在机器学习和GRPO中的应用
- 在GRPO和RLHF中的用法
- 在其他机器学习领域的应用
- 总结
- 什么叫做长思维连冷启动?
- 第一部分:什么是“长思维”?
- 第二部分:什么是“冷启动”?
- 第三部分:“长思维连冷启动” —— 组合起来是什么意思?
- 如何解决“长思维连冷启动”问题?
- 总结
- 模型退火是什么意思?
- 1. 背景:文本是如何生成的?
- 2. 核心参数:“温度”
- 3. 什么是“模型退火”?
- 结论
什么是GRPO算法?
GRPO是当前大语言模型(LLM)训练领域的核心算法之一,理解它对于理解如何用强化学习对齐大模型至关重要。
1. GRPO 是什么?
- 全称:Generalized Reinforcement Policy Optimization
- 广义强化策略优化
- 提出者:由 DeepMind 在其2023年的论文《Generalized Reinforcement Policy Optimization》中提出。
- 核心定位:它是一种专门为大语言模型等生成式模型设计的、无需训练奖励模型的策略优化算法。可以看作是 PPO 算法的一个强大演进。
为了理解GRPO,我们最好先回顾一下它要解决的问题以及它的前身——RLHF。
2. 背景:从 RLHF 到 GRPO 的驱动力
RLHF(基于人类反馈的强化学习) 是训练ChatGPT等模型的关键技术,它分为三个主要步骤:
- 监督微调(SFT):用高质量的问答数据微调一个预训练好的LLM。
- 奖励模型(RM)训练:训练一个独立的“奖励模型”,让它学会根据人类的偏好(比如哪个回答更好)来给任何一段文本打分。
- 强化学习(RL)优化:使用PPO等算法,让SFT模型(现在作为“策略”)生成回答,然后由RM给出奖励。通过优化,让模型学会生成能获得高奖励(即更符合人类偏好)的回答,同时不能偏离SFT模型太远(防止模型“胡说八道”或性能崩溃)。
RLHF的痛点:
- 训练成本高:需要训练和维护两个模型(策略模型和奖励模型)。
- 过程复杂:整个流程 pipeline 非常复杂,难以稳定训练。
- 稳定性问题:PPO算法本身包含很多技巧和超参数,调优困难。
GRPO的目标就是解决这些痛点,它提出:能否省去训练奖励模型这一步?
3. GRPO 的核心思想
GRPO的核心思想非常巧妙:直接利用一个预训练的“参考模型”来衡量生成文本的质量,从而省去奖励模型的训练。
这个“参考模型”通常就是第1步得到的SFT模型。
它的奖励函数由两部分构成:
总奖励 = 基础奖励 + 策略偏离惩罚
R(x,y)=Rbase(x,y)−β∗KL[πθ(y∣x)∣∣πref(y∣x)]R(x, y) = R_{base}(x, y) - β * KL[π_θ(y|x) || π_{ref}(y|x)]R(x,y)=Rbase(x,y)−β∗KL[πθ(y∣x)∣∣πref(y∣x)]
让我们来拆解这个公式:
-
基础奖励(Rbase(x,y)R_{base}(x, y)Rbase(x,y)):
- 这是任务相关的、最核心的奖励信号。
- 它不是一个模型,而是一个可以直接计算的函数。
- 例子1(代码生成):给定一个自然语言指令
x
(如“写一个排序函数”),模型生成代码y
。我们可以通过单元测试的通过率来直接计算Rbase(x,y)R_{base}(x, y)Rbase(x,y)。通过了就是高分,没通过就是低分。 - 例子2(文本摘要):给定长文章
x
,模型生成摘要y
。我们可以通过计算与参考摘要的ROUGE分数来作为 RbaseR_{base}Rbase。 - 关键:RbaseR_{base}Rbase 是任务本身提供的、无需训练的、可量化的评估标准。
-
策略偏离惩罚(−β∗KL[πθ(y∣x)∣∣πref(y∣x)]- β * KL[π_θ(y|x) || π_{ref}(y|x)]−β∗KL[πθ(y∣x)∣∣πref(y∣x)]):
KL
:Kullback-Leibler 散度,用于衡量两个概率分布的差异。这里衡量的是当前正在训练的模型(策略π_θ
) 和 SFT参考模型(π_ref
) 在输出分布上的差异。β
:一个超参数,控制惩罚的强度。- 作用:这个惩罚项确保模型在追求高
R_base
奖励的同时,不会为了“投机取巧”而偏离参考模型太远。这防止了模型崩溃或产生无意义的乱码来“欺骗”奖励函数(例如,在代码生成中,如果只关心测试通过,模型可能会生成一些取巧但不合逻辑的代码)。
4. GRPO 的工作流程
-
准备:
- 有一个预训练好的大语言模型。
- 使用高质量的监督数据对其进行监督微调(SFT),得到 参考模型(
π_ref
)。这个模型将被冻结(参数不更新)。 - 复制一份SFT模型作为当前策略(
π_θ
),这是我们要用强化学习优化的对象。
-
训练循环:
a. 采样:从数据集中采样一个提示(Prompt)x
。
b. 生成:让当前策略模型π_θ
为x
生成多个回答y
。
c. 计算奖励:
* 对于每个生成的y
,使用任务相关的评估函数(如单元测试、ROUGE)计算R_base(x, y)
。
* 计算当前策略π_θ
与参考模型π_ref
关于(x, y)
的KL散度。
* 根据公式R_total = R_base - β * KL
得到总奖励。
d. 策略优化:使用类似于PPO的优化器,根据得到的总奖励来更新当前策略模型π_θ
的参数,目标是最大化期望总奖励。
5. GRPO 的优势与特点
- 简化流程:无需训练和存储庞大的奖励模型,整个流程只需要一个参考模型和一个策略模型。
- 降低成本:大大减少了计算和存储开销。
- 更稳定:避免了奖励模型过拟合或泛化能力差带来的问题。
- 通用性:只要任务有可量化的评估标准(
R_base
),就可以应用GRPO,使其非常适用于代码生成、文本摘要、机器翻译等任务。 - 安全性:KL惩罚项有效地约束了模型的行为,防止其过度优化而丧失通用性和安全性。
6. GRPO 与 PPO 的关系
GRPO不是完全抛弃PPO,而是对PPO框架的一种革新和泛化。
- PPO in RLHF:PPO的奖励来自一个训练好的奖励模型。
- GRPO:PPO的奖励被替换为
R_base - β * KL
的形式。它把奖励的来源从一个“学出来的模型”泛化到了任何“可计算的函数”加上一个“分布稳定性约束”。因此,它被称为“广义的”策略优化。
总结
GRPO是一种强大且实用的强化学习算法,它通过直接利用任务相关的、可计算的评估指标 结合 KL散度正则化,巧妙地省去了RLHF中训练奖励模型的复杂步骤。这使得利用强化学习对齐大语言模型的过程变得更加简单、经济和稳定,特别在代码生成等有明确客观评价标准的领域显示出巨大潜力。它代表了RLHF技术发展的一个重要方向:简化流程、提升效率、增强稳定性。
KL散度指的是什么?
1. 核心思想:衡量“差异”
KL散度,全称是 Kullback-Leibler Divergence,中文常译为相对熵。
它的核心目的是衡量两个概率分布之间的差异。你可以把它想象成两个分布之间的“距离”,但严格来说它不是真正的距离(因为它不对称,不满足三角不等式)。
一个直观的比喻:
想象你有两本书:
- 书 P:《正统烹饪指南》
- 书 Q:《创意 fusion 菜谱》
这两本书都讲做菜,但风格不同。KL散度要回答的问题是:“如果我习惯了按照书 Q 的菜谱做菜,那么用书 P 的菜谱会让我感到多么‘意外’或‘不适应’?”
这种“意外感”的大小,就是 KL散度。
2. 数学定义
对于两个离散概率分布 P 和 Q(对于连续分布,求和换成积分即可),KL散度定义为:
DKL(P∣∣Q)=∑iP(i)log(P(i)Q(i))D_{KL}(P || Q) = \sum_{i} P(i) \log\left(\frac{P(i)}{Q(i)}\right)DKL(P∣∣Q)=i∑P(i)log(Q(i)P(i))
让我们拆解这个公式:
P(i)
: 在分布 P 中,事件i
发生的真实概率。Q(i)
: 在分布 Q 中,事件i
发生的近似或理论概率。log( P(i) / Q(i) )
: 这部分是“惊喜度”。如果P(i)
很大(某事经常发生),但Q(i)
很小(你认为它很少发生),那么P(i)/Q(i)
会很大,log
值也会很大,表示“非常意外”。P(i) * ...
: 我们对所有可能的i
,用其真实发生的概率P(i)
对“惊喜度”进行加权平均。
所以,D_{KL}(P || Q)
的含义是:当真实分布是 P,而你用 Q 来近似 P 时,所产生的平均额外信息量(或者说“意外”的程度)。
3. 关键特性
-
非负性:
D_{KL}(P || Q) ≥ 0
- KL散度永远大于等于零。
- 当且仅当 P 和 Q 完全相同时,KL散度等于零。 这意味着如果两个分布一模一样,你就不会感到任何“意外”。
-
不对称性:
D_{KL}(P || Q) ≠ D_{KL}(Q || P)
- 这是它最重要的特性,也是它不能被称为“距离”的原因。
D_{KL}(P || Q)
衡量的是 用 Q 来近似 P 的代价。D_{KL}(Q || P)
衡量的是 用 P 来近似 Q 的代价。- 这两者通常是不同的。
回到烹饪书的例子:
D_{KL}(正统 || fusion)
:一个吃惯正统菜的人,看到 fusion 菜谱有多惊讶?(可能发现很多奇怪的食材组合)D_{KL}(fusion || 正统)
:一个吃惯 fusion 菜的人,看到正统菜谱有多惊讶?(可能觉得规矩太多,缺乏创意)- 显然,这两种“惊讶”是不同的。
4. 在机器学习和GRPO中的应用
在GRPO和RLHF中的用法
在GRPO中,公式是 KL[π_θ(y|x) || π_ref(y|x)]
。
π_ref
: 是参考分布,即经过监督微调(SFT)后的模型。它代表了“正确”、“安全”、“高质量”的基准。π_θ
: 是当前正在被强化学习优化的策略模型。
KL项的作用是惩罚当前模型 π_θ
偏离参考模型 π_ref
的程度。
- 为什么用这种方向(
π_θ || π_ref
)?- 这意味着我们把
π_ref
看作是“真实”的、我们信任的分布。 - 我们惩罚的是模型
π_θ
在那些π_ref
认为概率高的事件上,分配了过低的概率;或者是在π_ref
认为概率低的事件上,分配了过高的概率。 - 这种方向能有效防止模型“走火入魔”。例如,为了防止获得高奖励,模型可能会开始生成人类无法理解的乱码(
π_θ
的分布变得很奇怪),但由于π_ref
(SFT模型)几乎不会生成这种乱码,它们之间的KL散度会非常大,从而受到强烈惩罚,阻止模型这么做。
- 这意味着我们把
在其他机器学习领域的应用
- 变分自编码器(VAE): 用于衡量编码器的输出分布与标准正态分布之间的差异,作为正则项。
- 模型压缩/知识蒸馏: 让学生模型的输出分布(Q)尽量接近教师模型的输出分布(P),即最小化
D_{KL}(P || Q)
。 - 贝叶斯推理: 用一个简单的分布 Q 去近似一个复杂的后验分布 P。
总结
你可以把KL散度理解为一个 “分布差异衡量器” 或 “意外度测量器”。
- 核心: 衡量一个分布与另一个分布的差异。
- 关键特性: 不对称。
D_{KL}(A||B)
和D_{KL}(B||A)
含义不同。 - 在GRPO中的作用: 作为一个正则项,确保强化学习优化后的模型不会为了追求高奖励而偏离原始SFT模型太远,从而保持生成文本的质量和稳定性,防止模型崩溃。
什么叫做长思维连冷启动?
第一部分:什么是“长思维”?
“长思维”这个概念主要来源于Google DeepMind的一篇著名论文《Long-term memory for large language models through information retrieval》以及后续的一系列工作,但其核心思想更广为人知的是在“思维链”的演进中。
你可以把它理解为一种让模型通过生成非常长且详细的“内心独白”或“推理过程”来解决复杂问题的方法。
- 基础:思维链: 首先,回想一下“思维链”。当我们让模型在给出答案之前,先输出“Let’s think step by step…”时,它就是在进行一个短程的、连续的思考。
- 进阶:长思维: “长思维”将这个理念推向了极致。它强制模型进行长时间的、多步骤的、甚至是多路径的思考。这个过程可以非常长,生成数百甚至数千个令牌,远远超过普通的“思维链”。
长思维的典型实现方式:
- 自我对话与提问: 模型会自己向自己提问,例如:“要解决这个问题,我首先需要理解什么概念?”“第一步应该做什么?”“让我验证一下这个结果是否合理。”
- 分解子问题: 将一个宏大复杂的问题,分解成一系列小而具体的子问题,然后逐个击破。
- 多假设与探索: 对于不确定的步骤,模型可能会生成多种可能的解决方案或假设,然后像在头脑中模拟一样,逐一推导它们的后果,最后选择最优路径。
- 总结与复盘: 在推理的最后,对整个过程进行总结,提炼出最终答案。
目标: 模仿人类解决复杂问题时的深度思考过程,通过“慢思考”来弥补模型在逻辑和数学推理上可能存在的“快思考”缺陷。
第二部分:什么是“冷启动”?
在推荐系统和机器学习中,“冷启动”指的是当一个新用户或新物品进入系统时,由于缺乏历史交互数据,系统难以对其进行有效推荐或理解的难题。
在大语言模型的推理语境下,“冷启动”被借用来描述一种类似的困境:
当模型面对一个全新的、复杂的、信息不足的问题时,它不知道应该如何开始它的“思维链”或“长思维”过程。它的“推理引擎”不知道如何点火启动。
- 表现: 模型可能陷入沉默,或者生成一些泛泛而谈、不得要领的内容,无法切入问题的核心。
- 根源: 因为模型的训练是基于概率的,如果问题的开头几个token的概率分布非常平坦(即有很多种可能的方式开始),模型就会“迷失方向”。
第三部分:“长思维连冷启动” —— 组合起来是什么意思?
现在我们把这两个词组合起来看。
“长思维连冷启动”描述的正是这样一种技术或现象:
为了应对复杂问题,我们要求模型进行“长思维”推理,但在一开始,模型就遇到了“冷启动”难题——它不知道如何迈出这漫长推理的第一步,或者不知道如何构建一个有效的初始思考框架。
这就像一个学生面对一道极其复杂的奥数题,他知道需要写很多步骤,但盯着题目看了半天,却连第一个公式都不知道该写什么。
如何解决“长思维连冷启动”问题?
研究人员设计了一些技巧来帮助模型“热启动”它的长思维过程:
-
更精巧的提示工程:
- 不仅仅是说“逐步思考”,而是给出一个更结构化、更具体的指令。
- 例如:“请按以下步骤解决这个问题:1. 定义问题中的核心概念。2. 列出所有已知条件和未知量。3. 回忆可能用到的公式或定理。4. 尝试将已知和未知联系起来…”
- 这相当于给了模型一个“思考模板”,帮它打破了最初的僵局。
-
提供少量示例:
- 在提示中包含一两个类似的、已解决的复杂问题示例(即少样本学习)。
- 模型可以通过模仿示例中的推理开头和结构,来启动自己的思考过程。
-
自我提问提示:
- 直接指令模型:“在开始解答前,先提出三个能帮助你理解这个问题的关键问题并回答它们。”
- 这强制模型进行一种特定的、简单的初始思考活动,从而打破冷启动状态。
-
使用特定的推理框架:
- 比如引导模型使用“归因”或“反思”模式。例如:“首先,请解释这个问题为什么是一个具有挑战性的XX类问题。然后,再开始你的解决方案。”
- 这为模型的思考提供了一个明确的“第一推动力”。
总结
“长思维连冷启动” 是一个生动的说法,它指出的核心问题是:
我们期望模型能进行漫长而复杂的推理(长思维),但这个过程最困难、最关键的部分往往是如何让它找到一个正确且有效的起点(克服冷启动)。
解决这个问题的核心策略,就是通过更精细、更结构化的外部提示,为模型的漫长思考之旅提供一个坚实的“起点”和清晰的“路线图”。这也是当前提示工程和Agent设计中的一个重要研究方向。
模型退火是什么意思?
主要发生在模型生成文本的阶段(即解码过程)。
1. 背景:文本是如何生成的?
大语言模型通过不断预测下一个词的概率来生成文本。给定已有的文本,它会计算出一个所有可能的下一个词的概率分布。
2. 核心参数:“温度”
这个参数直接控制着生成文本的随机性和创造性。
-
温度 = 0(贪婪搜索):
- 模型总是选择概率最高的那个词。
- 结果: 生成内容确定、可预测、保守,但可能非常枯燥和重复。这就像金属快速冷却,结构固定。
-
温度 > 0(退火过程):
- 模型会根据调整后的概率分布随机抽样选择下一个词。温度越高,概率分布被“熨”得越平,低概率的词也有机会被选中。
- 结果: 生成内容更有创意、更多样化,但也可能更不连贯或无厘头。
3. 什么是“模型退火”?
在LLM的语境下,“模型退火”通常指的是在文本生成过程中,将温度参数设置为一个大于0的值。这个过程就是在引入“热扰动”,让模型的选择不那么确定,从而生成更丰富、更自然的文本。
更高级的用法:动态退火
在一些复杂的应用中,温度不是固定不变的,而是在生成过程中动态变化的,这更接近冶金退火中“缓慢冷却”的理念。
- 例如:在生成一篇故事时,开头为了激发创意,使用较高的温度;到了中间需要保持逻辑连贯性时,逐渐降低温度;在结尾需要给出确定结论时,使用很低的温度。
结论
当您听到“模型退火”这个词时,在当今的AI讨论中,绝大多数情况指的是在大语言模型生成文本时,通过设置温度参数来增加输出的随机性和创造性。这是一种为了获得更高质量、更人性化输出而广泛使用的技术。