云计算百科
云计算领域专业知识百科平台

一文全面入门强化学习:从基础概念、策略梯度、REINFORCE、RLOO、TRPO到PPO、GRPO算法

前言

本文对RL入门做一个串联,中间会穿插着各种关键结论和优化以及对应的细节文章,细节可以去对应的文章观看。

从RL基础理论 -> 策略梯度 -> REINFORCE -> RLOO/TRPO -> PPO -> GRPO

RL理论基础

这些概念是要搞清楚的:

  • 代理(Agent)
  • 环境(Environment)
  • 状态(state)
  • 动作(action)
  • 策略(policy)
  • 轨迹(trajectory)
  • 奖励(reward) 和 回报(Return)
  • 状态价值函数(Value function)和 动作价值函数(Q-function)
  • Value-based/Policy-based

细节请看:https://zhuanlan.zhihu.com/p/1929929237504198470

策略梯度

首先要明确RL的目标是什么, 目标就是去优化策略(π\\piπ),使得回报(Return)的期望最大:

J(θ)=Eτ∼πθ[R(τ)]J(\\theta) = \\mathbb{E}_{\\tau \\sim \\pi_\\theta} \\left[ R(\\tau) \\right]J(θ)=Eτπθ[R(τ)]

这个期望是在整个轨迹τ\\tauτ上,轨迹τ\\tauτ指代一系列状态和动作,一个时间的序列:

τ=(s0,a0,s1,a1,… )\\tau = (s_0, a_0, s_1, a_1, \\dots)τ=(s0,a0,s1,a1,)

策略梯度最终推导为:
∇θJ(θ)=Eτ∼πθ[∑t=0∞∇θlog⁡πθ(at∣st)R(τ)]
\\nabla_\\theta J(\\theta) = \\mathbb{E}_{\\tau \\sim \\pi_\\theta} \\left[ \\sum_{t=0}^\\infty \\nabla_\\theta \\log \\pi_\\theta(a_t | s_t) R(\\tau) \\right]
θJ(θ)=Eτπθ[t=0θlogπθ(atst)R(τ)]

细节看:
https://zhuanlan.zhihu.com/p/1932820715456931793

REINFORCE

利用蒙特卡罗方法,多次采样来近似期望,策略梯度可以近似的写成:

∇θJ(θ)≈1N∑i=1N∑t=0Ti−1∇θlog⁡πθ(at(i)∣st(i))R(τ(i))
\\nabla_\\theta J(\\theta) \\approx \\frac{1}{N} \\sum_{i=1}^N \\sum_{t=0}^{T_i – 1} \\nabla_\\theta \\log \\pi_\\theta\\left(a_t^{(i)} \\mid s_t^{(i)}\\right) R\\left(\\tau^{(i)}\\right)
θJ(θ)N1i=1Nt=0Ti1θlogπθ(at(i)st(i))R(τ(i))

其中:

  • TiT_iTi 是第 iii 条轨迹 τ(i)\\tau^{(i)}τ(i) 的长度(因实际轨迹有限,求和到 Ti−1T_i – 1Ti1);
  • at(i)a_t^{(i)}at(i)st(i)s_t^{(i)}st(i) 是第 iii 条轨迹中 ttt 时刻的动作与状态;
  • R(τ(i))R\\left(\\tau^{(i)}\\right)R(τ(i)) 是第 iii 条轨迹的总奖励。

通过两个方法来降低训练方差大的问题:

  • reward to go,只关注对未来的影响,reward计划只计算现在到未来的回报累积。
  • 引入baseline,关注优势。
  • 把Q函数和Advantage引入,则策略梯度可以写为:

    g^=1N∑i=1N∑t=0Ti−1∇θlog⁡πθ(at(i)∣st(i))(Qπ(st(i),at(i))−Vπ(st(i)))
    \\hat{g} = \\frac{1}{N} \\sum_{i=1}^N \\sum_{t=0}^{T_i – 1} \\nabla_\\theta \\log \\pi_\\theta\\left(a_t^{(i)} \\mid s_t^{(i)}\\right) \\left(Q_\\pi(s_t^{(i)}, a_t^{(i)})-V_\\pi(s_t^{(i)})\\right)
    g^=N1i=1Nt=0Ti1θlogπθ(at(i)st(i))(Qπ(st(i),at(i))Vπ(st(i)))

    其中Q-V则为advantage:
    Aπ(s,a)=Qπ(s,a)−Vπ(s)
    A_\\pi(s, a) = Q_\\pi(s, a) – V_\\pi(s)
    Aπ(s,a)=Qπ(s,a)Vπ(s)

    详细看:
    https://zhuanlan.zhihu.com/p/1932820715456931793

    RLOO

    提出了基于REINFORCE的RLOO强化学习算法(REINFORCE Leave-One-Out)

    相比于REINFORCE,RLOO核心实现细节在于,它采用批次中其他样本的平均奖励来计算基线,而不是对批次中的所有奖励取平均值。

    对于RLOO基线,给定 KKK 个采样轨迹或动作 a1,…,aKa_1, \\ldots, a_Ka1,,aK,对于给定的提示 sss,每个提示的基线为:

    b(s,ak)=1K−1∑i=1,i≠kKr(s,ai)
    b(s, a_k) = \\frac{1}{K – 1} \\sum_{\\substack{i=1, i \\neq k}}^{K} r(s, a_i)
    b(s,ak)=K11i=1,i=kKr(s,ai)

    从而带来每个提示的优势:

    A(s,ak)=r(s,ak)−b(s,ak)
    A(s, a_k) = r(s, a_k) – b(s, a_k)
    A(s,ak)=r(s,ak)b(s,ak)

    等效地,这可以表示为:

    A(s,ak)=KK−1(r(s,ak)−1K∑i=1Kr(s,ai))
    A(s, a_k) = \\frac{K}{K – 1} \\left( r(s, a_k) – \\frac{1}{K} \\sum_{i=1}^{K} r(s, a_i) \\right)
    A(s,ak)=K1K(r(s,ak)K1i=1Kr(s,ai))

    在RLOO中主要针对response-level的reward

    详细看:
    https://zhuanlan.zhihu.com/p/1932821169993675011

    TRPO

    策略梯度基本原理是利用梯度上升法朝着最大预期收益的方向优化。

    然而,不合理的学习步长,会导致梯度上升法中的错误步骤可能导致次优操作,进而导致糟糕的状态。这反过来又会导致策略更新不佳和样本数据收集不佳。如此循环往复,最终可能导致策略性能崩溃,训练过程彻底失败。

    需要了解:

  • 引入新旧策略关系
  • 局部近似
  • 引入信赖域
  • 通过KL散度限制以及重要性采样才优化。

    最终的TRPO的优化等式为:
    maximizeθ Es∼ρθoldEa∼πθold(a∣s)[πθ(a∣s)πθold(a∣s)Aθold(s,a)]subject to Es∼ρθold[DKL(πθold(⋅∣s)∥πθ(⋅∣s))]≤δ
    \\begin{aligned}
    &\\underset{\\theta}{\\text{maximize}}\\ \\mathbb{E}_{s\\sim\\rho_{\\theta_{\\text{old}}}}\\mathbb{E}_{a\\sim\\pi_{\\theta_{\\text{old}}}(a|s)}\\left[\\frac{\\pi_\\theta(a|s)}{\\pi_{\\theta_{\\text{old}}}(a|s)}A_{\\theta_{\\text{old}}}(s,a)\\right]\\\\
    &\\text{subject to}\\ \\mathbb{E}_{s\\sim\\rho_{\\theta_{\\text{old}}}}\\left[D_{\\text{KL}}(\\pi_{\\theta_{\\text{old}}}(\\cdot|s)\\|\\pi_\\theta(\\cdot|s))\\right]\\leq\\delta
    \\end{aligned}
    θmaximize EsρθoldEaπθold(as)[πθold(as)πθ(as)Aθold(s,a)]subject to Esρθold[DKL(πθold(s)πθ(s))]δ

    详细看:
    https://zhuanlan.zhihu.com/p/1934627686388588878

    PPO

    PPO基于GRPO继续优化。PPO方法实现要简单得多,且性能与TRPO相当。

    有两种形式,其中效果更好的是Clip优化,
    它依赖于目标函数中的专门Clip裁剪操作,以消除新策略远离旧策略的动机。

    Lppo−clip(θ)=E^t[min⁡(rt(θ)A^t,clip(rt(θ),1−ϵ,1+ϵ)A^t)]
    L_{ppo-clip}(\\theta)=\\hat{\\mathbb{E}}_t\\left[\\min(r_t(\\theta)\\hat{A}_t,\\text{clip}(r_t(\\theta),1-\\epsilon,1+\\epsilon)\\hat{A}_t)\\right]
    Lppoclip(θ)=E^t[min(rt(θ)A^t,clip(rt(θ),1ϵ,1+ϵ)A^t)]

    其中rt(θ)r_t(\\theta)rt(θ)为重要性采样部分:
    rt(θ)=πθ(at∣st)πθold(at∣st)
    r_t(\\theta)=\\frac{\\pi_\\theta(a_t|s_t)}{\\pi_{\\theta_{\\text{old}}}(a_t|s_t)}
    rt(θ)=πθold(atst)πθ(atst)

    其中Advantage的估计采用了GAE方法进行估计,通过reward model的reward分数以及Value Model估计的期望回报计算残差进行估计。详细的GAE方法可见:https://zhuanlan.zhihu.com/p/1934626865701720143

    PPO的公式和代码解读可以看:
    https://zhuanlan.zhihu.com/p/1937882242291598044

    PPO训练的稳定技巧(参考:https://zhuanlan.zhihu.com/p/1937885098239325591):

    GRPO

    采样多个输出的平均reward作为baseline,而不用单独的Value Model去预测baseline,节省了Value Model,从而显著的减少了训练资源的使用。

    作为基线,用于回答相同问题。对于每个问题 qqq,从旧策略πθold\\pi_{\\theta_{\\text{old}}}πθold 中采样一组输出 $ {o_1, o_2, \\cdots, o_G}$,然后通过最大化以下目标来优化策略模型:

    JGRPO(θ)=E[q∼P(Q),{oi}i=1G∼πθold(O∣q)]1G∑i=1G1∣oi∣∑t=1∣oi∣{min⁡[πθ(oi,t∣q,oi,<t)πθold(oi,t∣q,oi,<t)A^i,t,clip(πθ(oi,t∣q,oi,<t)πθold(oi,t∣q,oi,<t),1−ε,1+ε)A^i,t]−βDKL[πθ∥πref]}
    \\begin{align*}
    \\mathcal{J}_{\\text{GRPO}}(\\theta) &= \\mathbb{E} \\left[ q \\sim P(Q), \\{o_i\\}_{i=1}^G \\sim \\pi_{\\theta_{\\text{old}}}(O|q) \\right] \\\\
    &\\quad \\frac{1}{G} \\sum_{i=1}^G \\frac{1}{|o_i|} \\sum_{t=1}^{|o_i|} \\left\\{ \\min \\left[ \\frac{\\pi_\\theta(o_{i,t}|q, o_{i, < t})}{\\pi_{\\theta_{\\text{old}}}(o_{i,t}|q, o_{i,< t})} \\hat{A}_{i,t}, \\text{clip} \\left( \\frac{\\pi_\\theta(o_{i,t}|q, o_{i,< t})}{\\pi_{\\theta_{\\text{old}}}(o_{i,t}|q, o_{i,< t})}, 1 – \\varepsilon, 1 + \\varepsilon \\right) \\hat{A}_{i,t} \\right] – \\beta \\mathbb{D}_{\\text{KL}} \\left[ \\pi_\\theta \\|\\pi_{\\text{ref}} \\right] \\right\\}
    \\end{align*}
    JGRPO(θ)=E[qP(Q),{oi}i=1Gπθold(Oq)]G1i=1Goi1t=1oi{min[πθold(oi,tq,oi,<t)πθ(oi,tq,oi,<t)A^i,t,clip(πθold(oi,tq,oi,<t)πθ(oi,tq,oi,<t),1ε,1+ε)A^i,t]βDKL[πθπref]}

    其中 $ \\varepsilon $ 和 $ \\beta $ 是超参数,$ \\hat{A}_{i,t} $ 是仅基于每组内部输出的相对奖励计算的优势。

    GRPO使用无偏估计来估计 KL 散度:
    DKL[πθ∥πref]=πref(oi,t∣q,oi,<t)πθ(oi,t∣q,oi,<t)−log⁡πref(oi,t∣q,oi,<t)πθ(oi,t∣q,oi,<t)−1,
    \\mathbb{D}_{KL} \\left[ \\pi_\\theta \\|\\pi_{\\text{ref}} \\right] = \\frac{\\pi_{\\text{ref}}(o_{i,t} \\mid q, o_{i,< t})}{\\pi_\\theta(o_{i,t} \\mid q, o_{i,< t})} – \\log \\frac{\\pi_{\\text{ref}}(o_{i,t} \\mid q, o_{i,< t})}{\\pi_\\theta(o_{i,t} \\mid q, o_{i,< t})} – 1,
    DKL[πθπref]=πθ(oi,tq,oi,<t)πref(oi,tq,oi,<t)logπθ(oi,tq,oi,<t)πref(oi,tq,oi,<t)1,

    这个值一定为正。

    解读参考: https://zhuanlan.zhihu.com/p/1938204409831069009

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 一文全面入门强化学习:从基础概念、策略梯度、REINFORCE、RLOO、TRPO到PPO、GRPO算法
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!