当前位置: 首页 > 网络应用技术

使用Pytorch实现DDPG算法(具有完整的代码)

时间:2023-03-07 23:03:03 网络应用技术

  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中。