【深度强化学习】DDPG算法

1 DDPG简介

  • 确定性策略梯度(Deterministic Policy Gradient,DPG):确定性策略是和随机策略相对而言的。作为随机策略,在同一个状态处,采用的动作是基于一个概率分布,即是不确定的。而确定性策略则决定简单点,只取最大概率的动作,去掉这个概率分布。作为确定性策略,在同一个状态处,动作是唯一确定的,即策略变成:

π θ ( s ) = a \pi_\theta(s)=a πθ(s)=a

  • DDPG的提出其实是为了让DQN可以扩展到连续的动作空间
  • DDPG借鉴了DQN的两个技巧:经验回放 & 目标网络
  • DDPG使用策略网络直接输出确定性动作
  • DDPG使用了Actor-Critic的架构

2 DDPG原理

DDPG有四个网络:分别是 Actor当前网络Actor目标网络Critic当前网络Critic目标网络
Critic当前网络、Critic目标网络 和DDQN的当前Q网络、目标Q网络的功能定位类似,但是DDPG有自己的Actor策略网络,因此不需要 ϵ \epsilon ϵ-贪婪法这样的策略,这部分DDQN的功能到了DDPG可以在Actor当前网络完成。而对经验回放池中采样的下一状态 S ′ S^\prime S使用贪婪法选择动作 A ′ A^\prime A,这部分工作由于用来估计目标Q值,因此可以放到Actor目标网络完成。

基于经验回放池和目标Actor网络提供的 S ′ , A ′ S^\prime,A^\prime S,A计算目标Q值的一部分,这部分由于是评估,因此放到Critic目标网络完成。而Critic目标网络计算出目标Q值一部分后,Critic当前网络会计算目标Q值,并进行网络参数的更新,并定期讲网络参数复制到Critic目标网络。
此外,Actor当前网络也会基于Critic目标网络计算出的目标Q值,进行网络参数的更新,并定期将网络参数复制到Actor目标网络。

根据上面的思路,总结DDPG 4个网络的功能定位:

  1. Actor当前网络:负责策略网络参数 θ \theta θ的迭代更新,负责根据当前状态 S S S选择当前动作 A A A,用于和环境交互生成 S ′ , R S^\prime,R S,R
  2. Actor目标网络:负责根据经验回放池中采样的下一状态 S ′ S^\prime S选择最优下一动作 A ′ A^\prime A。网络参数 θ ′ \theta^\prime θ定期从 θ \theta θ复制。
  3. Critic当前网络:负责价值网络参数 w w w的迭代更新,负责计算当前Q值 Q ( S , A , w ) Q(S,A,w) Q(S,A,w)。目标Q值 y i = R + γ Q ′ ( S ′ , A ′ , w ′ ) y_i=R+\gamma Q^\prime (S^\prime,A^\prime,w^\prime) yi=R+γQ(S,A,w)
  4. Critic目标网络:负责计算目标Q值中的 Q ′ ( S ′ , A ′ , w ′ ) Q^\prime (S^\prime,A^\prime,w^\prime) Q(S,A,w)部分。网络参数 w ′ w^\prime w定期从 w w w复制。

此外,DDPG从当前网络到目标网络的复制和我们之前讲到了DQN不一样。回想DQN,我们是直接把将当前Q网络的参数复制到目标Q网络,即w′=w, DDPG这里没有使用这种硬更新,而是使用了软更新,即每次参数只更新一点点,即: w ′ ← τ w + ( 1 − τ ) w ′ w^\prime\leftarrow \tau w+(1-\tau)w^\prime wτw+(1τ)w θ ′ ← τ θ + ( 1 − τ ) θ ′ \theta^\prime\leftarrow \tau\theta+(1-\tau)\theta^\prime θτθ+(1τ)θ其中τ是更新系数,一般取的比较小,比如0.1或者0.01这样的值。

同时,为了学习过程可以增加一些随机性,增加学习的覆盖,DDPG对选择出来的动作 A A A会增加一定的噪声 N \mathcal{N} N,即最终和环境交互的动作 A A A的表达式是: A = π θ ( S ) + N A=\pi_\theta(S)+\mathcal{N} A=πθ(S)+N

3 DDPG 算法流程

输入: Actor当前网络 、Actor目标网络、Critic当前网络、Critic目标网络,参数分别为 θ , θ ′ , w , w ′ \theta,\theta^\prime,w,w^\prime θ,θ,w,w,衰减因子 γ \gamma γ,软更新系数 τ \tau τ,批量梯度下降的样本数 m m m,目标Q网络参数更新频率 C C C,最大迭代次数 T T T,随机噪声函数 N \mathcal{N} N
输出: 最优Actor当前网络参数 θ \theta θ,Critic当前网络参数 w w w

  1. 随机初始化 θ , w , w ′ = w , θ ′ = θ \theta,w,w^\prime=w,\theta^\prime=\theta θ,w,w=w,θ=θ。清空经验回放集 D D D
  2. for i from 1 to T,进行迭代:
    a) 初始化S为当前状态序列的第一个状态,拿到其特征向量 ϕ ( S ) \phi(S) ϕ(S)
    b) 在Actor当前网络基于状态 S S S得到动作 A = π θ ( ϕ ( S ) ) + N A=\pi_\theta(\phi(S))+\mathcal{N} A=πθ(ϕ(S))+N
    c) 执行动作 A A A,得到新状态 S ′ S^\prime S,奖励 R R R,是否终止状态 i s _ e n d is\_end is_end
    d) 将五元组 { ϕ ( S ) , A , R , ϕ ( S ′ ) , i s _ e n d } \left\{ \phi(S),A,R,\phi(S^\prime),is\_end\right\} {ϕ(S),A,R,ϕ(S),is_end}存入经验回放集 D D D
    e) S = S ′ S=S^\prime S=S
    f) 从经验回放集合 D D D中采样 m m m个样本 { ϕ ( S j ) , A j , R j , ϕ ( S j ′ ) , i s _ e n d j } , j = 1 , 2 , … , m \left\{ \phi(S_j),A_j,R_j,\phi(S_j^\prime),is\_end_j\right\},j=1,2,\dots,m {ϕ(Sj),Aj,Rj,ϕ(Sj),is_endj},j=1,2,,m,计算当前目标Q值 y j y_j yj y j = { R j i s _ e n d   i s   t r u e R j + γ Q ′ ( ϕ ( S j ′ ) , π θ ′ ( ϕ ( S j ′ ) ) , w ′ ) i s _ e n d   i s   f a l s e y_j= \begin{cases} R_j & is\_end\ is\ true \\ R_j+\gamma Q^\prime(\phi(S_j^\prime),\pi_{\theta^\prime}(\phi(S^\prime_j)),w^\prime) & is\_end\ is\ false \end{cases} yj={RjRj+γQ(ϕ(Sj),πθ(ϕ(Sj)),w)is_end is trueis_end is false
    g) 使用均方差损失函数 1 m ∑ j = 1 m ( y j − Q ( ϕ ( S j ) , A j , w ) ) 2 \frac{1}{m}\sum^m_{j=1}\left( y_j-Q(\phi(S_j),A_j,w)\right)^2 m1j=1m(yjQ(ϕ(Sj),Aj,w))2,通过神经网络的梯度反向传播来更新Critic当前网络参数 w w w
    h) 使用 J ( θ ) = − 1 m ∑ j = 1 m Q ( s i , a i , θ ) J(\theta)=-\frac{1}{m}\sum^m_{j=1}Q(s_i,a_i,\theta) J(θ)=m1j=1mQ(si,ai,θ),通过神经网络的梯度反向传播来更新Actor当前网络参数 θ \theta θ
    i) 如果 t % C = 1 t\%C=1 t%C=1,则更新Critic目标网络和Actor目标网络参数: w ′ ← τ w + ( 1 − τ ) w ′ w^\prime\leftarrow \tau w+(1-\tau)w^\prime wτw+(1τ)w θ ′ ← τ θ + ( 1 − τ ) θ ′ \theta^\prime\leftarrow \tau\theta+(1-\tau)\theta^\prime θτθ+(1τ)θ
    j) 如果 S ′ S^\prime S为终止状态,当前episode迭代结束,否则转到步骤b

DDPG学习笔记参考刘建平:深度确定性策略梯度(DDPG)

你可能感兴趣的:(强化学习,Notes)