一、强化学习 vs 监督学习

1. 监督学习(Supervised Learning, SL)

你对监督学习一定再熟悉不过。它的核心逻辑很直观:我们收集一堆"问题-答案"对,让模型学习模仿标准答案。

比如,给模型看一张猫的图片(输入 ),告诉它这"是猫"(标签 ),模型的目标就是学会这种从输入到输出的映射关系。

其核心目标是最小化预测误差,用数学语言表达就是最小化损失函数 :

这个公式可以这样拆解理解:

  • • :损失函数,衡量模型 的预测错误程度,越小越好
  • • :对整个数据集 的期望,实际训练中用mini-batch平均来近似
  • • :一个训练样本,x 是输入,y 是真值标签
  • • :模型对输入 x 的预测输出
  • • :单样本的损失计算(如交叉熵、MSE等)

总结一下:监督学习的核心是"拟合一个固定分布的数据集"。数据是静态的、有明确标签的,模型学习的是一个"一步到位"的预测任务,它不会影响数据本身。模型就像一个被动学习者,努力记住标准答案,却无法改变学习环境。

2. 强化学习(Reinforcement Learning, RL)

而强化学习则彻底改变了这种学习范式。它关注的不是"标准答案"本身,而是如何在动态环境中做出最优的序列决策

想象一下教一个机器人走迷宫:你不会给它每一步的"标准答案",而是让它自己去探索。

它在某个位置(状态 )决定走一步(动作 ),然后你告诉它这一步走得好不好(奖励 ),比如撞墙了就扣分,离终点近了就加分。

机器人需要通过不断试错,学会在不同位置做出最佳选择,最终成功走出迷宫。

与监督学习的关键区别在于:智能体既是学习者,也是行动者

它的每个选择都会改变环境状态,从而影响后续的学习数据。

这种"行动-反馈-再行动"的闭环,正是强化学习的精髓所在。

其核心目标是学习一个策略 ,来最大化在整个“生命周期”内获得的累积奖励,用数学语言表达就是最大化目标函数 :

这个公式可以这样拆解理解

1.:目标函数,衡量策略 - 的"优秀程度",越大越好
2.:在策略 - 生成的轨迹上取期望,与SL的关键不同在于数据分布由策略本身决定
3.:折扣累积奖励, 是时刻的即时奖励, 是折扣因子

  • • 接近 0:只关心眼前奖励(短视)
  • • 接近 1:重视长期收益(有远见,如下棋时为了最终胜利牺牲当前利益)

为什么需要折扣因子?

折扣因子的设置背后有着深刻的数学、经济学和现实考量。从数学角度看, 确保无限长轨迹的累积奖励有界收敛,避免奖励值趋向无穷大。具体来说,几何级数 只有在 时才收敛。

从现实角度考虑,未来充满了不确定性。环境可能随机变化,智能体可能意外"死亡",或者任务可能提前终止。就像在现实世界中,今天到手的100元比明天承诺的100元更有价值,因为前者是确定的,后者存在风险。这种"时间偏好"在经济学中被称为贴现率,比如年利率5%意味着今天的100元相当于一年后的105元。

从智能决策的角度,折扣因子还能避免"无限延迟奖励"的悖论。想象一下,如果没有折扣,AI可能为了等待某个"最大奖励"而永远不采取行动,这显然不合理。折扣因子迫使智能体在合理时间内寻求奖励,平衡当前收益与未来可能性。

举个例子:假设智能体在玩迷宫游戏,每走一步都能获得1分,到达终点还能额外获得10分。

如果 ,智能体可能选择在迷宫里无限徘徊,永远不走到终点,因为每多走一步都能多得1分,累积奖励没有上限。

但如果 ,每多走一步获得的奖励都会被打折(比如第10步的奖励权重只有 ),这样智能体就会倾向于尽快到达终点,避免奖励被过度折扣。

这体现了折扣因子在实际决策中的作用:让智能体权衡“现在行动”与“未来收益”,防止拖延和奖励膨胀。

值的选择直接影响智能体的"远见程度"。当 时,10 步后的奖励权重仍有约 0.904,适合需要长期规划的任务如游戏AI;而 时,10 步后的奖励权重降至约 0.348,更适合关注中短期收益的场景如推荐系统。

实际应用中,机器人控制通常使用 ,股票交易可能选择 来平衡短期波动和长期趋势。

总结一下:如果说监督学习像是在做"填空题"——给定固定的问题,寻找标准答案;那么强化学习就像是在下棋——不仅要考虑当前这一步,还要权衡长远利益,在充满不确定性的环境中寻找最优策略。

3. 核心差异总结

二、RL的核心要素

让我们从一个简单的例子开始理解RL的核心框架。想象一下你在训练一个AI玩迷宫游戏:AI需要从起点找到出口,每次可以向上下左右四个方向移动一格,碰到墙壁会停留原地,找到出口就获胜。

在这个例子中,AI就是智能体(Agent),迷宫就是环境(Environment)

智能体与环境的每一次交互都构成了一个时间步:AI观察当前的迷宫位置,选择一个移动方向,环境告诉AI这个移动的结果(新位置和是否获得奖励)。

这个过程可以用马尔可夫决策过程(Markov Decision Process, MDP) 来精确描述,它包含了五个核心要素。

状态空间 定义了智能体可能所处的所有情况。在迷宫游戏中, 就是迷宫中的所有格子位置;对于深度学习背景的读者,这相当于DL中的输入空间

在围棋AI中, 是所有可能的棋局状态(约有 个);在机器人控制中, 是传感器的读数(位置、速度、角度等);在大模型文本生成中,是当前可用于指导决策的所有信息,通常包括指令(prompt)+ 已生成的token序列 + 相关上下文

动作空间 定义了智能体可以执行的所有操作。迷宫游戏中的 是 {上、下、左、右} 四个离散动作;这对应着DL中的输出空间

动作空间分为两种类型:离散动作空间(如游戏操作、文本生成的下一个token选择)和连续动作空间(如机器人的关节角度、自动驾驶的方向盘转角)。

状态转移概率
描述了环境的动态规律:如果在状态 执行动作 ,转移到新状态 的概率。

在迷宫游戏中,如果AI在位置A选择向右移动,可能到达位置B(如果没有墙)或停留在A(如果有墙)。

这个概率函数类似于DL中的条件概率模型,但关键区别在于它通常是未知的——我们不知道环境的确切运行规律。

更重要的是,MDP假设了马尔可夫性:下一状态只依赖于当前状态和动作,与历史路径无关。

奖励函数 定义了行动的即时反馈。在迷宫游戏中,到达出口可能获得+100分,撞墙可能-1分,普通移动0分。这类似于DL中损失函数的相反数,但我们要最大化奖励而不是最小化损失。

奖励函数的设计充满挑战:它往往是稀疏的(大多数步骤奖励为0,只有关键时刻才有反馈)和延迟的(好动作的效果可能在很远的未来才体现)。

如何设计合理的奖励函数来引导智能体学习期望的行为,是RL中的核心难题。

折扣因子 平衡了当前奖励与未来奖励的重要性,我们前面已经详细讨论过。

第六个核心要素:轨迹
在理解了上述五个MDP要素后,我们还需要介绍轨迹(Trajectory)的概念。

轨迹是指智能体从开始到结束的完整交互序列:

其中:

  • • :时刻 的状态
  • • :在状态 下执行的动作
  • • :执行动作 后获得的奖励
  • • :轨迹的结束时刻

轨迹的直观理解

  • • 在迷宫游戏中,一条轨迹就是AI从起点到终点的完整移动路径记录
  • • 在下棋游戏中,一条轨迹就是整盘棋的落子序列
  • • 在对话系统中,一条轨迹就是一次完整对话的交互过程

轨迹与MDP要素的关系

  • • 轨迹由MDP的五要素自然生成:智能体根据策略 选择动作,环境根据状态转移概率 更新状态,根据奖励函数 给出奖励
  • • 轨迹的概率:
  • • 轨迹的总奖励:

理解了这六个要素后,智能体的核心任务就很清楚了:学习一个策略,将状态映射到动作。在DL的视角下,策略就是一个神经网络:输入状态 s,输出动作的概率分布。

对于离散动作(如迷宫游戏),网络使用softmax输出四个方向的概率;对于连续动作(如机器人控制),网络输出高斯分布的均值和方差,从中采样具体动作。

这里体现了RL与DL的根本区别:DL中模型是被动的,输入数据分布固定;RL中智能体是主动的,它的动作会改变环境状态,从而影响未来的数据分布。

这就形成了一个"动作-状态-奖励"的闭环,智能体必须在这个闭环中学习最优的决策策略。同时,RL还面临着DL中不存在的探索与利用困境:是尝试未知但可能更好的动作,还是选择已知能获得奖励的动作?

马尔可夫性假设是整个框架的基石,它大大简化了问题复杂度。就像DL中的特征工程一样,如何构造包含充分信息的状态表示是RL中的关键挑战。

对于序列决策问题,我们可能需要使用RNN或LSTM来将历史信息压缩到当前状态表示中,以满足马尔可夫性要求。

一直在更新,更多的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇

在这里插入图片描述
三、RL的三大主流方法

让我们继续用迷宫游戏的例子来理解RL算法的设计思路。想象一下,如何让AI学会走迷宫?有三种不同的思路:

  • • 第一种是先评估"在每个位置,往哪个方向最好",然后选择最好的方向;
  • • 第二种是直接学习"在什么位置应该怎么选择";
  • • 第三种是结合前两种,既评估方向的好坏,又直接学习选择策略。

这三种思路对应着RL的三大主流方法。

基于值函数的方法

基于值函数的方法核心思想是学习一个"评分函数",告诉我们在每个状态下每个动作有多好。在迷宫游戏中,这相当于学习一个"迷宫地图的评分表":在格子上选择向左走能得到多少分,向右走能得到多少分,等等。

这个评分函数在RL中被称为Q函数,表示在状态 下执行动作 后,按照某个策略继续行动能获得的期望累积奖励。

Q-Learning是最经典的值函数方法,它通过一个简单的迭代规则来逼近最优的Q函数:

这个公式的美妙之处在于其层次化的结构,让我们从内到外逐层解析:

最内层: - 对未来的最优估计

这是对未来状态 的价值评估。在当前位置执行动作 后,我们到达了新状态 。从这个状态开始,我们会选择最优的动作来获得最大价值。

在迷宫游戏中,这意味着:“到了下一个格子后,从那里开始我们能获得的最大价值是多少”。

第二层: - 即时奖励 + 未来价值
这部分结合了当前的即时奖励和未来的折算价值。 是执行动作 后立即获得的奖励(比如在迷宫中撞墙了-1分,接近出口了+1分)。 是未来价值的折算,因为未来的奖励不如现在的有价值(前面讨论的折扣因子)。

整个表达式代表了对"在状态 执行动作 的总价值"的新估计。

第三层

  • 预测误差
    这是核心的时间差分(TD)误差。它比较了"我们对 价值的新估计"和"我们之前的估计 "之间的差距。

如果这个误差为正,说明我们之前低估了这个动作的价值;如果为负,说明我们高估了。这就像在迷宫中,你原以为向左走价值是5分,但实际探索后发现它其实值8分,那么误差就是3分。

最外层:误差 - 价值更新
最后,我们用学习率 来控制更新的幅度。 通常是一个较小的数(如0.1),表示我们不会完全相信单次经验,而是逐步调整价值估计。这就像在迷宫中,即使你某次向左走获得了很好的结果,你也不会完全改变对"向左走"的判断,而是稍微调整一下。

完整的理解链条

1.探索未知:在状态 选择动作
2.获得反馈:环境给出即时奖励 和新状态
3.展望未来:从新状态出发,选择最优动作的价值
4.形成新判断:结合即时和未来,得到新的总价值估计
5.对比学习:计算新判断与旧判断的差距(TD误差)
6.渐进更新:用学习率控制,逐步调整Q值

这个公式的天才之处在于它实现了自举(Bootstrapping):不需要等待游戏结束就能更新价值估计,每一步都能学习,这大大提高了学习效率。同时它保持了最优性原理:最优策略的子策略也是最优的,从任何状态开始的决策都应该是最优的。

为了更直观地理解Q值表格,让我们来看一个具体的迷宫例子。假设有一个3×3的简单迷宫:

S  .  ..  #  ..  .  E

其中 S 是起点,E 是终点,# 是墙壁,. 是可通行的格子。动作空间是 {上、下、左、右}。

在这个迷宫环境中,我们假定如果智能体撞到墙壁,并不会导致游戏结束或“死亡”。相反,智能体会停留在原地,状态保持不变。同时,系统会给予智能体一个负奖励(例如-1分)作为惩罚,以此引导其学习避免撞墙。之后,智能体继续进行下一步的决策。

初始Q值表格可能如下(假设初始值为0):

学习过程中的Q值更新

假设智能体在起点(0,0),随机选择向右移动到(0,1),获得奖励0。根据Q-Learning公式:

向右向右向右

由于所有Q值初始为0,所以更新后 向右。

经过几次(不充分)探索后,智能体发现到达终点(2,2)能获得+100奖励,Q值表格变成:

Q值的意义

  • • 在起点(0,0),向下走的价值最高(80),因为这条路径离终点最近
  • • 终点(2,2)的Q值为0,因为游戏结束,没有未来奖励
  • • 墙壁位置(1,1)不在表格中,因为无法到达

决策过程

当智能体在起点(0,0)时,它查看Q值表格:

  • • 向上:64(撞墙,会留在(0,0)并扣分)
  • • 向下:80 ✅ 选择这个(可以移动到(1,0))
  • • 向左:64(撞墙,会留在(0,0)并扣分)
  • • 向右:64(可以移动到(0,1))

实际上,经过充分学习后,撞墙动作的Q值应该很低,因为它们会导致负奖励且无法前进。比如正确的收敛Q值可能是:

这样设计的好处在于,它更贴近现实生活中“撞墙会受惩罚”的情境,使得智能体能够在不断试错中明确学会规避错误行为,同时不会因为一次失误就导致游戏提前结束,从而有机会从错误中持续学习和改进。

Q值表格的最大优势在于其显式性和可解释性:每一个状态-动作对的价值都被明确记录,决策时只需查表并比较即可,便于分析和理解智能体的行为选择。

然而,这种方法也存在明显的局限。

首先,Q值表格的内存消耗随状态和动作空间的增大而迅速膨胀,对于大规模环境几乎不可行;

其次,它缺乏泛化能力,无法对未见过的状态做出合理推断;

最后,随着状态空间维度的增加,Q值表格面临“维数灾难”,完全无法扩展到复杂任务。

这正好解释了为什么需要用深度神经网络来近似Q函数,解决Q值表格的扩展性问题。

但直接将神经网络用于Q-Learning会遇到两个严重问题。

样本相关性问题:RL中交互数据是按时间顺序产生的,连续的游戏画面非常相似,这就像用未打乱的数据集训练神经网络,会导致过拟合和训练不稳定。

目标不稳定问题:更新Q网络时,目标值本身依赖于网络的参数,就像在追逐一个移动的目标,训练很难收敛。

DQN提出了两个精妙的解决方案。经验回放:将游戏交互数据存储在缓冲池中,训练时随机采样,打破时序相关性,这就像DL中打乱数据集一样。

目标网络:维护一个旧版本的Q网络专门用于计算目标值,定期更新,这就像DL中冻结预训练模型的部分参数进行微调,确保训练稳定性。

基于策略的方法

基于策略的方法跳过了"评估价值"这一步,直接学习"在什么状态下应该怎么选"。

在迷宫游戏中,这相当于直接训练一个网络,输入当前位置,输出四个方向的选择概率。

策略网络的优化目标是最大化期望累积奖励,但直接计算这个梯度很困难。策略梯度定理给出了一个优雅的解决方案。

让我们从简单到复杂,一步步理解这个重要的公式。

第一步:我们想要什么?

我们的目标很简单:如果某个动作能获得高奖励,就增加选择它的概率

用数学语言表达,我们想要计算:

和DL里的优化算法类似,这个公式的意思是:如何调整参数 才能最大化期望累积奖励?

第二步:从期望到具体计算形式

目标函数 是在策略 生成的轨迹上取期望。一个轨迹 的概率是:

因此目标函数可以写成:

其中 是轨迹 的总奖励。

第三步:对目标函数求导

核心困难: 依赖于 ,因为动作选择概率 依赖于参数。

这个问题体现了强化学习与监督学习的本质区别。在监督学习中,数据分布是固定的,我们可以直接对损失函数求导;但在强化学习中,轨迹概率

完全由策略参数 决定,意味着调整参数会全局性地改变整个轨迹的概率分布。更重要的是,被期望的量(概率分布本身)依赖于求导的变量,这违反了常规期望运算的条件独立性假设,我们不能简单地交换期望和梯度的顺序。

这个困难反映了RL"在交互中学习"的本质:智能体的每个决策都会影响后续的学习数据,形成复杂的反馈循环。

第四步:应用概率梯度的对数恒等式

这是最关键的一步,因为它巧妙地化解了第三步中的核心困难。对任何概率分布 ,我们有:

为什么这一步如此关键?

1.这个恒等式将"对概率求导"转化为"对对数概率求导"。对数函数的导数计算更简单,更重要的是,它将复杂的概率梯度问题转化为可以直接处理的形式。

2.通过这个变换,我们将 表达为 。

这样,原问题中的参数依赖性被巧妙地分离了出来—— 作为权重,而梯度计算只针对对数项。

3.将这个变换代入原梯度公式后,求和问题转化为了期望问题,而期望可以通过采样来估计,彻底解决了轨迹空间指数爆炸的计算困难。

4.这个变换使得我们不再需要枚举所有可能的轨迹,而是可以通过从策略 中采样实际轨迹来估计梯度。这正是强化学习"在交互中学习"的数学基础。

直观理解:这个恒等式将一个看似无法解决的数学难题,转化为一个可以通过实际采样经验来学习的可计算问题。

第五步:应用对数概率技巧

现在我们将第四步的对数概率技巧应用到第三步的梯度表达式中:

这一步的核心作用是将对概率的求导转化为对对数概率的求导,同时将求和形式转化为期望形式:

但这还不够,我们需要进一步分解 才能得到可计算的梯度表达式。

第六步:分解轨迹概率的对数

轨迹概率的对数可以分解为:

对参数求导时,只有策略项依赖于 :

第七步:得到轨迹形式的最终结果

现在将前面的所有步骤整合起来:

首先,应用对数概率技巧将轨迹概率梯度转化为期望形式:

然后,将步骤6中分解的轨迹对数概率代入:

这就是REINFORCE算法的理论基础!

第八步:从轨迹奖励到动作价值(让奖励更精准)

在第七步得到的REINFORCE算法中,我们需要用整个轨迹的总奖励 来更新轨迹中每一个动作的决策。这就像给一个团队的所有成员打同样的评分,无论每个人表现如何,这显然有问题。

让我们用一个具体的数值例子来说明这个问题

假设在迷宫游戏中,智能体走了3步到达终点,获得+10分奖励, = 0.9。

  • • 轨迹:
  • • 整条轨迹的累积奖励:

按照REINFORCE算法,我们会用24.7来更新所有三个动作:

这公平吗? 显然不公平:

  • • 是起点(离终点最远),它的贡献应该最小
  • • $a_24 是最后一步(直接到达终点),它的贡献应该最大
  • • 但现在三者都被赋予了同样的权重24.7

问题的本质是什么?

REINFORCE算法的问题在于它混淆了两个概念:

  • “从某个时刻开始的未来奖励”(我们真正想要的)
  • “整条轨迹的总奖励”(REINFORCE实际使用的)

一个自然的改进思路:既然我们关心的是"在状态 下选择动作 能带来多少未来奖励",为什么不直接计算这个值呢?

这就引出了动作价值函数(Action-Value Function) 的概念。

什么是动作价值函数?

的定义非常自然:在状态 s 下执行动作 a 后,按照策略 继续行动能获得的期望累积奖励

回到我们的例子

  • • = 从起点开始的期望累积奖励 ≈ 24.7
  • • = 从中间位置开始的期望累积奖励 ≈ 19
  • • = 从终点前一步开始的期望累积奖励 ≈ 10

注意这里的递归关系:

为什么 比 更合理?

回答的是:“在某个特定状态下选择某个特定动作,长期来看能得到多少奖励?”

这个概念与我们的直觉完全一致:

  • • 它只关注从当前决策点开始的未来奖励
  • • 它是一个期望值,考虑了所有可能的情
  • • 它能够公平地评估每个决策点的贡献

数学上的联系
轨迹总奖励 可以看作是从每个状态-动作对开始的未来奖励之和,因此:

其中 是从时刻 到轨迹结束的部分轨迹。

替换后的梯度公式:
用 替代 后,策略梯度变成了:

直观理解:

如果在状态 s 下选择动作 a 的长期价值为正(),就增加这个动作的概率
如果长期价值为负 (),就减少这个动作的概率
每个动作都根据自己的实际贡献得到更新,而不是被整条轨迹的表现"绑架"

这样做的好处:

  • 更精准的归因:每个动作的更新基于其自身的长期价值,而不是整条轨迹的价值
  • 更低的方差:避免了"好动作被坏轨迹连累"的问题(就像好学生因为小组其他成员表现差而得低分)
  • 更高效的学习:智能体能够准确识别哪些决策是真正有价值的,学习速度更快
    第九步:最终公式及其意义

经过上述完整的推导,我们得到了策略梯度定理的最终形式:

这个公式的直观解释:

  • • :告诉我们如何调整参数来增加在状态 下选择动作 的概率
  • • :告诉我们这个动作的长期价值有多高

期望符号:对所有可能出现的状态-动作对进行平均

核心思想:如果某个动作的长期价值为正(),我们就朝着增加其选择概率的方向调整参数;如果价值为负,就减少其选择概率。

这就像在迷宫学习中:如果某个方向最终让你走到了出口(高价值),下次遇到相同情况时就更倾向于选择这个方向;如果某个方向让你撞墙(低价值),就避免选择它。

推导过程的关键洞察总结:

  • 从期望到梯度:将最大化期望的问题转化为计算梯度的问题
  • 对数概率技巧:用 来处理概率分布的参数依赖
  • 轨迹分解:将复杂的轨迹概率分解为简单的策略概率乘积
  • 期望转采样:将求和期望转化为从策略中采样的经验平均
  • 简化计算:用动作价值 替代整个轨迹奖励

这样,我们就从理论目标得到了可以实际计算的梯度公式!

REINFORCE是最经典的策略梯度算法,它用完整轨迹的累积奖励来估计动作价值。虽然方法简单直接,但策略梯度存在高方差问题:单次轨迹的奖励可能充满随机性,使得梯度估计很不稳定。

比如在一个迷宫中你可能因为偶然找到了一条近路而获得高奖励,但这并不意味着你过去选择的每一步都是最优的。

尽管如此,基于策略的方法有其独特优势。它天然适合连续动作空间,比如机器人控制中需要精确控制关节角度,策略网络可以直接输出动作的均值和方差。

它还能学习随机策略,在某些需要随机性的任务中很重要,比如石头剪刀布游戏必须随机出招。

Actor-Critic方法

Actor-Critic方法取两者之长,用值函数评估动作好坏来指导策略学习,从而降低策略梯度的方差。在这个框架中,有两个网络:Actor网络负责选择动作,Critic网络负责评估动作的价值。

但在介绍接下来的内容之前,我们需要先理解另一个重要概念:状态价值函数(State Value Function)

什么是状态价值函数?

表示在状态 下,按照策略 继续行动能获得的期望累积奖励

与 的关键区别

:回答的是"如果我现在处于状态 s,长期来看能获得多少奖励?"(不指定具体动作)

:回答的是"如果我现在处于状态 s 并选择动作 a,长期来看能获得多少奖励?"(指定了具体动作)

让我们用一个迷宫例子来说明

假设智能体在一个3×3迷宫的某个位置(1,1),有四个可能的动作:

那么这个状态的期望价值就是所有动作价值的加权平均:

向上向下向左向右

如果策略 在每个方向上的选择概率都是0.25(均匀分布),那么:

数学关系
与 之间存在以下关系:

也就是说,状态价值是所有动作价值按照策略概率的加权平均。

为什么要引入 ?
  • 降低方差: 作为基准值(baseline),可以减少梯度估计的方差
  • 相对评估:在某些情况下,我们更关心"这个动作比平均水平好多少",而不是它的绝对价值
  • 计算效率:在某些算法中,学习 比学习所有 更高效
优势函数(Advantage Function)

有了 的概念,我们就可以理解为什么要用优势函数了:

优势函数的直观含义

  • • :动作 a 在状态 s 下比平均水平要好
  • • :动作 a 在状态 s 下比平均水平要差
  • • :动作 a 在状态 s 下表现平平
继续我们的迷宫例子:
  • • (平均期望价值)
  • • 向右 = 20
  • • 因此:向右(比平均好7.5)
  • • 向下
  • • 因此:向下(比平均差7.5)
为什么优势函数更有效?

优势函数告诉我们"这个动作比平均水平好多少"。这在实际决策中非常有用:

1.在不同场景下做出合理选择

  • • 在一个"所有选择都很差"的状态下(比如迷宫的死胡同),一个"相对不那么差"的动作仍然值得选择
  • • 在一个"所有选择都很好"的状态下(比如即将到达终点),即使是一个不错的动作,如果比平均水平差,也应该避免

2.更稳定的训练

  • • 使用优势函数可以减少梯度估计的方差
  • • 因为它减去了基准值 V^\pi(s),专注于评估"额外收益"
A2C算法

A2C(Advantage Actor-Critic)是现代深度强化学习中最重要的算法之一。它的核心思想是用优势函数(Advantage Function)来指导策略更新,从而降低方差并提高学习效率。

优势函数的核心价值

在传统的Actor-Critic方法中,我们直接用动作价值 来指导策略更新,但这存在一个问题:高方差

想象一下在迷宫游戏中,即使你选择了"向右"这个好动作,但由于环境的随机性(比如随机生成的奖励),你获得的实际奖励可能时高时低。这种波动会使得训练变得不稳定。

优势函数通过减去基准值(baseline),也就是前文介绍的状态价值函数来解决这个问题:

直观理解:
  • • :动作 比平均水平更好
  • • :动作 比平均水平更差
  • • :动作 表现平平

这就像评分系统中,我们不仅关心"这个学生考了多少分",更关心"他比班级平均分高多少"。

A2C的具体实现

A2C算法包含两个关键组件:

1.Actor网络(策略网络)

  • • 输入:状态 (如迷宫中的位置)
  • • 输出:动作概率分布
  • • 更新目标:最大化优势加权的策略梯度

2.Critic网络(价值网络)

  • • 输入:状态 s
  • • 输出:状态价值估计 V_\phi(s)
  • • 更新目标:最小化价值估计误差
训练流程:

1.数据收集:用当前策略 在环境中收集轨迹数据
2.价值更新:用时间差分(TD)误差更新Critic网络:

误差

3.策略更新:用优势函数更新Actor网络:

其中

A2C的数学优势

使用优势函数的好处是显著降低方差。让我们用一个具体例子来说明:

假设在迷宫的某个位置,四个动作的Q值都为10,但这是因为在那个位置环境本身就很友好(比如离终点很近)。如果我们直接用Q值指导策略,可能会过度鼓励所有动作。但如果使用优势函数:

  • • 如果 (这个位置的平均价值)
  • • 那么
  • • 这意味着虽然这些动作看起来不错,但只是"占了位置的光"

相反,如果某个动作确实比其他动作更好:

  • • 向右,其他动作Q值为10
  • • (加权平均)
  • • 向右(确实更好)
  • • 其他(相对较差)

A3C算法

A3C(Asynchronous Advantage Actor-Critic)[1]
是DeepMind在2016年提出的突破性算法,它解决了传统深度强化学习的两个核心问题:数据相关性和训练效率

异步并行机制

A3C的核心创新是多个工作智能体(Worker)并行探索

  • 全局网络:维护一份共享的参数(全局Actor和Critic)
  • 工作智能体:每个智能体拥有独立的网络副本,在不同的环境实例中探索
  • 异步更新:每个工作智能体定期将梯度更新到全局网络,无需等待其他智能体

直观类比:想象训练一个团队走迷宫。传统方法就像让一个人反复练习,而A3C就像让多个人同时在不同迷宫中练习,然后定期分享经验。这样不仅效率更高,还能避免"只在一个迷宫中形成的偏见"。

A3C的完整算法流程

1.初始化:创建全局网络参数 ,启动 N 个工作线程

2每个工作线程执行

  • • 同步参数:从全局网络复制最新参数到本地副本
  • • 环境交互:用本地策略在环境中探索 步或到达终端状态
  • • 计算优势:使用本地Critic计算优势函数
  • • 梯度计算:计算Actor和Critic的梯度
  • • 异步更新:将梯度应用到全局网络

3.重复:所有工作线程持续这个过程

A3C的关键优势

A3C算法通过异步并行机制带来了三个核心优势。

它有效打破了数据相关性这一传统RL的难题。在传统的强化学习中,连续的状态-动作对往往高度相关.

比如相邻的游戏画面非常相似,这会导致训练过程不稳定,模型容易过拟合到连续的模式中。

A3C通过让多个工作智能体在不同的环境实例中独立探索,天然产生了更加多样化且相对独立的数据分布,就像让多个人同时在不同的迷宫中练习,避免了"只在一个迷宫中形成的偏见"。

并行训练显著提高了训练效率和硬件利用率。传统方法中,每次只能从一个环境中顺序收集数据,而A3C可以同时从多个环境中并行收集经验,大大加速了数据获取过程。

这种并行架构充分利用了现代计算硬件的多核特性,使得训练时间大幅缩短,特别适合大规模分布式训练环境。

A3C的并行探索机制带来了更好的探索多样性和鲁棒性。不同的工作智能体会在各自的探索过程中尝试不同的策略,访问不同的状态空间,这种多样性类似于机器学习中的集成学习思想。

即使某些智能体不幸陷入局部最优策略,其他智能体可能通过不同的路径发现更优的解决方案,从而提高了整个系统找到全局最优策略的概率。

A3C vs A2C:关键区别

现代实践中,A2C往往更受欢迎,因为:

  • • 在GPU上更容易实现和优化
  • • 同步更新保证了训练的稳定性
  • • 通过多环境并行,仍然可以获得类似的数据多样性

一直在更新,更多的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇

在这里插入图片描述

实际应用中的改进

A2C的常见改进版本:

A2C算法虽然在理论上已经很完善,但在实际应用中仍有改进空间。研究者和工程师们提出了多种改进版本,主要解决优势估计的偏差-方差权衡、策略收敛稳定性等问题。

1. GAE(广义优势估计)—— 更智能的优势计算

传统A2C使用简单的TD误差作为优势估计:

这种方法虽然无偏,但方差很大,因为单步的TD误差容易受到随机奖励的干扰。

GAE通过结合多步TD误差来解决这个问题。它的核心思想是:在偏差和方差之间找到最佳平衡点。GAE的计算公式是:

其中

是单步TD误差, 是关键的衰减参数。

为什么GAE更有效?

当 时,GAE退化为单步TD误差(高偏差、低方差);当 时,GAE变成了累积奖励(无偏、高方差)。通过选择合适的 值(通常为0.95),GAE能够在保持相对无偏的同时显著降低估计方差。

直观理解:想象你在评估一个投资策略的价值。单看一天的收益波动很大(高方差),但看一个星期的平均收益会更稳定。GAE就像是这样:它不只看单步的TD误差,而是考虑了一个"时间窗口"内的多步误差,并给近期的误差更高的权重。

2. 熵正则化—— 保持探索的"好奇心"

在训练过程中,策略网络容易过早收敛到确定性策略,即在某些状态下总是选择同一个动作。这就像一个人总是走同一条路去上班,可能错过了更好的路线。

熵正则化通过在目标函数中添加策略熵来解决这一问题:

其中

是策略的熵, 是控制探索强度的超参数。

为什么熵有助于探索?

策略的熵衡量了动作选择的"随机性"或"不确定性":

  • • 高熵:策略倾向于均匀分布,鼓励探索各种可能的动作
  • • 低熵:策略高度集中,倾向于选择某个特定动作

通过奖励策略保持较高的熵,我们鼓励智能体保持"好奇心",不会过早陷入局部最优。这就像在迷宫探索中,即使找到了一条还不错的路径,也要偶尔尝试其他方向,看看有没有更好的路线。

实际应用中的参数调节:
  • GAE的参数:通常设置为0.9-0.99,值越接近1,考虑的时间步数越多,估计越平滑
  • 熵系数:通常设置为0.01-0.1,值越大鼓励探索的力度越强,但过大会影响收敛
  • 动态调节:一些高级实现会随着训练进行逐渐降低,前期鼓励探索,后期偏向利用

这些改进使得A2C在实际任务中表现更加稳定,成为现代深度强化学习的基石算法之一。GAE和熵正则化的思想也被广泛采用到其他算法中,成为RL工具箱的标准组件。

A3C的实际部署考虑:
  • 通信开销:频繁的参数同步可能成为瓶颈
  • 硬件配置:需要支持多进程/多线程的环境
  • 超参数调优:工作线程数量、更新频率等需要仔细调整
从A2C/A3C到现代RL算法

A2C/A3C为现代深度强化学习奠定了重要基础,它们的创新思想延续到了许多后续算法中:

PPO(Proximal Policy Optimization):可以看作A2C的改进版,通过限制策略更新幅度来保证训练稳定性,目前是大模型RLHF的主流算法之一。

SAC(Soft Actor-Critic):结合了最大熵强化学习的思想,在连续控制任务中表现优异。

IMPALA:继承了A3C的分布式思想,但采用了更高效的架构,适合大规模分布式训练。

A2C/A3C的核心遗产:
  • 优势函数的概念现在已成为Actor-Critic算法的标准组件
  • 并行训练的思想启发了所有现代分布式RL算法
  • 异步/同步的权衡仍在影响算法设计决策

这些算法展示了深度强化学习如何从单一智能体的简单交互,发展到多智能体协同学习复杂策略的演进过程,为后来大模型的强化学习训练提供了重要的技术基础。

从值函数到策略梯度再到Actor-Critic,RL算法的发展体现了一个清晰的脉络:从简单的价值评估,到直接策略学习,再到两者的结合。每一种方法都有其适用场景,理解它们的差异和联系,是掌握RL的关键。

四、大模型RL

传统RL主要解决小规模状态/动作空间的决策问题(如游戏、机器人控制),而大模型(如LLM)的RL需处理高维离散序列生成问题:状态 s 是文本上下文(如“今天天气…”),动作 a 是下一个token(如“很好”),目标是让模型生成的序列符合人类偏好(如有帮助、无害、诚实)。

1. 大模型RL的特殊性

  • 状态/动作空间巨大:LLM的词表 可达数万(如DeepSeek-V3的129280个、Qwen3的151669、GLM-4.6的151552个),状态 s 是长文本(上下文长度可达模型支持的最大上下文,如DeepSeek-V3的64k、Qwen3的128k、GLM-4.6的200k),传统值函数方法(如DQN)无法处理;
  • 奖励函数定义难:文本生成的“好坏”无客观标准(如“这篇文章写得好”需结合流畅性、准确性、安全性等多维度),无法像游戏一样简单定义 +1/-1;
  • 训练不稳定:大模型参数量极大(百亿-千亿级),RL本身的高方差(如策略梯度)会被放大,容易导致模型“崩溃”(生成无意义文本)。

2. RLHF 基于人类反馈的强化学习

RLHF(Reinforcement Learning from Human Feedback)是大模型RL的主流范式,核心是用人类偏好训练奖励模型(RM),再以RM为奖励函数优化LLM,解决“奖励定义难”问题

RLHF的三个步骤(以InstructGPT为例):

Step 1:监督微调(SFT)—— 初始化策略

  • • 目标:让LLM学会“遵循指令”(而非单纯续写);
  • • 数据:人工标注“指令-期望输出”对(如“请你解释量子力学”→“量子力学是…”);
  • • 方法:用SL训练LLM,得到初始策略 (类似DL中的“预训练+微调”)。

Step 2:训练奖励模型(RM)—— 学习人类偏好

  • • 目标:让模型学会“判断生成文本的好坏”(替代人类实时打分);
  • • 数据:收集人类偏好数据:让LLM对同一指令生成多个回复(如 ),人类标注“哪个更好”(如 );
  • • 方法:训练一个偏好模型(通常是LLM+线性层),输入“指令+回复”,输出奖励 r(y),优化目标是让偏好模型的排序与人类一致:

其中 是sigmoid函数, 时,希望 (类似DL中的“排序学习”)。

Step 3:RL优化—— 对齐人类偏好

  • • 目标:以RM为奖励函数,优化SFT模型 ,使其生成高奖励(高人类偏好)的文本;
  • • 策略:用PPO(Proximal Policy Optimization,近端策略优化)算法——Actor-Critic的改进版,核心是限制策略更新幅度,防止大模型训练不稳定。
PPO的核心机制(DL视角)

要理解PPO的精妙设计,我们需要从传统策略梯度算法的问题开始,一步步推导出最终的解决方案。

第一步:传统策略梯度的问题回顾

在第三部分我们学过,标准的策略梯度公式是:

这个公式在理论上是完美的,但在实际应用中有一个致命缺陷:没有限制策略更新的幅度

想象一下:如果某个动作偶然获得了很高的优势值,梯度会变得很大,导致策略参数发生剧烈变化。这种"激进学习"可能导致:

训练不稳定:策略在两个极端之间来回跳跃
灾难性遗忘:突然忘记之前学到的有用知识
收敛困难:很难稳定在最优策略附近

第二步:直观的解决方案——限制更新幅度

一个自然的想法是:我们能不能给策略更新的幅度设置一个上限?

这就像给学习过程加上一个"刹车系统":

  • • 如果某次经验告诉我们要大幅调整策略,我们就适当减速
  • • 如果经验告诉我们要小幅调整,我们就正常进行
第三步:如何量化"策略变化的幅度"?

这里的关键洞察是:我们可以用新旧策略的概率比来衡量策略变化的幅度

对于某个状态-动作对 ():

重要性采样比

这个比值告诉我们:

  • • 比值 > 1:新策略更倾向于选择这个动作
  • • 比值 < 1:新策略更不倾向于选择这个动作
  • • 比值 = 1:策略没有变化
第四步:构造受限的梯度估计

现在我们可以构造一个"受限"的策略梯度:

受限梯度重要性采样比优势

但这里有个问题:如何限制这个值?

第五步:引入截断函数

PPO的精妙之处在于使用了一个截断函数:

截断后的概率比

其中 是一个小的正数(通常取0.1或0.2)。

这个函数的作用是:

  • • 如果概率比在 [ 1 − ϵ , 1 ϵ ] [1-\epsilon, 1 \epsilon] [1ϵ,1ϵ] 范围内,保持不变
  • • 如果概率比超过 ,限制为
  • • 如果概率比低于 ,限制为
第六步:两种更新方式的对比

现在我们有两种梯度估计方式:

方式1(未截断)

  • • 这是"理想"的更新幅度
  • • 可能过于激进

方式2(截断后)

  • • 这是"安全"的更新幅度
  • • 保证不会更新得太剧烈
第七步:PPO的保守选择——取最小值

现在的问题是:我们应该选择哪种方式?

PPO选择了最保守的策略:总是选择两者中较小的绝对值

为什么?因为:

  • • 当优势为正时(好动作),我们希望增加其概率,但不要增加得太快
  • • 当优势为负时(坏动作),我们希望减少其概率,但不要减少得太快

这就得到了PPO的核心优化目标:

第八步:理解公式的含义

现在我们再来看这个公式,每个部分都有了明确的含义:

  • • :新策略相比旧策略的变化程度
  • • :这个动作的好坏程度(优势)
  • • :限制策略变化幅度的安全机制
  • • :保守地选择更稳定的更新

这个公式完美地解决了传统策略梯度算法的核心问题:在保持学习效率的同时,确保训练的稳定性

作用:若新策略的动作比旧策略好(),但概率比过大(超过 ),则截断梯度,避免策略"突变"(类似DL中的"梯度裁剪",防止参数更新过猛);反之,若动作不好(),也限制概率比下限,防止策略"退化"。

更深入的理解:为什么PPO如此有效?

让我们从更深层次理解PPO的设计哲学。这个算法的精妙之处在于它解决了传统策略梯度算法的根本矛盾:学习效率与训练稳定性的权衡

概率比和min函数的技术作用

重要性采样比

量化了新策略相对于旧策略的变化程度:比值为2.0表示新策略选择该动作的意愿是旧策略的2倍,比值为0.5表示减半,比值为1.0表示无变化。

PPO的 min 函数通过比较两种更新量来确保训练稳定性:未截断项代表基于当前经验的理想更新幅度,截断项代表考虑安全限制的最大允许更新幅度。

选择两者的较小值可以有效避免单次经验导致的策略参数剧变,防止模型因为个别异常样本而破坏已学到的知识。

为什么需要这种稳定化机制?

考虑训练过程中的两种极端情况:

  • 过度更新:如果某个动作偶然获得很高的优势值,会导致策略参数大幅调整,可能破坏之前学到的有用知识
  • 稳定更新(PPO):根据优势值适度调整策略参数,保持模型性能的连续性和可预测性

这种机制确保了训练过程的稳定性,避免了因为个别异常样本导致的模型性能剧烈波动。

与大模型训练的关系

在大模型RLHF中,PPO的这种保守显得尤为重要:

1.防止灾难性遗忘:避免模型因为少数奖励高的样本就忘记了之前学到的有用知识

2.保持语言连贯性:限制策略变化幅度有助于保持生成文本的流畅性和一致性

3.训练稳定性:大模型参数空间巨大,没有保守机制很容易导致训练崩溃

与深度学习的类比

PPO的截断机制可以类比为深度学习中的多个技术:

  • 梯度裁剪:防止梯度爆炸
  • 学习率调度:控制更新速度
  • 正则化:防止过拟合
  • Batch Normalization:稳定训练过程

PPO将这些都融合在一个简洁的数学公式中。

额外技巧:KL散度惩罚

在PPO的实际应用中,除了截断机制外,还需要一个更精细的控制来防止模型过度优化。这就是KL散度惩罚的作用。

什么是KL散度?

KL散度(Kullback-Leibler Divergence)是衡量两个概率分布差异的指标。对于两个离散分布 和 ,KL散度定义为:

KL散度的数学原理

从数学角度看,KL散度可以分解为:

其中 是分布 的熵, 是交叉熵。

为什么交叉熵减去熵能衡量分布差异?

这个分解的含义需要从信息论的角度理解:

熵 的含义

熵衡量的是分布 本身的不确定性或信息量。 回答的问题是:“按照分布 生成样本,平均需要多少信息量?”

交叉熵 的含义

交叉熵衡量的是当我们用分布来编码实际来自分布 的数据时,需要的平均信息量。 回答的问题是:“如果数据真实分布是,但我们错误地认为它服从分布,编码时平均需要多少信息量?”

两者的差异就是KL散度:

这个差异的含义是:用错误的分布 Q 来编码真实的分布 P 数据时,额外需要的信息量

  • • 当 时,我们使用了正确的分布来编码,所以没有额外的信息损失,
  • • 当 时,我们使用了错误的分布来编码,必然产生效率损失,

数学证明

对于任意两个分布,根据Jensen不等式:

因此:

直观理解

  • • 是理论上的最优编码长度(用真实分布编码)
  • • 是实际使用的编码长度(用近似分布编码)
  • • 是编码效率的损失

因此,KL散度通过量化信息编码效率的差异,有效地衡量了两个概率分布的偏离程度。分布差异越大,用错误分布编码的效率损失就越大,KL散度值也就越大。

在RLHF中的应用

在大模型RLHF中,KL散度惩罚的具体形式是:

这里 衡量的是:如果用原始SFT策略的分布来解释新策略的行为,平均会产生多少差异?

为什么需要KL散度惩罚?

考虑一个具体的问题:模型为了追求奖励模型的最高分,可能会发现生成"我很棒,我很棒,我很棒…"这样的重复文本能获得很高的奖励分数,但这显然违背了语言模型的基本要求。

KL散度惩罚通过以下方式解决这个问题:

  • 防止语言退化:保持与原始SFT模型的相似性,避免生成无意义的重复内容
  • 保持知识完整性:确保模型不会为了奖励最大化而忘记预训练阶段学到的有用知识
  • 提供平滑约束:与硬约束不同,KL散度提供了可微分的信息约束,便于梯度优化
KL散度惩罚的实际效果

让我们用一个具体的例子来说明KL散度惩罚如何工作。假设输入为“哈基米”上下文下模型可以生成两种回复:

原策略生成的token分布:
  • • “南北绿豆”:概率 0.01
  • • 其他正常回复:概率 0.99
新策略的token分布:
  • • “南北绿豆”:概率 0.3
  • • 其他正常回复:概率 0.7

如果奖励模型对"南北绿豆"给出很高的奖励值,新策略为了最大化奖励会大幅增加生成这个短语的概率。但是,这种变化会导致KL散度惩罚:

其中第一项 很大,因为新策略将"南北绿豆"的概率从1%提升到了30%,这是一个30倍的变化。

惩罚机制的作用:
  • • 当新策略偏离SFT策略太远时,KL散度项会变得很大
  • • 最终的PPO目标函数会减去这个大的惩罚项,抵消奖励模型带来的高奖励
  • • 模型因此不会过度追逐奖励信号,而是保持在SFT策略附近的合理范围内
平衡的结果:

经过KL散度惩罚的调节,模型会找到一个新的平衡点——既能够提升回复质量以获得更高奖励,又不会过度偏离原始的语言建模能力。这确保了RL优化过程是在保持模型基础能力的前提下进行的精细调整,而不是破坏性的重写。

参数调节的重要性

是关键的超参数,需要在两个目标之间找到平衡:

  • • 太小:模型可能过度优化奖励,生成低质量内容
  • • 太大:模型过于保守,无法有效学习人类偏好

实践中,通常会采用自适应的KL惩罚机制:当KL散度超过某个阈值时,动态调整\beta值,实现更精细的控制。

与截断机制的关系

截断机制和KL散度惩罚形成了双重保护:

  • 截断机制:限制单次更新的幅度,保证训练稳定性
  • KL散度惩罚:限制累积偏离程度,保证模型质量

两者结合,使得PPO既能有效学习人类偏好,又能保持大模型的核心能力不被破坏。

3. DPO 直接偏好优化 (Direct Preference Optimization)

RLHF需要显式训练奖励模型和进行RL优化,计算复杂且需要维护三个模型(RM、Critic、Actor)。DPO(Direct Preference Optimization,直接偏好优化)[2]提出跳过RM和RL,直接用偏好数据优化策略,核心洞察是:策略的偏好隐含了奖励函数的信息。

DPO公式的推导

DPO的推导非常巧妙,让我们从传统的RLHF框架开始,一步步推导出直接优化策略的方法。

第一步:回顾RLHF的偏好建模

在RLHF中,我们收集到的数据形式是:对于同一个输入 (如"请写一首关于春天的诗"),模型生成了两个回复 和 ,人类标注者判断哪个更好,记作 。

Bradley-Terry模型的基本思想

Bradley-Terry模型是描述两两比较(pairwise comparison)的经典概率模型。它的核心假设是:每个选项都有一个内在的"实力值",两个选项比较时,实力值更高的选项获胜概率更大

具体到RLHF场景:

  • • 每个回复 y 有一个内在的"质量分数"或"奖励值"
  • • 当比较两个回复 和 时,奖励值更高的回复更可能被人类偏好
Bradley-Terry的数学形式

对于两个选项的比较,Bradley-Terry模型定义为:

表示"真实"的人类偏好概率分布,也就是我们想要建模的目标分布。上标 * 强调这是理想的、未知的真实分布,而不是我们模型的近似。

假设了人类偏好虽然看似主观,但实际上遵循一个相对一致的概率模式。这个模式可以通过Bradley-Terry模型来建模,从而使得我们能够用数学方法来学习和预测人类偏好。

为什么使用指数函数?

使用指数函数有几个重要原因:

非负性: 确保概率始终为正
归一化:分母是所有选项的指数和,确保概率在范围内
敏感性:奖励值的小差异会被放大,使得模型能区分细微的质量差别

与sigmoid函数的关系

Bradley-Terry模型可以等价地写成sigmoid形式:

这种形式清楚地表明:偏好概率只取决于两个回复奖励值的差异,而不是它们的绝对值。

实际例子

假设对于输入"哈基米南北绿豆":

  • • 回复A“阿西嘎”的奖励值:
  • • 回复B“曼波”的奖励值:

根据Bradley-Terry模型:

这意味着人类有73%的概率会偏好回复A而不是回复B。

为什么选择Bradley-Terry模型?

理论基础:有坚实的统计学基础,广泛用于排序和比较问题
计算简单:只涉及指数和sigmoid函数,易于优化
符合直觉:奖励值差异越大,偏好概率差异也越大
可扩展性:可以自然地扩展到多个选项的比较

因此,Bradley-Terry模型为RLHF提供了一个数学上优雅且计算上可行的偏好建模框架。

第二步:从奖励函数到策略的联系

在强化学习中,最优策略 与奖励函数 之间的关系由softmax策略给出:

这里 是配分函数(partition function),定义为 ,用于归一化以确保所有可能回复的概率之和为1。配分函数的概念来源于统计力学,在大模型中计算它通常很困难,因为可能的回复数量巨大。

第三步:消除奖励函数,直接用策略表示偏好

这是DPO最关键的一步。从上面的策略公式中,我们可以解出奖励函数:

现在将这个表达式代入Bradley-Terry模型:

注意到配分函数 消掉了!这意味着我们可以完全用策略的比值来表示偏好。

第四步:引入参考策略

直接使用最优策略 会导致数值不稳定,DPO引入一个参考策略 (通常是SFT模型)作为基准。定义最优策略与参考策略的比值为:

其中 是温度参数,控制优化的强度。

第五步:最终的策略优化目标

结合第三步和第四步,我们得到:

现在我们可以用最大似然估计直接优化策略参数:

DPO的数学本质总结

给定偏好数据 ,最优策略 应满足:

DPO通过上述推导,将这个偏好约束直接转化为可优化的损失函数,无需显式的奖励模型。

DPO相比RLHF的优势

1.计算效率:不需要训练奖励模型,也不需要复杂的RL优化过程
2.数值稳定:避免了奖励函数的数值爆炸问题
3.端到端优化:直接从偏好数据学习策略,避免了多阶段训练的累积误差
4.内存友好:只需维护一个策略模型,而不是三个独立的模型

DPO体现了"大道至简"的设计哲学:通过数学洞察,发现了可以直接用策略比值来表示偏好,从而大大简化了大模型的人类偏好对齐过程。

五、大模型RL的新范式(以GRPO和GSPO为例)

随着大模型强化学习的深入发展,传统的PPO算法在处理超长序列和复杂任务时逐渐暴露出局限性。为了解决这些问题,研究者们提出了两种创新的RL算法:GRPO(Group Relative Policy Optimization)和GSPO(Group Sequence Policy Optimization)

这两种算法在保持PPO核心思想的基础上,通过引入"组相对"的概念,显著提升了大模型RL的训练效率和稳定性。

1. GRPO:基于组相对的策略优化

GRPO(Group Relative Policy Optimization)由DeepSeek团队在DeepSeekMath[3]

项目中首次提出,其核心思想是通过组内比较来降低策略梯度的方差,同时省略价值函数网络以减少内存消耗

这一设计特别适合数学推理等需要长序列生成的任务。

GRPO的核心动机

传统的PPO算法在处理大模型RL时面临两个主要挑战:

  • 内存消耗过大:需要同时维护Actor网络和Critic网络,对于百亿参数量级的大模型,内存开销巨大
  • 训练不稳定:价值函数的估计误差会通过策略梯度传播,特别是在长序列任务中,误差累积效应明显

GRPO通过一个巧妙的观察解决了这些问题:在同一个查询(query)的多个响应(response)之间,我们可以通过相对比较来评估质量,而不需要绝对的价值估计

GRPO的数学框架与推导

GRPO的精妙之处在于它巧妙地结合了PPO的稳定性机制与组相对比较的思想。让我们从数学角度一步步理解这个算法的设计过程。

从PPO到GRPO:设计思路的演进

回想一下,在传统的大模型RLHF中,PPO需要维护一个价值函数网络来估计状态价值 V(s),这在百亿参数规模的模型中会带来巨大的内存开销。

GRPO的核心洞察是:我们真的需要绝对的价值估计吗?

对于同一个查询,如果我们同时生成了多个响应,为什么不直接比较它们之间的相对优劣呢?

第一步:构建组相对优势函数

考虑一个查询 x,我们让策略生成 个不同的响应:。对于每个响应,奖励模型给出评分:。

传统做法是学习一个函数 来预测每个状态的价值,但GRPO采用了更简单的方式:组内归一化。

计算组内奖励的均值和标准差:

然后得到每个响应的相对优势:

这个设计的巧妙之处在于:

  • • 自动实现了奖励的归一化,不同查询的奖励尺度统一
  • • 组内相对比较消除了对绝对价值估计的需求
  • • 归一化后的优势值具有稳定的统计性质
第二步:将序列级优势分配到token级

现在我们有了序列级别的优势 ,但PPO需要在每个token级别进行优化。如何将序列的"功劳"或"过错"分配给具体的token呢?

GRPO采用了最简单直接的方式——均匀分配:

这里 是响应 的长度。这种分配方式假设序列中的每个token对最终奖励的贡献是相等的。

第三步:引入PPO的截断机制

有了token级别的优势估计,我们就可以应用PPO的核心机制了。回想PPO的标准形式:

在GRPO的设定中:

  • • 重要性权重 对应
  • • 优势 对应

因此,对于单个响应 的token级优化目标是:

第四步:整合到完整框架

现在,我们需要考虑所有可能的情况:所有的查询 ,以及每个查询对应的 个响应。

最终,GRPO的完整优化目标为:

将 的具体形式代入,就得到了我们最终的优化目标公式:

公式各部分的直观解释

让我们逐层理解这个公式的含义:

  • • 最外层期望:对训练数据中的所有查询 x 和对应的响应组取期望
  • • 组平均: 确保对组内所有响应公平对待
  • • 序列内平均: 将序列奖励分配到各个token
  • • 双重截断:外层 和内层 共同确保训练稳定
  • • 重要性权重: 衡量策略变化的程度
  • • 归一化优势: 表示token的相对质量评分
GRPO设计的数学优雅性
  • • 通过组内比较消除了对价值函数网络的依赖,内存占用减少50%
  • • 归一化机制自动适应不同奖励尺度,无需额外的超参数调优
  • • 截断机制继承自PPO,保证了训练的稳定性
  • • 均匀分配策略简单而有效,避免了复杂的奖励分配机制

这种设计使得GRPO特别适合数学推理等需要长序列生成的任务,在DeepSeekMath等项目中取得了显著的效果。

GRPO的工作流程

让我们通过一个具体的例子来理解GRPO的工作机制:

Step 1:组采样

对于查询"请证明勾股定理",模型生成G=4个响应:

  • • :完整的数学证明(奖励=8.5)
  • • :部分证明但有错误(奖励=4.2)
  • • :概念解释但无证明(奖励=6.1)
  • • :无关内容(奖励=1.8)
Step 2:优势计算

计算组归一化优势:

均值

标准差

归一化优势

,,,

Step 3:重要性权重计算

对于每个响应的每个token,计算重要性权重。例如,对于的第一个token:

在在

Step 4:策略更新

使用PPO的截断机制更新策略,但应用在token级别:

更新项

GRPO的优势与局限

优势

内存效率:省略Critic网络,内存占用减少约50%
训练速度:避免了价值函数的训练,收敛速度更快
实现简单:算法结构相对简洁,易于工程实现

局限

1.token级别的不稳定性:长序列中token级别的重要性权重可能累积误差

2.MoE模型训练困难:在混合专家模型中,token级别的优化会导致专家负载不均衡

3.序列长度敏感:随着响应长度增加,训练稳定性下降

2. GSPO:序列级别的策略优化

GSPO(Group Sequence Policy Optimization)[4]
由Qwen团队提出,是对GRPO的重要改进。其核心洞察是:大语言模型的优化应该在序列级别进行,而不是token级别。这一改变从根本上解决了GRPO的稳定性问题。

GSPO的核心洞察

GSPO的提出基于对GRPO局限性的深入分析。研究者发现GRPO的不稳定性主要来源于:

1.重要性权重定义不当:GRPO使用token级别的重要性权重

这违反了重要性采样的基本原则

2.序列-Token不匹配:奖励在序列级别给出,但优化在token级别进行,导致梯度方向不一致

3.误差累积效应:长序列中token级别的误差会累积,最终导致训练崩溃

GSPO的解决方案简单而优雅:将重要性权重定义在序列级别,与奖励保持一致

GSPO的数学框架

GSPO的优化目标为:

其中关键创新在于序列级别的重要性权重定义:

这个定义的含义:

几何平均: 实际上是token级别重要性权重的几何平均,这比算术平均更加稳定
长度归一化:通过的指数,消除了序列长度的影响

理论一致性:序列级别的重要性权重与重要性采样理论完全一致

GSPO与GRPO的对比

让我们通过数学推导来理解GSPO相对于GRPO的改进:

GRPO的梯度表达式

GSPO的梯度表达式

关键差异

1.权重位置:GRPO的权重在求和符号内部,GSPO的权重在外部

2.梯度一致性:GSPO中整个序列共享相同的权重,确保梯度方向一致

3.方差控制:GSPO的序列级别权重具有更低的方差

GSPO的稳定性分析

GSPO的稳定性优势可以通过以下角度理解:

1. 方差减少

序列级别的重要性权重具有更低的方差:

这是因为几何平均对异常值不敏感,而算术平均容易被极端值影响。

2. 梯度方向一致性

在GSPO中,同一个序列的所有token共享相同的权重,这意味着:

  • • 如果一个序列整体上很好(),那么所有token都会被正向加强
  • • 如果一个序列整体上不好(),那么所有token都会被负向调整
    这种一致性避免了GRPO中"好序列中的坏token被错误加强"或"坏序列中的好token被错误惩罚"的问题。
3. MoE友好

GSPO特别适合混合专家(MoE)模型的训练架构。在MoE模型中,每个token都会被路由到不同的专家网络进行处理,这种设计虽然提高了模型的容量和效率,但也带来了独特的训练挑战。

如果采用传统的token级别优化,不同的token可能被分配到不同的专家,导致专家之间的负载严重不均衡,某些专家可能被过度使用而其他专家却很少被激活。

GSPO通过序列级别的优化策略优雅地解决了这个问题。由于整个序列共享同一个重要性权重,所有token的梯度更新都是协调一致的,避免了不同专家之间产生冲突的梯度方向。

而且序列级别的评估能够整体看待整个响应的专家选择模式,而不是孤立地评估单个token的专家分配决策,这种整体性的视角确保了专家网络的负载更加均衡,训练过程更加稳定。

GSPO的实际应用效果

根据Qwen团队的实验结果,GSPO相比GRPO展现出显著优势,具体性能对比如下表所示:

实验数据解读:

GSPO的改进效果体现在三个核心层面。

在训练稳定性方面,GSPO将可稳定处理的序列长度从1000 tokens提升到8000 tokens以上,这对于需要长文本推理的任务至关重要。在训练效率方面,2-3倍的收敛速度提升意味着在大规模训练中可以节省大量计算资源和时间成本。

在模型性能方面,所有关键能力维度都获得了两位数的百分比提升,其中多轮对话能力的20%+提升尤为突出,表明GSPO在改善模型交互质量方面具有独特优势。

3. GRPO与GSPO的对比总结

如何学习AI大模型?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

想正式转到一些新兴的 AI 行业,不仅需要系统的学习AI大模型。同时也要跟已有的技能结合,辅助编程提效,或上手实操应用,增加自己的职场竞争力。

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高

那么针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

在这里插入图片描述

学习路线

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐