DDPG

Thursday, March 4, 2021

DDPG的改进

DDPG可以被视为一个对传统PG算法的改进。在Policy Gradient一文中,我们提到了REINFORCE算法,它实际上与传统的蒙特卡洛法有些相似,都需要采样一个完整序列后才能进行训练。不仅如此,其每次训练需要重新采样,也就是说是一种on-policy的算法。DDPG算法对PG算法进行了改进,使其能够实现off-policy训练,并且能够使用经验回放池内的经验进行分组训练。相比于传统PG算法,DDPG提出了一种确定性的策略,也就是说DDPG认为针对某种状态,需要执行的动作是一定的。具体与PG算法的区别在重要性采样那一篇文章中有进行阐述。除此之外,DDPG还实现了soft update,相对来说在性能上也给出了一定的提升。

DDPG流程

主要流程与基于PG的AC算法相同,不同之处在于actor网络的更新方式以及对于DQN中Double Q网络思想的应用。在DDPG中,actor网络的策略梯度为:

\[ \begin{aligned} \nabla_{\theta} J\left(\mu_{\theta}\right) &=\left.\int_{\mathcal{S}} \rho^{\mu}(s) \nabla_{\theta} \mu_{\theta}(s) \nabla_{a} Q^{\mu}(s, a)\right|_{a=\mu_{\theta}(s)} \mathrm{d} s \\ &=\mathbb{E}_{s \sim \rho^{\mu}}\left[\left.\nabla_{\theta} \mu_{\theta}(s) \nabla_{a} Q^{\mu}(s, a)\right|_{a=\mu_{\theta}(s)}\right] \end{aligned} \]

也就是说,actor网络使用的目标函数\(J\left(\mu_{\theta}\right)\)为:

\[ J\left(\mu_{\theta}\right) = \mathbb{E}_{s \sim \rho^{\mu}}\left[ Q(s, \mu_{\theta}(s))\right] \]

在实际应用中,我们使用的是损失函数,因此需要对上述目标函数取负号。

DDPG具体流程如下:

强化学习

C51

Actor-Critic