前言

  详解强化学习算法。依次介绍 REINFORCEPPOGRPOGSPODAPOSAPO
  通俗易懂的大模型强化学习(一)
  通俗易懂的大模型强化学习(二)
  通俗易懂的大模型强化学习(三)

一、重要概念定义

  1. 策略:智能体在看到状态 s t s_{t} st 的情况下,执行的动作服从概率分布 π θ ( ⋅ ∣ s t ) \pi_{\theta}(\cdot|s_{t}) πθ(st)。也就是此时智能体是以一定概率执行某个动作 a t a_{t} at
    a t ∼ π θ ( ⋅ ∣ s t ) (1) a_{t}\sim\pi_{\theta}(\cdot|s_{t})\tag{1} atπθ(st)(1)
  2. 奖励:奖励由当前状态 s t s_{t} st、已经执行的动作 a t a_{t} at和下一步的状态 s t + 1 s_{t+1} st+1 共同决定。
    • 单步奖励
      r t = R ( s t , a t , s t + 1 ) (2) r_{t}=R(s_{t},a_{t},s_{t+1}) \tag{2} rt=R(st,at,st+1)(2)
      • 奖励和策略无关
      • 用于评估当前动作的好坏,指导智能体的动作选择。
    • T步累积奖励:T步累积奖励等于一条运动轨迹/一个回合/一个rollout后的单步奖励的累加。
      R ( τ ) = ∑ t = 0 T − 1 r t (3) R(\tau)=\sum_{t=0}^{T-1}r_{t}\tag{3} R(τ)=t=0T1rt(3)
    • T步累积折扣奖励
      R ( τ ) = ∑ t = 0 T − 1 γ t r t (4) R(\tau)=\sum_{t=0}^{T-1}\gamma^{t} r_{t}\tag{4} R(τ)=t=0T1γtrt(4)
      这里 γ ∈ ( 0 , 1 ) \gamma\in(0,1) γ(0,1)
  3. 运动轨迹:智能体和环境做一系列(一回合)交互后得到的 stateactionreward 的序列,运动轨迹也被称为 episodesrollouts,假设智能体和环境交互了 T T T 次:
    τ = ( s 0 , a 0 , r 0 , s 1 , a 1 , r 1 , … , s T − 1 , a T − 1 , r T − 1 ) \tau=(s_{0},a_{0},r_{0},s_{1},a_{1},r_{1},\dots,s_{T-1},a_{T-1},r_{T-1}) τ=(s0,a0,r0,s1,a1,r1,,sT1,aT1,rT1)
  4. 轨迹概率:由于动作执行和状态转移都具备一定的随机性(其实在大模型场景,不太了解为什么状态转移具备随机性,前置文本 s t s_{t} st 和下一个token a t a_{t} at都确定了,下一个文本序列 s t + 1 s_{t+1} st+1 应该就是确定的啊),因此上述轨迹 τ \tau τ 是具有随机性的,出现的概率如下:
    P ( τ ∣ π θ ) = P ( s 0 ) π θ ( a 0 ∣ s 0 ) P ( s 1 ∣ s 0 , a 0 ) π θ ( a 1 ∣ s 1 ) P ( s 2 ∣ s 1 , a 1 ) ⋯ = P ( s 0 ) ∏ t = 0 T − 1 π θ ( a t ∣ s t ) P ( s t + ! ∣ s t , a t ) (5) \begin{aligned} P(\tau|\pi_{\theta})&=P(s_{0})\pi_{\theta}(a_{0}|s_{0})P(s_{1}|s_{0},a_{0})\pi_{\theta}(a_{1}|s_{1})P(s_{2}|s_{1},a_{1})\cdots\\ &=P(s_{0})\prod_{t=0}^{T-1}\pi_{\theta}(a_{t}|s_{t})P(s_{t+!}|s_{t},a_{t})\tag{5} \end{aligned} P(τπθ)=P(s0)πθ(a0s0)P(s1s0,a0)πθ(a1s1)P(s2s1,a1)=P(s0)t=0T1πθ(atst)P(st+!st,at)(5)
    其中:
    • P ( s 0 ) P(s_{0}) P(s0):初始状态出现的概率;
    • π ( a t ∣ s t ) \pi(a_{t}|s_{t}) π(atst):是策略 π \pi π 在状态 s t s_{t} st 下选择动作 a t a_{t} at 的概率;
    • P ( s t + ! ∣ s t , a t ) P(s_{t+!}|s_{t},a_{t}) P(st+!st,at):是状态转移概率。

二、策略梯度算法

  1. 策略目标

J ( θ ) = E τ ∼ π θ [ R ( τ ) ] = E τ ∼ π θ [ ∑ t = 0 T − 1 r t ] = ∑ τ P ( τ ∣ π θ ) R ( τ ) (6) \begin{aligned} J(\theta)&=\mathbb{E}_{\tau\sim\pi_{\theta}}[R(\tau)]\\ &=\mathbb{E}_{\tau\sim\pi_{\theta}}[\sum_{t=0}^{T-1}r_{t}]\\ &=\sum_{\tau}P(\tau|\pi_{\theta})R(\tau)\tag{6} \end{aligned} J(θ)=Eτπθ[R(τ)]=Eτπθ[t=0T1rt]=τP(τπθ)R(τ)(6)

  1. 策略梯度
    ∇ θ J ( θ ) = ∑ τ R ( τ ) ∇ θ P ( τ ∣ π θ ) = ∑ τ R ( τ ) P ( τ ∣ π θ ) ∇ θ P ( τ ∣ π θ ) P ( τ ∣ π θ ) = ∑ τ R ( τ ) P ( τ ∣ π θ ) ∇ θ l o g P ( τ ∣ π θ ) = E τ ∼ π θ [ R ( τ ) ∇ θ l o g P ( τ ∣ π θ ) ] (7) \begin{aligned} \nabla_{\theta}J(\theta)&=\sum_{\tau}R(\tau)\nabla_{\theta}P(\tau|\pi_{\theta})\\ &=\sum_{\tau}R(\tau)P(\tau|\pi_{\theta})\frac{\nabla_{\theta}P(\tau|\pi_{\theta})}{P(\tau|\pi_{\theta})}\\ &=\sum_{\tau}R(\tau)P(\tau|\pi_{\theta})\nabla_{\theta}logP(\tau|\pi_{\theta})\\ &=\mathbb{E}_{\tau\sim\pi_{\theta}}[R(\tau)\nabla_{\theta}logP(\tau|\pi_{\theta})]\tag{7} \end{aligned} θJ(θ)=τR(τ)θP(τπθ)=τR(τ)P(τπθ)P(τπθ)θP(τπθ)=τR(τ)P(τπθ)θlogP(τπθ)=Eτπθ[R(τ)θlogP(τπθ)](7)
    上述推导使用了对数导数的技巧:
    ∇ θ l o g P ( τ ∣ π θ ) = ∇ θ P ( τ ∣ π θ ) P ( τ ∣ π θ ) ⇒ ∇ θ P ( τ ∣ π θ ) = P ( τ ∣ π θ ) ∇ θ l o g P ( τ ∣ π θ ) (8) \begin{aligned} &\nabla_{\theta}logP(\tau|\pi_{\theta})=\frac{\nabla_{\theta}P(\tau|\pi_{\theta})}{P(\tau|\pi_{\theta})}\\ \Rightarrow&\nabla_{\theta}P(\tau|\pi_{\theta})=P(\tau|\pi_{\theta})\nabla_{\theta}logP(\tau|\pi_{\theta})\tag{8} \end{aligned} θlogP(τπθ)=P(τπθ)θP(τπθ)θP(τπθ)=P(τπθ)θlogP(τπθ)(8)
    又因为根据前文轨迹概率(等式(5))的计算,有如下等式成立:
    P ( τ ∣ π θ ) = P ( s 0 ) ∏ t = 0 T − 1 π θ ( a t ∣ s t ) P ( s t + ! ∣ s t , a t ) (9) \begin{aligned} P(\tau|\pi_{\theta})=P(s_{0})\prod_{t=0}^{T-1}\pi_{\theta}(a_{t}|s_{t})P(s_{t+!}|s_{t},a_{t})\tag{9} \end{aligned} P(τπθ)=P(s0)t=0T1πθ(atst)P(st+!st,at)(9)
    所以:
    ∇ θ l o g P ( τ ∣ π θ ) = ∇ θ [ l o g P ( s 0 ) + ∑ t = 0 T − 1 l o g P ( s t + ! ∣ s t , a t ) + ∑ t = 0 T − 1 l o g π θ ( a t ∣ s t ) ] = ∇ θ l o g P ( s 0 ) + ∑ t = 0 T − 1 ∇ θ l o g P ( s t + ! ∣ s t , a t ) + ∑ t = 0 T − 1 ∇ θ l o g π θ ( a t ∣ s t ) ] = ∑ t = 0 T − 1 ∇ θ l o g π θ ( a t ∣ s t ) (10) \begin{aligned} \nabla_{\theta}logP(\tau|\pi_{\theta})&=\nabla_{\theta}[logP(s_{0})+\sum_{t=0}^{T-1}logP(s_{t+!}|s_{t},a_{t})+\sum_{t=0}^{T-1}log\pi_{\theta}(a_{t}|s_{t})]\\ &=\nabla_{\theta}logP(s_{0})+\sum_{t=0}^{T-1}\nabla_{\theta}logP(s_{t+!}|s_{t},a_{t})+\sum_{t=0}^{T-1}\nabla_{\theta}log\pi_{\theta}(a_{t}|s_{t})]\\ &=\sum_{t=0}^{T-1}\nabla_{\theta}log\pi_{\theta}(a_{t}|s_{t})\tag{10} \end{aligned} θlogP(τπθ)=θ[logP(s0)+t=0T1logP(st+!st,at)+t=0T1logπθ(atst)]=θlogP(s0)+t=0T1θlogP(st+!st,at)+t=0T1θlogπθ(atst)]=t=0T1θlogπθ(atst)(10)
    其中第二行到第三行的变化,是基于如下事实:
    • ∇ θ l o g P ( s 0 ) = 0 \nabla_{\theta}logP(s_{0})=0 θlogP(s0)=0,初始状态与参数 θ \theta θ无关;
    • ∇ θ l o g P ( s t + ! ∣ s t , a t ) = 0 \nabla_{\theta}logP(s_{t+!}|s_{t},a_{t})=0 θlogP(st+!st,at)=0,环境变化与参数 θ \theta θ无关。

  将等式(10)带入等式(7),可得如下策略梯度表达式:
∇ θ J ( θ ) = E τ ∼ π θ [ R ( τ ) ∇ θ l o g P ( τ ∣ π θ ) ] = E τ ∼ π θ [ ∑ t = 0 T − 1 ∇ θ l o g π θ ( a t ∣ s t ) R ( τ ) ] (11) \begin{aligned} \nabla_{\theta}J(\theta)&=\mathbb{E}_{\tau\sim\pi_{\theta}}[R(\tau)\nabla_{\theta}logP(\tau|\pi_{\theta})]\\ &=\mathbb{E}_{\tau\sim\pi_{\theta}}[\sum_{t=0}^{T-1}\nabla_{\theta}log\pi_{\theta}(a_{t}|s_{t})R(\tau)]\tag{11} \end{aligned} θJ(θ)=Eτπθ[R(τ)θlogP(τπθ)]=Eτπθ[t=0T1θlogπθ(atst)R(τ)](11)

三、REINFORCE

  是策略梯度方法中的最基础、最原始的一种算法,由Williams在1992年提出。是第一个明确提出可以通过多次采样来估计等式(11)中的期望(用蒙特卡罗方法: 多次采样,平均值逼近理论期望)。
∇ θ J ( θ ) = E τ ∼ π θ [ ∑ t = 0 T − 1 ∇ θ l o g π θ ( a t ∣ s t ) R ( τ ) ] ≈ 1 N ∑ n = 1 N ∑ t = 0 T n − 1 ∇ θ l o g π θ ( a t ∣ s t ) R ( τ n ) (12) \begin{aligned} \nabla_{\theta}J(\theta)&=\mathbb{E}_{\tau\sim\pi_{\theta}}[\sum_{t=0}^{T-1}\nabla_{\theta}log\pi_{\theta}(a_{t}|s_{t})R(\tau)]\\ &\approx\frac{1}{N}\sum_{n=1}^{N}\sum_{t=0}^{T_{n}-1}\nabla_{\theta}log\pi_{\theta}(a_{t}|s_{t})R(\tau_{n})\tag{12} \end{aligned} θJ(θ)=Eτπθ[t=0T1θlogπθ(atst)R(τ)]N1n=1Nt=0Tn1θlogπθ(atst)R(τn)(12)
  等式(12)中的 R ( τ n ) = ∑ t = 0 T n − 1 r t R(\tau_{n})=\sum_{t=0}^{T_{n}-1}r_{t} R(τn)=t=0Tn1rt,来源于等式(3)。若采用累积折扣奖励,则 R ( τ n ) = ∑ t = 0 T n − 1 γ t r t R(\tau_{n})=\sum_{t=0}^{T_{n}-1}\gamma^{t} r_{t} R(τn)=t=0Tn1γtrt,来源于等式(4)。

  1. REINFORCE的问题:方差很大,无法收敛。每一次梯度更新有两个方面会引起比较大的方差:
    • 去预估整体期望的时候,在每一步,都会与这个轨迹整体的回报 R ( τ n ) R(\tau_{n}) R(τn) 相乘,相当于每一步都与整体的回报相关,引入了过去的噪声;
    • 梯度是利用蒙特卡罗方法采样多条轨迹近似计算,但不同轨迹的回报波动可能很剧烈,导致策略梯度估计不稳定,方差大。
  2. REINFORCE的优化
    • reward to go: 只关注每一步策略对于将来轨迹的影响,所以每一步的回报从当前策略开始算,而不是轨迹中的每一步都直接粗暴的与整个轨迹的回报计算。这也可以从策略角度说得通,当前的策略( s t a t e → a c t i o n state\rightarrow action stateaction)应该只对未来有影响,因为过去的已经发生了,无法产生影响。所以回报可以写为:
      R ( τ n , t ) = ∑ t ′ = t T n − 1 r t ′ (13) \begin{aligned} R(\tau_{n},t)=\sum_{t^{'}=t}^{T_{n}-1}r_t^{'}\tag{13} \end{aligned} R(τn,t)=t=tTn1rt(13)
      若采用累积折扣奖励,回报可写为:
      R ( τ n , t ) = ∑ t ′ = t T n − 1 γ t ′ − t r t ′ (14) \begin{aligned} R(\tau_{n},t)=\sum_{t^{'}=t}^{T_{n}-1}\gamma^{t^{'}-t} r_t^{'}\tag{14} \end{aligned} R(τn,t)=t=tTn1γttrt(14)
    • 引入baseline:如果每次更新只看轨迹的回报,相当于只看绝对值,按照当前策略的回报绝对值去度量当前的价值,本身就是不合理的,相当于没有基准,只要回报不是负数,可能就会认为这个方向是好的,实际却不是这样。类似于 a 回报为20,b 回报为40,看似两个回报都是正向的,实际当前策略下的平均回报预期已经是30了,所以 a 本质是不推荐的优化方向。这时要引入当前状态下的预期回报作为baseline。
        那baseline如何获取?可以通过无参数的估计:使用过去训练步骤中回报的滑动平均值作为 baseline。这样可以衡量当前轨迹的回报与历史回报的差异,从而减少梯度估计的方差。Moving Average baseline可以用表示,则策略梯度可以表示为:
      ∇ θ J ( θ ) = 1 N ∑ n = 1 N ∑ t = 0 T n − 1 ∇ θ l o g π θ ( a t ( n ) ∣ s t ( n ) ) ( R ( τ n ) − b M A ) (15) \begin{aligned} \nabla_{\theta}J(\theta)=\frac{1}{N}\sum_{n=1}^{N}\sum_{t=0}^{T_{n}-1}\nabla_{\theta}log\pi_{\theta}(a_{t}^{(n)}|s_{t}^{(n)})(R(\tau_{n})-b_{MA})\tag{15} \end{aligned} θJ(θ)=N1n=1Nt=0Tn1θlogπθ(at(n)st(n))(R(τn)bMA)(15)
  3. 备注:无论是采用 R ( τ n ) R(\tau_{n}) R(τn),还是采用 R ( τ n , t ) R(\tau_{n},t) R(τn,t),亦或是采用 R ( τ n ) − b M A R(\tau_{n})-b_{MA} R(τn)bMA,都是回报的一种计算方式,PPO章节会介绍回报计算方式的多种形式,这里暂不过多介绍。

参考

  1. 【RL第二篇】从策略梯度(Policy Gradient Algorithms)到REINFORCE算法原理详解
  2. 强化学习入门第三章 从Reinforce到Actor-Critic到PPO,弄懂策略梯度算法
  3. 人人都能看懂的RL-PPO理论知识
  4. 强化学习一锅端:一文梳理从PPO到GSPO强化学习发展历程
Logo

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

更多推荐