在我的笔记DRL(四)——value function中,大部分讲了Q Learning的算法、存在的问题和解决的措施。这一个笔记的内容是紧接上一篇的。
为什么要提出DDPG呢?
因为不管是DQN也好,DDQN也好,都是离散动作的,就是说,action是有限的。然而很多时候action都是连续的,这时候就需要新的方法了。
在连续动作空间中怎样选择最优action呢?
我们知道,在离散动作的Q Learning中,我们是通过
arg
a
m
a
x
Q
(
S
′
,
a
′
)
\arg_a~max~Q(S',a')
arga max Q(S′,a′)来选择最大的Q值对应的动作a。但是如果是连续动作,我们就不太可能计算出所有动作的Q值了。
解决办法肯定是有的!
- sample several actions from continuous action space。这种方法比较简单但是就是不够准确。
- CrossEntropy Method
- use function class that is easy to optimize, like the Normalized Advantage Function. 这种方法虽然很容易得到max,但是有其他弊端。
- learn an approximate maximizer——DDPG
我们训练一个 μ(θ) ,通过这个能够得到Q最大的动作。
然后完整的DDPG就是这样:
因为Q Learning是deterministic policy,这一点与AC是不同的,AC是stochastic policy。μ就仅仅是找出arg max。
实际操作一个DDPG
看了很多代码,各种复杂的有,跑不了的也有,……最后还是找到一个可以方便使用的。
代码的话,使用了两个AC,为了soft replacement,非常简洁。算法也和课程里的不一样:
怎么说,这个清楚明了吧。
具体解析参考这个大佬写的
这是在下手动整理的算法
一些Q Learning的小技巧