【强化学习】DDPG(DeepDeterministicPolicyGradient)算法详解

更新时间:2023-07-18 08:10:15 阅读: 评论:0

【强化学习】DDPG(DeepDeterministicPolicyGradient)算法详解
www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching.html
引⽤莫凡⽼师的素材 morvanzhou.github.io/tutorials/machine-learning/reinforcement-learning/6-2-DDPG/引⾃Reinforcement Learning:An Introduction强化学习名著2018新编版
DPG论⽂www0.cs.ucl.ac.uk/staff/d.silver/web/Applications_files/deterministic-policy-gradients.pdf
PolicyGradient论⽂www.ics.uci.edu/~dechter/cours/ics-295/winter-2018/papers/2000-nips12-sutton-mcallester-policy-gradient-methods-for-reinforcement-learning-with-function-approximation.pdf
DDPG论⽂www0.cs.ucl.ac.uk/staff/d.silver/web/Applications_files/ddpg.pdf
DQN论⽂hio-state.edu/~wang.7642/homepage/files/Peidong_Wang_DQN.pdf
【强化学习】DDPG(Deep Deterministic Policy Gradient)算法详解
之前我们在Actor-Critic上⾯提到过了DDPG,现在本篇详细讲解,因为Actor-Critic收敛慢的问题所以Deepmind 提出了 Actor Critic 升级版 Deep Deterministic Policy Gradient,后者融合了 DQN 的优势, 解决了收敛难的问题。
1、算法思想
DDPG我们可以拆开来看Deep Deterministic Policy Gradient市场调查问卷
Deep:⾸先Deep我们都知道,就是更深层次的⽹络结构,我们之前在DQN中使⽤两个⽹络与经验池的结构,在DDPG中就应⽤了这种思想。
PolicyGradient:顾名思义就是策略梯度算法,能够在连续的动作空间根据所学习到的策略(动作分布)随机筛选动作
Deterministic : 它的作⽤就是⽤来帮助Policy Gradient不让他随机选择,只输出⼀个动作值
随机性策略, 策略输出的是动作的概率,使⽤正态分布对动作进⾏采样选择,即每个动作都有概率被选到;优点,将探索和改进集成到⼀个策略中;缺点,需要⼤量训练数据。
确定性策略, 策略输出即是动作;优点,需要采样的数据少,算法效率⾼;缺点,⽆法探索环境。然⽽因为我们引⽤了
DQN的结构利⽤offPolicy采样,这样就解决了⽆法探索环境的问题
从DDPG⽹络整体上来说:他应⽤了 Actor-Critic 形式的, 所以也具备策略 Policy 的神经⽹络 和基于 价值 Value 的神经⽹络,因为引⼊了DQN的思想,每种神经⽹络我们都需要再细分为两个, Policy Gradient 这边,我们有估计⽹络和现实⽹络,估计⽹络⽤来输出实时的动作, 供 actor 在现实中实⾏,⽽现实⽹络则是⽤来更新价值⽹络系统的。再看另⼀侧价值⽹络, 我们也有现实⽹络和估计⽹络,他们都在输出这个状态的价值, ⽽输⼊端却有不同, 状态现实⽹络这边会拿着从动作现实⽹络来的动作加上状态的观测值加以分析,⽽状
态估计⽹络则是拿着当时 Actor 施加的动作当做输⼊。
DDPG 在连续动作空间的任务中效果优于DQN⽽且收敛速度更快,但是不适⽤于随机环境问题。
2、公式推导
π(a ∣s )=∑1π(s )S →A
再来啰唆⼀下前置公式
:在t时刻,agent所能表⽰的环境状态,⽐如观察到的环境图像,agent在环境中的位置、速度、机器⼈关节⾓度等;
:在t时刻,agent选择的⾏为(action)
报账员岗位职责
:函数: 环境在状态st 执⾏⾏为at后,返回的单步奖励值;
:是从当前状态直到将来某个状态中间所有⾏为所获得奖励值的之和当然下⼀个状态的奖励值要有⼀个衰变系数  ⼀般情况下可取0到1的⼩数
Policy Gradient:
通过概率的分布函数确定最优策略,在每⼀步根据该概率分布获取当前状态最佳的动作,产⽣动作采
取的是随机性策略
⽬标函数:(注意dads不是什么未知的符号,⽽是积分的 da ds)梯度:Deterministic Policy Gradient:
因为Policy Gradient是采取随机性策略,所以要想获取当前动作action就需要对最优策略的概率分布进⾏采样,⽽且在迭代过程中每⼀步都要对整个动作空间进⾏积分,所以计算量很⼤
在PG的基础上采取了确定性策略,根据⾏为直接通过函数μ确定了⼀个动作,可以吧μ理解成⼀个最优⾏为策略
performance objective为
deterministic policy梯度
DDPG就是⽤了确定性策略在DPG基础上结合DQN的特点建议改进出来的算法
捧心西子Deep Deterministic Policy Gradient
所以基于上述两种算法
DDPG采⽤确定性策略μ来选取动作  其中是产⽣确定性动作的策略⽹络的参数。根据之前提到过的AC算与PG算法我们可以想到,使⽤策略⽹络μ来充当actor,使⽤价值⽹络来拟合(s,a)函数,来充当critic的⾓⾊,所以将DDPG的⽬标函数就可以定义为此时Q函数表⽰为在采⽤确定性策略μ下选择动作的奖励期望值,在DDPG我们就采⽤DQN的结构使⽤Q⽹络来拟合Q函数
Q⽹络中的参数定义为,表⽰使⽤μ策略在s状态选选取动作所获取的回报期望值,⼜因为是在连续空间内所以期望可⽤积分来求,则可以使⽤下式来表⽰策略μ的好坏
s t a t r (s ,a )t t R t γR =t γr (s ,a )
∑i =t i −t i i a ∼t π(s ∣θ)
女王的英语怎么说
θt πJ (π)=θρ(s )π(s ,a )r (s ,a )dads =∫S π∫A θE [r (s ,a )]s ∼ρ,a ∼ππθ∇J (π)=θθρ(s )∇π(s ,a )Q (s ,a )dads =∫S π∫A θθπE [∇logπ(a ∣s )Q (s ,a )]
s ∼ρ,a ∼ππθθθπa =t μ(s ∣θ)
t μJ (μ)=θρ(s )r (s ,μ(s ))ds
∫S μθJ (μ)=θE [r (s ,μ(s ))]
粽子做法
玫瑰卡s ∼ρμθ▽J (μ)=θθρ(s )▽θμ(s )Q (s ,a )∣ds =∫S μθμa =μθE [▽θμ(s )Q (s ,a )∣]
香菇功效s ∼ρβθμa =μθa =t μ(s ∣θ)t μθμJ (θ)=μE [r +θμ1γr +2γr +23⋯]
Q (s ,a )=μt t E [r (s ,a )+t t γQ (s ,μ(s ))]
μt +1t +1θQ Q (s ,μ(s ))μJ (μ)=βρ(s )Q (s ,μ(s ))ds =∫S βμE [Q (s ,μ(s )]
s ∼ρβμ
behavior policy β: 在常见的RL训练过程中存在贪婪策略来平衡exploration和exploit与之类似,在DDPG中使⽤Uhlenbeck-Ornstein随机过程(下⾯简称UO过程),作为引⼊的随机噪声:UO过程在时序上具备很好的相关性,可以使agent很好的探索具备动量属性的环境exploration的⽬的是探索潜在的更优策略,所以训练过程中,我们为action的决策机制引⼊随机噪声:
过程如下图所⽰:关于开学的黑板报
Silver⼤神证明了⽬标函数采⽤μ策略的梯度与Q函数采⽤μ策略的期望梯度是等价的:
因为是确定性策略所以得到Actor⽹络的梯度为
在另⼀⽅⾯Critic⽹络上的价值梯度为
损失函数采取均⽅误差损失MSE,另外在计算策略梯度期望的时候仍然选择蒙特卡罗法来取⽆偏估计(随机采样加和平均法)
=∂θμ∂J (θ)μE []
s ∂θμ∂Q (s ,a ∣θ)Q a =μ(s ∣θ)μ=∂θμ∂J (θ)μE []
s ∂a ∂Q (s ,a ∣θ)Q ∂θμ∂π(s ∣θ)μ▽J (μ)=θβθρ(s )▽μ(s )Q (s ,a )∣ds =∫S βθθμa =μθE [▽μ(s )Q (s ,a )∣]
s ∼ρβθθμa =μθ=∂θQ ∂L (θ)Q E [(TargetQ −Q (s ,a ∣θ)
]s ,a ,r ,s ′∼D Q ∂θQ ∂Q (s ,a ∣θ)Q TargetQ =r +γQ ′(s ′,π(s ′∣θ)∣θ)
μ′Q ′
我们有了上述两个梯度公式就可以使⽤梯度下降进⾏⽹络的更新
⽹络结构图如下因为引⽤了DQN的结构,所以就多了⼀个target⽹络
3、代码实现
morvanzhou.github.io/tutorials/引⽤morvan⽼师的源码
import tensorflow as tf
import numpy as np
import gym
import time
>>>>#  hyper parameters  >>>>
MAX_EPISODES = 200
MAX_EP_STEPS = 200
LR_A = 0.001    # learning rate for actor
LR_C = 0.002    # learning rate for critic
GAMMA = 0.9    # reward discount
TAU = 0.01      # soft replacement
MEMORY_CAPACITY = 10000
BATCH_SIZE = 32
RENDER = Fal
ENV_NAME = 'Pendulum-v0'
>>>>>>#  DDPG  >>>>>>>#
class DDPG(object):
def __init__(lf, a_dim, s_dim, a_bound,):
< = np.zeros((MEMORY_CAPACITY, s_dim * 2 + a_dim + 1), dtype=np.float32)        lf.pointer = 0
lf.ss = tf.Session()
lf.a_dim, lf.s_dim, lf.a_bound = a_dim, s_dim, a_bound,
lf.S = tf.placeholder(tf.float32, [None, s_dim], 's')
lf.S_ = tf.placeholder(tf.float32, [None, s_dim], 's_')

本文发布于:2023-07-18 08:10:15,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1102742.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:策略   动作   状态   函数   环境
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图