DDPG是加强学习的经典算法。我在上一篇文章中介绍了该算法的原理:加强学习条目8 -in -In -depphth Gearld Gealble DDPG)。
在学习Mo Fan Great God的教程中,Mo Fan DA使用TensorFlow实施的DDPG。因为我通常会使用更多的Pytorch,而当时,伟大的上帝使用的张曲流版本也很低,所以我使用Pytorch来复制DDPG。
注意:本文指的是Mo Fan God的TF版本的代码,指的是方式?https://mofanpy.com/tutorials/machine-rearning/reinforcement-rearning/intro-ddpg/
DDPG是确定性策略的梯度算法的深层确定性政策梯度。它基于参与者批评的结构并与DQN算法的想法结合在一起,因此它不仅可以解决离散的行动问题,还可以处理持续的行动问题。
不多说,直接应用代码
首先是定义演员和评论家的两个网络。
结合上图,演员的输入是当前状态,然后输出是一定的动作。
在此处添加运动输出,只是限制了动作范围。
除了当前的评论家网络输入状态外,还有Actor的动作输出,然后Q值输出,即,即
网络结构的定义相对简单。在这里DDPG学习此关键部分的方式。
我们知道DDPG有一个内存库,并且您每次在内存库中随机抽样的数据。这部分相对简单。
应当指出的是,在学习过程中,两个网络的错误是不同的。DDPG还借用了DQN的想法,除了演员和评论家的两个网络外,它们还定义了各自的目标网络。是计算下一个时刻的Q值以促进TD-Error的更新。TD-Error的定义是
td_error = mse(q(s,a),r+γqtarget(s',a'))
评论家网络根据TD-Error进行更新。
根据Q值对演员网络进行更新,如下所示:
该部分的完整代码如下:
在实施过程中,我们的目标网络还需要更新参数。实际上,目标参数的更新来自估计网络(即原始演员和评论家网络)。有两种更新参数的方法:
在行动的选择策略中增加探索。
实际上,这是通过增加一些随机噪声来增加对某些动作空间的探索。实践是调整差异。
最后,完整的代码已放置在GitHub中。