今天五月末之后,我裸辞了这份工作,虽然工作了两年多,但感觉跟个人发展方向有一点的差距,经历了一段时间的修整,现在开始逐渐开始求职及个人研究的相关工作。这篇文章是我之前在职时对GRPO前置知识及推导的对应总结,作为一个新的开始吧,希望也可以给其他人提供一定的帮助。
一、常用RL方案介绍
1. 强化学习的基本概念
强化学习简单来说由三部分组成:智能体(Agent就是这个,别把它太高大上,区别心理作用和实际应用)、环境(Environment )和 动作(Action)。以游戏“超级玛丽”为例,Environment 就是指游戏画面,Agent 是指玩家,Action 是指在当前时刻玩家所采取的动作。强化学习的最终目的是训练一个 Agent 可以在当前 Environment 中获得最大的 奖励(Reward)。
2.强化学习与监督学习的区别
监督学习模型训练
在监督学习中,我们首先需要定义任务优化的目标、建立模型结构和准备数据,不过这一切需要满足两个假设:
- 输入的数据(标注的数据)都应是没有关联的。因为如果输入的数据多是重复数据和相似度较高的数据,学习器(learner)是不好学习的。。
- 需要告诉学习器正确的标签是什么,这样它可以通过正确的标签来修正自己的预测。
这两个假设在强化学习中面临挑战
首先,以游戏为例,画面存在大量重复元素,差异性小;其次,只有游戏结束才能得到结果标签,相比于图片识别等任务,得到结果的过程过长,且难以定义中间过程对结果的贡献。
3.强化学习的数学基础
3.1 马尔可夫过程
- 马尔可夫过性质:如果一个状态的下一个状态只取决于它当前状态,而跟它当前状态之前的状态都没有关系。那我们就说这个状态转移符合马尔可夫性质
如上图所示,这里有一个包含之前的所有状态的ht,对于sts_tst转到st+1s_{t+1}st+1来说,对st+1s_{t+1}st+1状态的影响有且只与st有关。如果某一个过程满足马尔可夫性质(Markov Property),就是说未来的转移跟过去是独立的,它只取决于现在。
- 马尔可夫过程的例子
上图为一个马尔可夫过程的例子,这里有七个状态。比如从s1 开始,它有0.4的概率到s2 ,有 0.6 的概率留在当前的状态。 s2有 0.4 的概率到s1,有 0.4 的概率到 s3,另外有 0.2 的概率留在当前状态。如果我们从s3进行采样,我们就会得到3条轨迹。
◆ s3,s4,s5,s6,s6
◆ s3,s2,s3,s2,s1
◆ s3,s4,s4,s5,s5
通过对状态的采样,我们可以生成很多这样的轨迹。
马尔科夫链
离线的马尔可夫过程称为马尔可夫链马尔可夫奖励过程
马尔可夫奖励过程是在马尔可夫链的基础上加入了奖励函数,也就是说我们每到达一个状态时,会有一个回报。我们用R表示全体奖励,r表示当前时刻的奖励,t表时间,则在t时刻的奖励为:
Gt=rt+1+γrt+2+γ2rt+3+.....+γT−t−1rTG_t=r_{t+1}+γr_{t+2}+γ^2r_{t+3}+.....+γ^{T−t−1}r_TGt=rt+1+γrt+2+γ2rt+3+.....+γT−t−1rT
针对上面的例子,如果R=5,0,0,0,0,0,10,γ=0.5,则G计算为:
s4,s5,s6,s7的回报为:0+0.5×0+0.25×0+0.125×10=1.25
s4,s3,s3,s1的回报为:0+0.5×0+0.25×0+0.125×5=0.625
其Gt对应的期望为状态价值函数:
Vt(s)=E[Gt∣st=s]V^t(s)=E[G_t|s_t=s]Vt(s)=E[Gt∣st=s]
Vt(s)=E[rt+1+γrt+2+γ2rt+3+.....+γT−t−1rT∣st=s]V^t(s)=E[r_{t+1}+γr_{t+2}+γ^2r_{t+3}+.....+γ^{T−t−1}r_T|s_t=s]Vt(s)=E[rt+1+γrt+2+γ2rt+3+.....+γT−t−1rT∣st=s]
状态价值函数可以通过贝尔曼方程的形式计算
其推导过程如下:
- 马尔可夫决策过程
相对于马尔可夫奖励过程,马尔可夫决策过程多了决策(决策是指动作),其他的定义与马尔可夫奖励过程的是类似的。此外,状态转移也多了一个条件,变成了
。未来的状态不仅依赖于当前的状态,也依赖于在当前状态智能体采取的动作。马尔可夫决策过程满足条件:
对于奖励函数,它多了一个当前的动作,变成了
。当前的状态以及采取的动作会决定智能体在当前可能得到的奖励多少。
不过这里就涉及了一个问题,那就是如何决定我们采取何种动作呢,通常这由一个策略函数π决定。
π(a∣s)=p(at=a∣st=s)π(a|s)=p(a_t=a|s_t=s)π(a∣s)=p(at=a∣st=s)
在此情况下,状态转移函数和奖励函数变化为:
- 价值函数
这里我们另外引入了一个 Q 函数(Q-function)。Q 函数也被称为动作价值函数(action-value function)。Q 函数定义的是在某一个状态采取某一个动作,它有可能得到的回报的一个期望,即
这里的期望其实也是基于策略函数的。所以我们需要对策略函数进行一个加和,然后得到它的价值。 对 Q 函数中的动作进行加和,就可以得到价值函数:
对Q函数的贝尔曼推导为:
简单的来说就是决定奖励r的元素不止取决于当前状态s,还有当前动作a,为了描述s和a的转换关系,我们引入了决策函数π,π这个字母要记好了,以后要理解策略和智能体会多次用到这个符号。
3.2 策略梯度
- 策略与轨迹的定义
我们回顾一下强化学习的三个基本概念:行为(actor)、环境(environment)、奖励(reward)
例如在电视游戏中,actor 做的事情就是去操控游戏的摇杆,environment 就是游戏的主机,reward function 采取某一行为时得到的分数。
actor的行为由策略决定,而策略可以理解为当给定外界条件时,我们进行的动作输出,根据上一节内容,定义为:
π(a∣s)=p(at=a∣st=s)π(a|s)=p(a_t=a|s_t=s)π(a∣s)=p(at=a∣st=s)
环境、行为的关系如上图所示,首先,environment 是游戏主机可以由一个公式表示。这个环境产出一个状态s1,将此状态输入策略π的神经网络中产生动作,然后动作进一步引起环境的变化重复产生状态si与ai。我们把环境输出的 s与演员输出的动作 a全部组合起来,就是一个轨迹,即:
Trajectory
在人工智能的相关方法中,演员就是模型其参数为θ,给定演员的参数 θ,我们可以计算某个轨迹τ发生的概率为:
- 奖励函数及梯度
在强化学习里面,除了环境与演员以外,还有奖励函数。如上图所示,奖励函数也是一个公式,每个s和a都有其对应的奖励r。我们把所有的r相加就得到了总奖励,我们要做的事情就是调整 actor 的内部参数θ,使得R的值越大越好。
那么如何对奖励求梯度呢?我们用了梯度上升,对R求相应的梯度,通过蓝框公式的转换,可将其转化为上图的最后形式。由于R的计算公式中带有π函数,所以更新的梯度可以作用于策略函数。
推导过程如下:
二、PPO及变体(GRPO)
- 同策略与异策略
在 reinforcement learning 里面,我们要学习的agent如果 跟和环境互动的 agent 是同一个的话, 这个叫做on-policy(同策略),反之,如果要学习的 agent 跟和环境互动的 agent 不是同一个的话, 那这个叫做off-policy(异策略)。
那么,我们如何将同策略转化为异策略呢?
- 重要性采样
具体做法如上图所示,这里有一个函数f(x),两个分布p(x)与q(x),假设p(x)不能做积分,q(x)却可以积分。这样的话,我们可以从q(x)上采样,通过p(x)和q(x)上的装换关系来求期望。
在将同策略换为异策略之后,策略梯度为:
而在实际的策略梯度计算中,我们往往是将每个状态和动作分开计算的,更新过程可写为:
- 近端策略优化(PPO)
PPO:
PPO2:
PPO2 即近端策略优化裁剪。近端策略优化裁剪的目标函数里面没有 KL 散度,其要最大化的目标函数为
其中,
■操作符(operator)min 是在第一项与第二项里面选择比较小的项。
■第二项前面有一个裁剪(clip)函数,裁剪函数是指,在括号里面有3项,如果第一项小于第二项,那就输出 1−ε;第一项如果大于第三项,那就输出 1+ε。
■ε 是一个超参数,是我们要调整的,可以设置成 0.1 或 0.2
- GRPO优化前的PPO2
GRPO的公式主要基于PPO2的公式演化而成,不同的是将环境由s符号换成了q,动作符号由a换成了o,这样PPO2公式就变成了:
其中,优势函数的计算为:
优势函数中r的计算为:
- GRPO
其中KL散度的公式为:
■GRPO与PPO的区别
其中,GRPO舍弃了奖励函数,就是省掉了一些需要训练的模型,用优势的平均计算价值,极大的节省了成本,也加快的收敛速度。
三、deepseek训练流程
1.思维链
2.DeepSeek-R1训练流程
3.SFT与RL
SFT公式
RFT公式
GRPO公式