DDPG(Deep Deterministic Policy Gradient)

Hi,这是第二篇算法简介呀

论文链接:“Continuous control with deep reinforcement learning.” ,2016

文章概述

  这篇文章在确定性策略的基础上,结合Actor-Critic,提出了一种model-free的算法。直接输入原始像素,端到端(end-to-end)学习策略,输出确定动作。
  2000年提出PG(Policy Gradient)算法,通过改变动作的出现概率来优化策略,使得total reward最大化, L ( θ ) = − ∑ log ⁡ π ( a ∣ s , θ ) f ( s , a ) L(\theta)=-\sum \log \pi(a | s, \theta) f(s, a) L(θ)=logπ(as,θ)f(s,a)(损失函数通常需要最小化,所以加一个负号)。其中, f ( s , a ) f(s,a) f(s,a)为评价指标(reward或 Q Q Q A A A,或使用TD)。
  2013年提出DQN(Deep Q-Network)算法。
  2014年提出DPG(Deterministic Policy Gradient)算法。PG算法无法解决连续控制的问题,因为PG算法学习得到了随机策略之后,在每一步行为时还需要对得到的最优策略概率分布进行采样,才能获得action的具体值;而action通常是高维的向量,需要耗费大量计算。DPG算法直接对轨迹的价值函数求导,即 ∇ θ v μ θ ( s ) = ∇ θ [ Q μ ( s , μ θ ( s ) ) ] \nabla_{\theta} v_{\mu_{\theta}}(s)=\nabla_{\theta}\left[Q_{\mu}\left(s, \mu_{\theta}(s)\right)\right] θvμθ(s)=θ[Qμ(s,μθ(s))](链式求导可得, ∇ θ v μ ( s ) = ∇ μ θ ( s ) [ Q μ ( s , μ θ ( s ) ) ] ∇ θ μ θ ( s ) \nabla_{\theta} v_{\mu}(s)=\nabla_{\mu_{\theta}(s)}\left[Q_{\mu}\left(s, \mu_{\theta}(s)\right)\right] \nabla_{\theta} \mu_{\theta}(s) θvμ(s)=μθ(s)[Qμ(s,μθ(s))]θμθ(s)),因此它不用完成最优动作选取的过程,每一步的动作通过函数 μ μ μ直接获得确定的值。DPG值函数评估采用的是Q-learning的方法,使用TD(0)估计动作值函数并忽略重要性权重,利用replay buffer中随机抽取的数据集对策略进行训练。
  2016年提出DDPG(Deep Deterministic Policy Gradient)算法,是Actor-Critic和DQN的结合,同时加入了BatchNormalization对输入进行预处理。Actor网络对应DPG算法,将特定state映射到特定action,Critic网络则对应Q-learning,使用价值函数对动作进行评估。Target网络的参数使用软更新,而不是直接复制Policy网络的参数,虽然使得学习变化放缓,但是增强了学习的稳定性。为了可以不断地探索空间,在探索策略 μ ′ \mu' μ通过OU(Ornstein-Uhlenbeck)过程添加噪声样本。

公式理解

  • 未来折扣回报
    R t = ∑ i = t T γ ( i − t ) r ( s i , a i ) R_{t}=\sum_{i=t}^{T} \gamma^{(i-t)} r\left(s_{i}, a_{i}\right) Rt=i=tTγ(it)r(si,ai)
  • 动作值函数
    Q π ( s t , a t ) = E r i ≥ t , s i > t ∼ E , a i > t ∼ π [ R t ∣ s t , a t ] Q^{\pi}\left(s_{t}, a_{t}\right)=\mathbb{E}_{r_{i \geq t}, s_{i>t} \sim E, a_{i>t} \sim \pi}\left[R_{t} | s_{t}, a_{t}\right] Qπ(st,at)=Erit,si>tE,ai>tπ[Rtst,at]
  • Bellman方程
    Q π ( s t , a t ) = E r t , s t + 1 ∼ E [ r ( s t , a t ) + γ E a t + 1 ∼ π [ Q π ( s t + 1 , a t + 1 ) ] ] Q^{\pi}\left(s_{t}, a_{t}\right)=\mathbb{E}_{r_{t}, s_{t+1} \sim E}\left[r\left(s_{t}, a_{t}\right)+\gamma \mathbb{E}_{a_{t+1} \sim \pi}\left[Q^{\pi}\left(s_{t+1}, a_{t+1}\right)\right]\right] Qπ(st,at)=Ert,st+1E[r(st,at)+γEat+1π[Qπ(st+1,at+1)]]
  • 确定性策略 μ \mu μ
    Q μ ( s t , a t ) = E r t , s t + 1 ∼ E [ r ( s t , a t ) + γ Q μ ( s t + 1 , μ ( s t + 1 ) ) ] Q^{\mu}\left(s_{t}, a_{t}\right)=\mathbb{E}_{r_{t}, s_{t+1} \sim E}\left[r\left(s_{t}, a_{t}\right)+\gamma Q^{\mu}\left(s_{t+1}, \mu\left(s_{t+1}\right)\right)\right] Qμ(st,at)=Ert,st+1E[r(st,at)+γQμ(st+1,μ(st+1))]
  • 函数逼近器(Critic更新目标)
    L ( θ Q ) = E s t ∼ ρ β , a t ∼ β , r t ∼ E [ ( Q ( s t , a t ∣ θ Q ) − y t ) 2 ] L\left(\theta^{Q}\right)=\mathbb{E}_{s_{t} \sim \rho^{\beta}, a_{t} \sim \beta, r_{t} \sim E}\left[\left(Q\left(s_{t}, a_{t} | \theta^{Q}\right)-y_{t}\right)^{2}\right] L(θQ)=Estρβ,atβ,rtE[(Q(st,atθQ)yt)2]其中, y t = r ( s t , a t ) + γ Q ( s t + 1 , μ ( s t + 1 ) ∣ θ Q ) y_{t}=r\left(s_{t}, a_{t}\right)+\gamma Q\left(s_{t+1}, \mu\left(s_{t+1}\right) | \theta^{Q}\right) yt=r(st,at)+γQ(st+1,μ(st+1)θQ)
  • Actor更新目标
    ∇ θ μ 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 ] \nabla_{\theta^{\mu}} J \approx \mathbb{E}_{s_{t} \sim \rho^{\beta}}[\left.\nabla_{\theta^{\mu}} Q\left(s, a | \theta^{Q}\right)\right|_{s=s_{t}, a=\mu\left(s_{t} | \theta^{\mu}\right)}]=\mathbb{E}_{s_{t} \sim \rho^{\beta}}[\left.\left.\nabla_{a} Q\left(s, a | \theta^{Q}\right)\right|_{s=s_{t}, a=\mu\left(s_{t}\right)} \nabla_{\theta_{\mu}} \mu\left(s | \theta^{\mu}\right)\right|_{s=s_{t}}] θμJEstρβ[θμQ(s,aθQ)s=st,a=μ(stθμ)]=Estρβ[aQ(s,aθQ)s=st,a=μ(st)θμμ(sθμ)s=st]
  • Target网络参数软更新
    θ ′ ← τ θ + ( 1 − τ ) θ ′ \theta^{\prime} \leftarrow \tau \theta+(1-\tau) \theta^{\prime} θτθ+(1τ)θ
  • 探索过程中增加噪声
    μ ′ ( s t ) = μ ( s t ∣ θ t μ ) + N \mu^{\prime}\left(s_{t}\right)=\mu\left(s_{t} | \theta_{t}^{\mu}\right)+\mathcal{N} μ(st)=μ(stθtμ)+N

伪代码分析

DDPG(Deep Deterministic Policy Gradient)_第1张图片

试验结果分析

DDPG(Deep Deterministic Policy Gradient)_第2张图片

代码实现

github传送门:https://github.com/floodsung/DDPG

你可能感兴趣的:(Learning))