学习DDPG算法总结


参考资料

1. 强化学习算法_个人理解

1. Q-learning

  • Q-learning是通过不停地探索和更新Q表中的Q值从而计算出机器人行动的最佳路径。
  • 更新策略:
    Q ( s , a ) ← Q ( s , a ) + α ( r + γ m a x a ′ Q ( s ′ , a ′ ) − Q ( s , a ) ) Q(s,a)\gets Q(s,a)+\alpha (r+\gamma max_{a'}Q(s',a')-Q(s,a) ) Q(s,a)Q(s,a)+α(r+γmaxaQ(s,a)Q(s,a))

2. DQN

  • DQN是将 Q-learning 的优势 与Neural network相 结合。Q-learning对于每一个 (state, action) 的值都需要存放在一张 q_table 的表中. 如果对于高维环境空间state非常多的情况下,无论是存储和检索q_table表都非常困难。这就是 DQN 产生的原因了. 我们可以使用神经网络来估算这个 (state,action) 的值,这样就不需要一张表了。DQN输入state,神经网络输出所有 action 的值, 并选择值最大的 action值。
  • 虽然DQN解决了高维环境空间的问题,但它只能处理离散和低维动作空间。但是DQN不能应用于连续的动作域,因为它依赖于找到最大化action-value的动作,而在连续值情况下,每一步都需要迭代优化过程。

3. Policy Gradient(PG)

  • Policy gradient 不像 Value-based 方法 (Q learning, DQN), 但他也要接受环境信息 (observation), 不同的是他要输出不是 action 的 value, 而是具体的那一个 action, 这样 policy gradient 就跳过了 value 这个阶段。
  • 而且Policy gradient 最大的一个优势是: 输出的这个 action 可以是一个连续的值,,value-based 方法输出的都是不连续的值, 然后再选择值最大的 action. 而 policy gradient 可以在一个连续分布上选取 action。

4. Actor-Critic

  • Actor-Critic 都能用不同的神经网络来代替, Actor 的前生是 Policy Gradient,能在连续的动作空间中输出动作, Critic 的前生是 Q-learning 或者其他的以值为基础的学习法 , 能进行单步更新, 而传统的 Policy Gradients 则是回合更新。
  • Critic 通过学习环境和奖励之间的关系, 能看到现在所处状态的潜在奖励, 所以用它来指点 Actor 便能使 Actor 每一步都在更新

5. Deep Deterministic Policy Gradient(DDPG)

  • DDPG是一种基于确定性策略梯度的actor-critic,model-free算法,可以在连续的动作空间中运行。可以把DDPG理解为actor-critic与DQN的结合。

2. DDPG原理

DDPG 全称是:Deep Deterministic Policy Gradient

  • DDPG 中所用到的神经网络.和之前提到的 Actor-Critic 相似,也需要有基于策略 Policy 的神经网络和基于价值 Value 的神经网络, 但是为了体现 DQN 的思想, 每种神经网络都需要再细分为两个。
  • actor这边, 有online policy网络和target policy网络,online policy网络用来输出实时的动作,供 actor 在现实中实行,而target policy网络则是用来更新价值网络系统的。
  • 而critic这边, 也有现实网络(online Q)和估计网络(target Q)。他们的输入端有所不同,状态现实网络(online Q)会拿着从动作现实网络来的动作 a i a_i ai加上状态的观测值 s i s_i si加以分析, 而状态估计网络(target Q)则是拿着actor执行动作 a a a之后,到达的下一状态 s i + 1 s_{i+1} si+1,与动作 a i + 1 ( a_{i+1}( ai+1( a i + 1 = μ ( s i + 1 ) a_{i+1}=\mu(s_{i+1}) ai+1=μ(si+1)),当做输入。
    在这里插入图片描述

DDPG实现框架和算法


在这里插入图片描述


DDPG更新actor-critic的理解


Actor-Critic算法把策略函数和价值函数分别用单独的网络来近似, 策略函数作为Actor来做动作选择,价值函数作为Critic来对策略函数进行评估,根据Critic的输出来更新价值网络和策略网。


critic网络的更新


更新critic网络的损失函数定义为:
(2) L ( θ Q ) = E s t ∼ ρ β , a t ∼ β , r t ∼ E [ ( Q ( s t , a t ∣ θ Q ) − y t ) 2 ] \tag{2}L(\theta^Q)=E_{s_t\thicksim \rho^\beta,a_t\thicksim\beta,r_t\thicksim E}[(Q(s_t,a_t\mid\theta^Q)-y_t)^2] L(θQ)=Estρβ,atβ,rtE[(Q(st,atθQ)yt)2](2)

where
(3) y t = r ( s t , a t ) + γ Q ( s t + 1 , μ ( s t + 1 ) ∣ θ Q ) \tag{3}y_t=r(s_t,a_t)+\gamma Q(s_{t+1},\mu(s_{t+1})\mid \theta^Q) yt=r(st,at)+γQ(st+1,μ(st+1)θQ)(3)

通过最小化 L ( θ Q ) L(\theta^Q) L(θQ)对critic网络进行更新。


这是什么意思呢?

  • Q ( s t , a t ) Q(s_t,a_t) Q(st,at)代表在 s t s_t st状态下执行动作 a t a_t at得到的最大未来回报。但目前最大未来回报尚不准确,需要对其进行更新。

  • r ( s t , a t ) r(s_t,a_t) r(st,at)是在 s t s_t st状态下执行动作 a t a_t at得到的环境所给的现实奖励。

  • Q ( s t + 1 , μ ( s t + 1 ) ∣ θ Q ) Q(s_{t+1},\mu(s_{t+1})\mid \theta^Q) Q(st+1,μ(st+1)θQ)代表在 s t s_t st状态下执行动作 a t a_t at到达下一状态 s t + 1 s_{t+1} st+1后,继续按照策略 μ \mu μ,执行下一动作 μ ( s t + 1 ) \mu(s_{t+1}) μ(st+1),得到的下一个状态 s t + 1 s_{t+1} st+1的最大未来回报

  • y t y_t yt可以看做"标签",表示在 s t s_t st状态下执行动作 a t a_t at后,得到的正确的最大未来回报。仔细想想这是正确的,在 s t s_t st状态下执行动作 a t a_t at后的最大未来回报是即时奖励回报 r ( s t , a t ) r(s_t,a_t) r(st,at)加上下一种状态的最大未来回报 Q ( s t + 1 , μ ( s t + 1 ) ∣ θ Q ) Q(s_{t+1},\mu(s_{t+1})\mid \theta^Q) Q(st+1,μ(st+1)θQ)

怎么更新呢?

  • 我们的目的是要使最大未来回报 Q ( s , a ) Q(s,a) Q(s,a)是正确的
  • 既然已经知道在 s t s_t st状态下执行动作 a t a_t at后尚不正确的最大未来回报 Q ( s , a ) Q(s,a) Q(s,a),和正确的最大未来回报 y t y_t yt,那更新当然是要让 Q ( s , a ) Q(s,a) Q(s,a)接近于 y t y_t yt
  • 通过将loss函数 L ( θ Q ) L(\theta^Q) L(θQ)定义为 Q ( s , a ) Q(s,a) Q(s,a) y t y_t yt的均方误差,然后最小化 L ( θ Q ) L(\theta^Q) L(θQ),就能使 Q ( s , a ) Q(s,a) Q(s,a)朝着接近于 y t y_t yt的方向更新,以获得正确的最大未来回报。

actor网络的更新

策略梯度的想法就是沿着使未来回报 Q ( s , a ) Q(s,a) Q(s,a)变大的方向调整策略的参数。


policy gradient算法如下:
(1) ∇ θ μ J ≈ E s t ∼ ρ β [ ∇ θ μ Q ( s , a ∣ θ Q ) ∣ s = s t , a = μ ( s t ∣ θ μ ) ] = E s t ∼ ρ β [ ∇ a Q ( s , a ∣ θ Q ) ∣ s = s t , a = μ ( s t ) ∇ θ μ μ ( s ∣ θ μ ) ∣ s = s t ] \tag{1}\nabla_{\theta ^\mu}J \approx E_{s_t\thicksim \rho^\beta} [\nabla_{\theta ^\mu}Q(s,a\mid \theta^Q)\mid_{s=s_t,a=\mu(s_t\mid \theta^\mu)}] =E_{s_t\thicksim \rho^\beta} [\nabla_{a}Q(s,a\mid \theta^Q)\mid_{s=s_t,a=\mu(s_t)}\nabla_{\theta^\mu}\mu(s\mid \theta^\mu)\mid_{s=s_t}] θμJEstρβ[θμQ(s,aθQ)s=st,a=μ(stθμ)]=Estρβ[aQ(s,aθQ)s=st,a=μ(st)θμμ(sθμ)s=st](1)


  • 关于 Actor 部分, 他的参数更新会涉及到 Critic
  • 前半部分 ∇ a Q ( s , a ∣ θ Q ) ∣ s = s t , a = μ ( s t ) \nabla_{a}Q(s,a\mid \theta^Q)\mid_{s=s_t,a=\mu(s_t)} aQ(s,aθQ)s=st,a=μ(st)是从 Critic 来的, 这是在说: actor要做出哪一个动作, 才能获得更大的Q值—也就是更大的未来回报。
  • 而后半部分 ∇ θ μ μ ( s ∣ θ μ ) ∣ s = s t \nabla_{\theta^\mu}\mu(s\mid \theta^\mu)\mid_{s=s_t} θμμ(sθμ)s=st是从 Actor 来的, 这是在说: Actor 要怎么样修改自身参数, 使得 Actor 更有可能做这个动作。
  • 所以两者合起来就是在说: Actor 要朝着更有可能获取大Q值—更大未来回报的方向修改动作参数。

在这里插入图片描述

  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜菜菜菜菜菜菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值