Pathwise Derivative Policy Gradient(PDPG) 是一种强化学习方法,可以解决连续动作的问题。
这和我们树枝的DDPG指的是相同的算法。
1. 前缀知识
如果想比较深刻的理解Pathwise Derivative Policy Gradient(PDPG)需要提前了解一下内容:
- Policy Gradient:https://blog.csdn.net/qq_33302004/article/details/115495686
- Q-Learning:https://blog.csdn.net/qq_33302004/article/details/114871232
- Actor-Critic:https://blog.csdn.net/qq_33302004/article/details/115530428
2. 如何理解这个算法
我们可以从两个角度来理解 Pathwise Derivative Policy Gradient(PDPG) 算法,一个是从Actor-Critic算法角度去看、另一个是从Q-Learning角度去看。
与Actor-Critic对比理解
PDPG算法可以理解为一种特别的Actor-Critic算法,其区别就是,传统的Actor-Critic算法是用 V π ( s ) V^{\pi}(s) Vπ(s)作为Critic,而PDPG算法是使用 Q π ( s , a ) Q^\pi(s,a) Qπ(s,a)作为Critic。
与Q-Learning对比理解
PDPG算法解决了 Q-Learning算法无法解决连动作的问题,我们都知道Q-Learning算法的决策思路是 π ( s ) = arg max a Q ( s , a ) \pi(s)=\argmax_aQ(s,a) π(s)=argmaxaQ(s,a),求解这个公式在离散问题中是很简单,但是在连续中是十分困难的。
所以我们就可以设计一个actor网络来替我们完成 π ( s ) = arg max a Q ( s , a ) \pi(s)=\argmax_aQ(s,a) π(s)=argmaxaQ(s,a)的工作,这样问题就解决了。
所以两个不同的观点是同一件事。
3. 算法过程
首先我们有个Q-Funtion,他的输入是s和a,输出就是
Q
π
(
s
,
a
)
Q^\pi(s,a)
Qπ(s,a)。然后我们的目标是训练一个actor,他可以解决
π
(
s
)
=
arg max
a
Q
(
s
,
a
)
\pi(s)=\argmax_aQ(s,a)
π(s)=argmaxaQ(s,a)的问题,输入是s,输出是最优的a。
大致过程是这样的:
- 我们有一个Actor,他先和环境互动产生样本;
- 然后我们利用样本去训练估计出 Q π Q^\pi Qπ;
- 训练好 Q π Q^\pi Qπ之后,我们固定其不动去训练Actor,他的目标就是输入 s,输出a,把输出的a和输入的s交给 Q π Q^\pi Qπ,让 Q π ( s , a ) Q^\pi(s,a) Qπ(s,a)越大越好。
从这个角度来理解 Pathwise Derivative Policy Gradient 方法和conditional GAN(条件GAN) 十分相似,Actor就是生成器,Q就是判别器。
在 Q-learning 里面,你用得上的技巧,在这边也几乎都用得上,比如说 replay buffer、exploration 等等。这里再从Q-Learning角度理解,Q-Learning的伪代码如下:
Pathwise Derivative Policy Gradient 的伪代码需要做如下修改: