文章目录
DDPG(Deep Deterministic Policy Gradient)
离散动作 v.s. 连续动作
动作空间的可数性,很好理解。例如,离散:只有上下左右四个动作;连续:方向盘转多少度
随机策略 v.s. 确定性策略
- 对随机性的策略来说,输入某一个状态 s,采取某一个 action 的可能性并不是百分之百,而是有一个概率 P 的,就好像抽奖一样,根据概率随机 sample 一个动作。
- 而对于确定性的策略来说,它没有概率的影响。当神经网络的参数固定下来了之后,输入同样的 state,必然输出同样的 action,这就是确定性的策略。
常见的处理:
- 随机性策略神经网络的输出会加上 softmax 层, s o f t m a x f u n c t i o n ≜ σ ( z j ) = e z j ∑ k = 1 K e z k softmax function \triangleq \sigma(z_j) = \frac{e^{z_j}}{\sum_{k=1}^K e^{z_k}} softmaxfunction≜σ(zj)=∑k=1Kezkezj 以保证所有的动作概率和为1
- 确定性策略神经网络的输出先加一层 t a n h tanh tanh 保证输出的范围是 [-1, 1],再经过缩放之后变成真实的 action
DDPG
- Deterministic 直接输出确定性动作
- 策略更新是单步的
- 策略网络参数是 θ \theta θ ,Q 网络参数是 w w w
- 称这样的结构为
Actor-Critic
的结构。
优化:
- DQN只需优化Q网络,且类似于一个
regression problem
, l o s s = M S E ( Q ^ , Q t a r g e t ) loss = MSE(\hat{Q},Q_{target}) loss=MSE(Q^,Qtarget) - DDPG需要优化策略网络和Q网络
- 策略网络就是为了最大化Q值,所以 l o s s = − Q loss = -Q loss=−Q
- Q网络的优化和DQN一样
Trick: target network + Replay Memory
注意,因为 DDPG 使用了经验回放这个技巧,所以 DDPG 是一个 off-policy
的算法。
Exploration v.s. Exploitation
DDPG
通过 off-policy
的方式来训练一个确定性策略。因为策略是确定的,如果 agent 使用同策略来探索,在一开始的时候,它很可能不会尝试足够多的 action 来找到有用的学习信号。为了让 DDPG 的策略更好地探索,我们在训练的时候给它们的 action 加了噪音(通常是均值为0的 gaussian noise)。但是测试的时候就不会加噪声了
Twin Delayed DDPG(TD3) “双”“延迟”深度确定性策略网络
虽然 DDPG 有时表现很好,但它在超参数和其他类型的调整方面经常很敏感。DDPG 常见的问题是已经学习好的 Q 函数开始显著地高估 Q 值,然后导致策略被破坏了,因为它利用了 Q 函数中的误差。
解决方法:引入三个技巧
-
“双”:**截断的双Q学习(clipped double Q-learning):**TD3 学习两个 Q-function(因此名字中有 “twin”)。TD3 通过 minimize MSE 来同时学习两个 Q-function: Q ϕ 1 Q_{\phi_1} Qϕ1 和 Q ϕ 2 Q_{\phi_2} Qϕ2。两个 Q-function 都使用一个 target,两个 Q-function 中给出较小的值会被作为如下的 Q-target:
Q t a r g e t ( r , s ′ , d ) = r + γ ( 1 − d ) min i = 1 , 2 Q ϕ i , t a r g e t ( s ′ , a T D 3 ( s ′ ) ) Q_{target}(r,s',d) = r + \gamma (1-d) \underset{i=1,2}{\operatorname{min}}Q_{\phi_i,target}\left(s',a_{TD3}(s')\right) Qtarget(r,s′,d)=r+γ(1−d)i=1,2minQϕi,target(s′,aTD3(s′)) -
“延迟”:延迟的策略更新(“Delayed” Policy Updates):相关实验结果表明,同步训练动作网络和评价网络,却不使用目标网络,会导致训练过程不稳定;但仅固定动作网络时,评价网络往往能够收敛到正确的结果。因此 TD3 算法以较低的频率更新动作网络,较高频率更新评价网络,通常每更新两次评价网络才更新一次策略。
-
目标策略平滑(Target Policy smoothing):TD3 引入了 smoothing 的思想。TD3 在目标动作中加入噪音,通过平滑 Q 沿动作的变化,使策略更难利用 Q 函数的误差。工作原理如下:
a TD3 ( s ′ ) = clip ( μ θ , t a r g e t ( s ′ ) + clip ( ϵ , − c , c ) , a l o w , a h i g h ) a_{\operatorname{TD3}}(s') = \operatorname{clip}\left( \mu_{\theta,target}(s')+\operatorname{clip}(\epsilon, -c, c), a_{low}, a_{high} \right) aTD3(s′)=clip(μθ,target(s′)+clip(ϵ,−c,c),alow,ahigh)
其中 ϵ 本质上是一个噪声,是从正态分布中取样得到的,即 ϵ ∼ N ( 0 , σ ) \epsilon \sim \operatorname{N}(0,\sigma) ϵ∼N(0,σ)
TD3 的作者给出了对应的实现:TD3 Pytorch implementation