PPO算法理论

发布时间:2024年01月09日

一、深度强化学习理论基础

1.1 马尔可夫决策过程

强化学习中,智能体(强化学习中独立的能够思想并可以同环境交互的实体)和环境一直在交互。在智能体和环境交互的过程中会产生一个序列: S 0 , A 0 , R 1 , S 1 , A 1 , R 2 , ? S_0,A_0,R_1,S_1,A_1,R_2,\cdots S0?,A0?,R1?,S1?,A1?,R2?,?,其中, S S S 为状态, A A A 为动作, R R R为奖励。马尔可夫过程将这种序列决策过程公式化。在概率论和统计学中,如果随机过程的未来状态的条件概率分布仅取决于当前状态,而不取决于过去事件的顺序,则该随机过程具有马尔可夫特性。具有这种特征的过程称为马尔可夫过程,数学表达式为:

P [ S t + 1 ∣ S t ] = P [ S t + 1 ∣ S 1 , ? ? , S t ] P[S_{t+1}|S_t]=P[S_{t+1}|S_1,\cdots,S_t] P[St+1?St?]=P[St+1?S1?,?,St?]

马尔可夫决策过程(Markov decision processes, MDP)提供一个建模决策制定的数学模型,它是一个离散随机的控制过程。在一个时间步内,决策者处在一个状态 s s s,根据这个状态选择一个任意的动作 a a a。在下一个时间步,根据当前状态 s s s 和随机动作 a a a 进入到下一个状态 s ′ s^\prime s ,环境给予决策者下一状态的奖赏 reward。可以用元组 ( S , A , P , R , γ ) (S,A,P,R,\gamma) (S,A,P,R,γ) 来描述马尔可夫决策过程,其中 S S S 为有限状态集, A A A 为动作空 间, P P P 为状态转移概率矩阵, R R R 为奖励函数, γ \gamma γ 为折扣因子。马尔可夫决策过程状态转移过程包含动作,这是与马尔可夫过程不同的地方。马尔可夫决策过程又基于基本的马尔可夫假设,即下一状态的概率分布只由当前状态决定,在时间序列中其他任何历史信息均与之无关。马尔可夫决策过程的目标是找到一个最大化随机奖励的累积函数的策略

1.2 策略与值函数

(1)值函数

通常用状态-动作值函数、状态值函数来评价智能体在环境中的某个状态和某 个状态选择动作的好坏。

状态-动作值函数表示根据策略 π \pi π 在状态 s s s 选择行为 a a a 之后能够得到的期望回报。 其表达式为:
v x ( s ) ? E r [ G t ∣ ∣ S t = s ] = E π [ ∑ k = 0 ∞ γ k R t + k + 1 ∣ S t = s ] v_x(s)\doteq\Bbb{E}_r[G_t||S_t=s]=\Bbb{E}_\pi\Big[\sum_{k=0}^\infty\gamma^kR_{t+k+1}|S_t=s\Big] vx?(s)?Er?[Gt?∣∣St?=s]=Eπ?[k=0?γkRt+k+1?St?=s]

状态值函数表示在状态 s s s 下,根据某个策略 π \pi π 选择行为能够得到的期望回报。 其表达式为:
q z ( s , a ) = E π [ ∑ h = 0 ∞ γ k R t + k + 1 ∣ S t = s , A t = a ] q_z(s,a)=\Bbb{E}_\pi\Big[\sum_{h=0}^\infty\gamma^kR_{t+k+1}|S_t=s,A_t=a\Big] qz?(s,a)=Eπ?[h=0?γkRt+k+1?St?=s,At?=a]

值函数是对策略的评价,如果策略 π \pi π 是有限个,可以对全部的策略 π \pi π 进行对比, 选择出最优的策略 π ? \pi^\ast π? ,表达式为:
? s , π ? = arg?max ? V π ( s ) \forall s,\pi^\ast = \argmax V^\pi(s) ?s,π?=argmaxVπ(s)

如果策略数量较多,实现起来较为困难。则可以通过迭代的方式不断更新优化策略,从而选出最佳策略。对于一个策略 π ( a ∣ s ) \pi(a|s) π(as),定义它的值函数为 Q π ( s , a ) Q^\pi(s,a) Qπ(s,a),设置新的策略 π ′ ( a ∣ s ) \pi^\prime(a|s) π(as),表达式为:
π ′ ( a ∣ s ) = arg?max ? a Q π ( s , a ) \pi^\prime(a|s)=\argmax_a Q^\pi(s,a) π(as)=aargmax?Qπ(s,a)

执行 π ′ \pi^\prime π,则有,
? s , V π ′ ≥ V π ( s ) \forall s,V^{\pi^\prime}\geq V^\pi(s) ?s,VπVπ(s)

因此可以通过此方法获得最优策略:随机初始策略,计算该策略的值函数, 根据值函数反复迭代更新新的策略,直到策略收敛到最优。基于值函数更新策略的方法主要有动态规划、蒙特卡洛方法、时序差分算法。

(2)策略梯度

策略梯度的算法是通过梯度下降的方法来进行优化。策略梯度的方法目标是找到最优的神经网络参数 θ ? \theta^\ast θ? 从而使得总收益函数关于轨迹分布的期望最大化。

策略梯度算法的目标函数的梯度通过推导后变为:
? J ( θ ) = E τ ~ p θ ( τ ) [ ( ∑ t = 1 T ? θ log ? π θ ( a t ∣ s t ) ) ( ∑ t = 1 T r ( s t , a t ) ) ] \nabla J(\theta)=\Bbb{E}_{\tau\sim p_\theta(\tau)}\Big[\big(\sum_{t=1}^T\nabla_\theta\log\pi_\theta(a_t|s_t)\big)\big(\sum_{t=1}^Tr(s_t,a_t)\big)\Big] ?J(θ)=Eτpθ?(τ)?[(t=1T??θ?logπθ?(at?st?))(t=1T?r(st?,at?))]

从实际系统中取样的时候,通过下式进行估算,
? J ( θ ) ≈ 1 N ∑ i = 1 N [ ( ∑ t = 1 T ? θ log ? π θ ( a i , t ∣ s i , t ) ) ( ∑ t = 1 T r ( s i , t , a i , t ) ) ] \nabla J(\theta)\approx\dfrac{1}{N}\sum_{i=1}^N\Big[\big(\sum_{t=1}^T\nabla_\theta\log\pi_\theta(a_{i,t}|s_{i,t})\big)\big(\sum_{t=1}^Tr(s_{i,t},a_{i,t})\big)\Big] ?J(θ)N1?i=1N?[(t=1T??θ?logπθ?(ai,t?si,t?))(t=1T?r(si,t?,ai,t?))]

最后对参数进行更新。
θ ← θ + α ? θ J ( θ ) \theta\leftarrow\theta+\alpha\nabla_\theta J(\theta) θθ+α?θ?J(θ)

式中各个参数含义见下

参数含义
J J J目标函数
a t a_t at? t t t 时刻智能体动作
s t s_t st? t t t 时刻智能体状态
r ( s t , a t ) r(s_t,a_t) r(st?,at?) t t t 时刻当前状态 s s s 与采取动作 a a a 的奖励函数
N N N样本

1.3 Actor-Critic (演员-评论家)算法框架

深度强化学习融合了强化学习与深度学习,是二者优势的结合。深度学习可以通过端到端的方式进行非线性的拟合,强化学习可以解决决策的问题,将二者结合起来形成深度强化学习算法。

Actor-Critic(演员-评论家)算法框架融合了前文介绍的值函数估计与策略搜索的算法,集成二者的优点而广泛应用于 深度强化学习算法中,是解决强化学习最常考虑的算法。Actor-Critic算法解决了基于值函数方法的 High bias(高偏差)和基于策略方法的 High Variance(高方差)问题,即设计一个智能体既能直接输出策略又能通过值函数评价当前策略的优劣。引用深度学习中的深度网络来拟合输出的值函数和策略,随着不断更新迭代,策略会越来越接近最优,值函数评价也会更加准确。
在这里插入图片描述
Actor-Critic架构包括两个部分,即两个神经网络:策略神经网络负责生成策略。其输入为状态 s s s,输出为动作 a a a,用来拟合策略模型 π θ ( a ∣ s ) \pi_\theta(a|s) πθ?(as)。评论神经网络负责生成值函数来评估策略的价值。其输入为状态 s s s,输出为 q ( s , a ) q(s,a) q(s,a),用于拟合值函数 Q ( s , a ) Q(s,a) Q(s,a)。算法的执行过程如下:
在这里插入图片描述
Actor-Critic算法是优秀的算法,深度神经网络可以通过网络参数仿真演员和评论家的参数,通过深度学习进行求解。基础的 Actor-Critic 算法框架比较简单, 可以看作是基于策略方法的延伸,后文采用的PPO算法是其衍生版本。

二、近端策略优化算法(PPO)

对于连续动作的深度强化学习算法常用方法是基于Actor-Critic框架算法的变形。PPO(Proximal Policy Optimization)近端策略优化算法是 2017 年由 OpenAI 提出的一种基于 Actor-Critic(AC)框架的强化学习的基准算法,它不仅有很好的性能(尤其是对于连续控制问题),同时相较于之前的TRPO方法更加易于实现。目标是使用当前拥有的数据在策略上采取最大可能的改进步骤,而又不会走得太远而导致意外导致性能下降。

在众多强化学习算法中,PPO 具有适应性强,训练稳定等优点。PPO算法是策略梯度算法。策略梯度算法的更新对步长非常敏感,但是很难选择合适的步长。 在训练过程中,很容易使新旧策略之间的差异过大,这不利于有效策略的产生。 PPO 提出的目标函数可以在多回合训练中以小数量样本迭代更新,解决了策略梯度算法中步长难以确定和更新差异过大的问题。

2.1 算法框架及流程

PPO 算法是以演员评论家网络为基础,其具体框架如图
在这里插入图片描述
算法流程大致分为三步,如下:
在这里插入图片描述

2.2 损失函数设计

其评论家网络的更新与传统的 AC 算法并无太大差异,演员网络采用了新的思路进行参数更新。PPO 算法中加入一项比例来描述新旧策略的差异,使得采样数量减少也可以训练好的效果
r t ( θ ) = π θ ( a t ∣ s t ) π θ k ( a t ∣ s t ) r_t(\theta)=\dfrac{\pi_\theta(a_t|s_t)}{\pi_{\theta_k}(a_t|s_t)} rt?(θ)=πθk??(at?st?)πθ?(at?st?)?

在此基础上制定的目标函数为:
L C L I P ( θ ) = E t ^ [ min ? ( r t ( θ ) A ^ t , c l i p ( r t ( θ ) , 1 ? ε , 1 + ε ) ) ] L^{CLIP}(\theta)=\hat{E_t}\Big[\min\big(r_t(\theta)\hat{A}_t,clip(r_t(\theta),1-\varepsilon,1+\varepsilon)\big)\Big] LCLIP(θ)=Et?^?[min(rt?(θ)A^t?,clip(rt?(θ),1?ε,1+ε))]

其中, θ \theta θ 为策略参数, r t ( θ ) r_t(\theta) rt?(θ) 为新旧策略出现概率的比值, A ^ t \hat{A}_t A^t? t t t 时刻的优势函数, ε \varepsilon ε 为超参数通常取值 0.1、0.2, E ^ t \hat{E}_t E^t? 表示经验期望。

2.3 优势函数估计

采用优势函数的一般估计(GAE),其借鉴了时序差分算法的思想,其计算公式为:
A ^ t G A E ( γ , λ ) : = ( 1 ? λ ) ( A ^ t ( 1 ) + λ A ^ t ( 2 ) + λ 2 A ^ t ( 3 ) + ? ) = ( 1 ? λ ) ( δ t V + λ ( δ t V + γ δ t + 1 V ) + λ 2 ( δ t V + γ δ t + 1 V + γ 2 δ t + 2 V ) + ? ) = ( 1 ? λ ) ( δ t V ( 1 + λ + λ 2 + ? ? ) + γ δ t + 1 V ( λ + λ 2 + λ 3 + ? ? ) + γ 2 δ t + 2 V ( λ 2 + λ 3 + λ 4 + ? ? ) + ? ) = ( 1 ? λ ) ( δ t V ( 1 1 ? λ ) + γ δ t + 1 V ( λ 1 ? λ ) + γ 2 δ t + 2 V ( λ 2 1 ? λ ) ) = ∑ l = 0 ∞ ( γ λ ) l δ t + 1 V \begin{aligned} \hat{A}^{GAE(\gamma,\lambda)}_t:&=(1-\lambda)\big(\hat{A}_t^{(1)}+\lambda\hat{A}_t^{(2)}+\lambda^2\hat{A}_t^{(3)}+\cdots\big)\\[2ex] &=(1-\lambda)\big(\delta_t^V+\lambda(\delta_t^V+\gamma\delta_{t+1}^V)+\lambda^2(\delta_t^V+\gamma\delta_{t+1}^V+\gamma^2\delta_{t+2}^V)+\cdots\big)\\[2ex] &=(1-\lambda)\big(\delta_t^V(1+\lambda+\lambda^2+\cdots)+\gamma\delta_{t+1}^V(\lambda+\lambda^2+\lambda^3+\cdots)\\[2ex] &+\gamma^2\delta_{t+2}^V(\lambda^2+\lambda^3+\lambda^4+\cdots)+\cdots\big)\\[2ex] &=(1-\lambda)\big(\delta_t^V(\dfrac{1}{1-\lambda})+\gamma\delta_{t+1}^V(\dfrac{\lambda}{1-\lambda})+\gamma^2\delta_{t+2}^V(\dfrac{\lambda^2}{1-\lambda})\big)\\[2ex] &=\sum_{l=0}^\infty(\gamma\lambda)^l\delta_{t+1}^V \end{aligned} A^tGAE(γ,λ)?:?=(1?λ)(A^t(1)?+λA^t(2)?+λ2A^t(3)?+?)=(1?λ)(δtV?+λ(δtV?+γδt+1V?)+λ2(δtV?+γδt+1V?+γ2δt+2V?)+?)=(1?λ)(δtV?(1+λ+λ2+?)+γδt+1V?(λ+λ2+λ3+?)+γ2δt+2V?(λ2+λ3+λ4+?)+?)=(1?λ)(δtV?(1?λ1?)+γδt+1V?(1?λλ?)+γ2δt+2V?(1?λλ2?))=l=0?(γλ)lδt+1V??

其中, A ^ t G A E ( γ , λ ) \hat{A}_t^{GAE(\gamma,\lambda)} A^tGAE(γ,λ)? 为优势函数, γ \gamma γ 一般取 0.99, λ \lambda λ 一般取 0.95 -1, δ t V \delta_t^V δtV? 为时序差分误差。其计算公式为:
δ t V = r t + γ V ( s t + 1 ) ? V ( s t ) \delta_t^V=r_t+\gamma V(s_{t+1})-V(s_t) δtV?=rt?+γV(st+1?)?V(st?)

其中, V ( s t ) V(s_t) V(st?) 为值函数, r t r_t rt? 为奖励函数。

文章来源:https://blog.csdn.net/m0_72748751/article/details/135473728
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。