美文网首页嵌牛IT观察
强化学习算法(二)DDPG

强化学习算法(二)DDPG

作者: 嚸蕶 | 来源:发表于2020-11-10 14:52 被阅读0次

    姓名:张轩

    学号:20011214440

    【嵌牛导读】在强化学习算法(一)这篇文章中我给大家介绍了A3C这一算法,讨论了使用多线程的方法来解决Actor-Critic难收敛的问题。这篇文章中介绍一种不使用多线程,而是使用和DDQN类似的方法:即经验回放和双网络的方法来改进Actor-Critic难收敛的问题,这个算法就是是深度确定性策略梯度(Deep Deterministic Policy Gradient,以下简称DDPG)。

    【嵌牛鼻子】强化学习,DDPG 

    转载 https://blog.csdn.net/qq_30615903/article/details/80776715

    【嵌牛正文】

    1.算法思想

    Deep:首先Deep我们都知道,就是更深层次的网络结构,我们之前在DQN中使用两个网络与经验池的结构,在DDPG中就应用了这种思想。

    PolicyGradient:顾名思义就是策略梯度算法,能够在连续的动作空间根据所学习到的策略(动作分布)随机筛选动作

    Deterministic : 它的作用就是用来帮助Policy Gradient不让他随机选择,只输出一个动作值

           ·随机性策略,∑ π ( a ∣ s ) = 1 策略输出的是动作的概率,使用正态分布对动作进行采样选择,即每个动作都有概率被选到;优点,将探索和改进集成到一个策略中;缺点,需要大量训练数据。

           ·确定性策略,π ( s ) S → A策略输出即是动作;优点,需要采样的数据少,算法效率高;缺点,无法探索环境。然而因为我们引用了DQN的结构利用offPolicy采样,这样就解决了无法探索环境的问题

    从DDPG网络整体上来说:他应用了 Actor-Critic 形式的, 所以也具备策略 Policy 的神经网络 和基于 价值 Value 的神经网络,因为引入了DQN的思想,每种神经网络我们都需要再细分为两个, Policy Gradient 这边,我们有估计网络和现实网络,估计网络用来输出实时的动作, 供 actor 在现实中实行,而现实网络则是用来更新价值网络系统的。再看另一侧价值网络, 我们也有现实网络和估计网络, 他们都在输出这个状态的价值, 而输入端却有不同, 状态现实网络这边会拿着从动作现实网络来的动作加上状态的观测值加以分析,而状态估计网络则是拿着当时 Actor 施加的动作当做输入。

    DDPG 在连续动作空间的任务中效果优于DQN而且收敛速度更快,但是不适用于随机环境问题。

    2、公式推导

    再来啰唆一下前置公式

    s_t:在t时刻,agent所能表示的环境状态,比如观察到的环境图像,agent在环境中的位置、速度、机器人关节角度等;

    a_t​:在t时刻,agent选择的行为(action)

    r(s_t,a_t):函数: 环境在状态st 执行行为at后,返回的单步奖励值;

    R_t:是从当前状态直到将来某个状态中间所有行为所获得奖励值的之和当然下一个状态的奖励值要有一个衰变系数 γ \gammaγ 一般情况下可取0到1的小数

    R_t=∑_{i=t}γ^{i−t}r(s_i,a_i)

    Policy Gradient

    通过概率的分布函数确定最优策略,在每一步根据该概率分布获取当前状态最佳的动作,产生动作采取的是随机性策略

    a_t ∼π_θ(s_t|θ^π)

    目标函数:J(\pi_\theta)=∫_Sρ^\pi(s)∫_A\pi_\theta(s,a)r(s,a)dads=E_{s∼ρ^\pi,a∼\pi_\theta}[r(s,a)]

    梯度:∇_θJ(π_θ)=∫_Sρ^\pi(s)∫_A∇_θ\pi_\theta(s,a)Q^\pi(s,a)dads=E_{s∼ρ^\pi,a∼\pi_\theta}[∇_θlog\pi_\theta(a|s)Q^\pi(s,a)]

    Deterministic Policy Gradient

    因为Policy Gradient是采取随机性策略,所以要想获取当前动作action就需要对最优策略的概率分布进行采样,而且在迭代过程中每一步都要对整个动作空间进行积分,所以计算量很大

    在PG的基础上采取了确定性策略,根据行为直接通过函数μ确定了一个动作,可以吧μ理解成一个最优行为策略

    a_t=μ(s_t|θ^μ)

    performance objective为

    J(μ_\theta)=∫_Sρ^μ(s)r(s,μ_\theta(s))ds

    J(μ_\theta)=E_{s∼ρ^μ}[r(s,μ_\theta(s))]

    deterministic policy梯度

     ▽_\theta J(μ_\theta)=∫_Sρ^μ(s)▽\theta μ_\theta(s)Q^μ(s,a)|_{a=μ_\theta}ds=E_{s∼ρ^β}[▽\theta μ_\theta(s)Q^μ(s,a)|_{a=μ_\theta}]

    DDPG就是用了确定性策略在DPG基础上结合DQN的特点建议改进出来的算法

    Deep Deterministic Policy Gradient

    所以基于上述两种算法

    DDPG采用确定性策略μ来选取动作 a t = μ ( s t ∣ θ μ ) a_t=μ(s_t|θ^μ)at​=μ(st​∣θμ) 其中θ μ θ^μθμ是产生确定性动作的策略网络的参数。根据之前提到过的AC算与PG算法我们可以想到,使用策略网络μ来充当actor,使用价值网络来拟合(s,a)函数,来充当critic的角色,所以将DDPG的目标函数就可以定义为

    J(θ^μ)=E_{θ^μ}[r_1+γr_2+γ^2r_3+⋯]

    此时Q函数表示为在采用确定性策略μ下选择动作的奖励期望值,在DDPG我们就采用DQN的结构使用Q网络来拟合Q函数

    Q^μ(s_t,a_t)=E [r(s_t,a_t)+γQ^μ(s_{t+1},μ(s_{t+1}))]

    Q网络中的参数定义为\theta^QQ^μ(s,μ(s))表示使用μ策略在s状态选选取动作所获取的回报期望值,又因为是在连续空间内所以期望可用积分来求,则可以使用下式来表示策略μ的好坏

    J_β(μ)=∫_Sρ^β(s)Q^μ(s,μ(s))ds=E_{s∼ρ^β}[Q^μ(s,μ(s)]

    behavior policy β: 在常见的RL训练过程中存在贪婪策略来平衡exploration和exploit与之类似,在DDPG中使用Uhlenbeck-Ornstein随机过程(下面简称UO过程),作为引入的随机噪声:UO过程在时序上具备很好的相关性,可以使agent很好的探索具备动量属性的环境exploration的目的是探索潜在的更优策略,所以训练过程中,我们为action的决策机制引入随机噪声:

    过程如下图所示:

    Silver大神证明了目标函数采用μ策略的梯度与Q函数采用μ策略的期望梯度是等价的:

    因为是确定性策略a = μ ( s ∣ θ μ ) a=μ(s|θ^μ)a=μ(s∣θμ)所以得到Actor网络的梯度为

    在另一方面Critic网络上的价值梯度为

    损失函数采取均方误差损失MSE,另外在计算策略梯度期望的时候仍然选择蒙特卡罗法来取无偏估计(随机采样加和平均法)

    我们有了上述两个梯度公式就可以使用梯度下降进行网络的更新

    网络结构图如下因为引用了DQN的结构,所以就多了一个target网络

    相关文章

      网友评论

        本文标题:强化学习算法(二)DDPG

        本文链接:https://www.haomeiwen.com/subject/nuhvvktx.html