1. PPO算法到底是什么?为什么它现在这么火?
如果你最近关注AI大模型,特别是像ChatGPT这样的对话模型,那你肯定不止一次听过“PPO”这个词。它全称是近端策略优化,听起来挺学术的,但说白了,它是一种让AI模型“学得更聪明、更听话”的核心技术。我刚开始接触强化学习时,也觉得这些算法高深莫测,但后来在几个大模型微调项目里亲手用上PPO之后,才发现它的设计思想其实非常巧妙和实用。
PPO主要用在强化学习这个领域。你可以把强化学习想象成训练一只宠物狗:狗做了一个动作(比如坐下),你给它一块零食(奖励),它就知道这个动作是好的;如果它乱叫,你就不理它或者轻微惩罚(负奖励),它下次就会减少这个行为。AI模型也是这样,通过不断的“尝试-反馈-调整”来学习。但问题来了,传统的强化学习算法在训练像GPT这样拥有数百亿甚至千亿参数的大模型时,非常不稳定,容易“学坏”或者“学崩”,训练过程就像坐过山车,效果时好时坏。
而PPO就是为了解决这个“训练不稳定”的难题而诞生的。它由OpenAI在2017年提出,迅速成为强化学习领域的明星算法,尤其是在基于人类反馈的强化学习中,几乎成了标配。为什么?因为它在一个核心目标上做得特别好:在追求更高奖励的同时,小心翼翼地控制模型策略更新的步伐,防止它“步子迈得太大”而崩盘。
举个例子,我们想微调一个聊天机器人,让它更乐于助人、更无害。传统的做法是,模型生成一个回答,如果这个回答好,我们就给它“点赞”(正奖励),鼓励它;回答不好,就“点踩”(负奖励)。但如果模型为了获得高奖励,突然开始生成一些极端但看似“正确”的废话,或者完全偏离了原本的语言能力,这就叫“策略崩溃”。PPO就像给训练过程加了一个“安全带”和“调速器”,确保模型在改进的同时,不会忘记自己原本会什么,也不会突然变得行为怪异。
所以,PPO不仅仅是一个算法,它更是一套保证大模型能够稳定、安全地朝着我们期望的方向进化的工程框架。接下来,我们就一层层剥开它的外壳,看看里面到底是怎么运作的。
2. PPO的核心思想:信任区域与策略更新的艺术
要理解PPO,我们得先看看它要解决的前辈算法的问题。在PPO之前,有一个更数学严谨的算法叫TRPO。TRPO的核心思想是“信任区域”:在模型参数更新的每一步,都确保新旧策略之间的差异不能太大,把这个差异约束在一个“信任区域”内。数学上,它通过复杂的二阶优化(计算费舍尔信息矩阵)来实现这个约束,虽然效果好,但计算量巨大,实现起来也非常麻烦。
PPO的作者们就想:有没有一种方法,既能享受到“信任区域”带来的训练稳定性,又不用做那些繁琐的二阶计算呢?答案是肯定的,PPO就是他们的优雅解决方案。
2.1 核心技巧:概率比裁剪
PPO最精髓的部分,就是这个“概率比裁剪”。我们来拆解一下。
首先,什么是“策略”?在AI模型里,策略就是模型根据输入(比如你的问题)选择输出(比如它的回答)的概率分布。模型参数更新后,策略就变了。我们用 π_θ_new(a|s) 表示新策略下采取某个动作 a 的概率,用 π_θ_old(a|s) 表示旧策略下的概率。它们的比值 r(θ) = π_θ_new / π_θ_old 就叫概率比。
- 如果
r(θ)远大于1,说明新策略更倾向于采取这个动作。 - 如果
r(θ)远小于1,说明新策略更不倾向于采取这个动作。 - 如果
r(θ)约等于1,说明新旧策略对这个动作的看法差不多。
在强化学习中,我们有一个叫优势函数 A_t 的东西。简单理解,它衡量了在某个状态下,采取某个动作比平均情况好多少。A_t 为正,说明这个动作比“随大流”要好;为负,则说明这个动作不太好。
传统的策略梯度算法,其目标就是最大化 r(θ) * A_t。这意味着:
- 当
A_t为正(好动作)时,我们希望r(θ)越大越好,即新策略要大幅提高采取这个好动作的概率。 - 当
A_t为负(坏动作)时,我们希望r(θ)越小越好,即新策略要大幅降低采取这个坏动作的概率。
问题就出在这个“大幅”上。如果模型为了最大化奖励,在某个好动作上把 r(θ) 推得极高(比如从概率0.1飙升到0.9),策略变化就会太剧烈,可能损害模型在其他方面的能力,导致不稳定。
PPO的妙招是:我不让你“大幅”变化,我给你设个上限和下限。它引入一个裁剪参数 ε(通常设为0.1或0.2),将概率比 r(θ) 限制在 [1-ε, 1+ε] 这个区间内。然后,目标函数变成了取最小值: L = min( r(θ) * A_t, clip(r(θ), 1-ε, 1+ε) * A_t )
这个设计非常巧妙:
- 当
A_t为正时,我们希望r(θ)增大。但如果它增大的幅度超过了1+ε,clip函数会把它拉回到1+ε。此时,clip(...) * A_t这个值会比r(θ) * A_t小,

1万+

被折叠的 条评论
为什么被折叠?



