是什么让您在您的环境中实施 DDPG?

人工智能 强化学习 执行 ddpg 超参数
2021-11-07 22:00:22

我正在研究具有固有随机性的调度问题。动作空间和状态空间的维度分别为 1 和 5。

我正在使用DDPG,但它似乎非常不稳定,到目前为止它并没有显示出太多的学习。我试过

  1. 调整学习率,
  2. 剪辑渐变,
  3. 更改重播缓冲区的大小,
  4. 不同的神经网络架构,使用 SGD 和 Adam,
  5. 改变τ用于软更新。

所以,我想知道人们对这个算法的体验,对于在纸上测试的环境以及其他环境。哪些超参数值对您有用?或者你做了什么?微调有多麻烦?

我不认为我的实现是不正确的,因为我几乎复制了这个,而且我发现的所有其他实现都完全相同。

(另外,我不确定这一定是发布此类问题的最佳网站,但我决定试一试。)

1个回答

以下是一些帮助我在类似Reacher的环境中加速 DDPG 训练的调整

  • 与原始论文相比,减小了神经网络的大小。代替:

2 个隐藏层,分别有 400 和 300 个单位

我为两个隐藏层使用了 128 个单位。我在您的实现中看到您使用了 256,也许您可​​以尝试减少它。

  • 正如论文中所建议的,我添加了批量标准化:

...手动缩放功能,使它们在不同环境和单位中处于相似的范围内。我们通过采用来自深度学习的最新技术来解决这个问题,称为批量标准化(Ioffe & Szegedy,2015)。该技术对小批量中样本的每个维度进行归一化,以获得单位均值和方差。

您使用的实现似乎不包括这个。

  • 降低价值σ,这是用于启用探索的 Ornstein-Uhlenbeck 过程的参数。原来是0.2, 我用了0.05. (我在您的代码中找不到此参数的设置位置。)

我不完全确定这是否会对您的环境有所帮助,但这只是为了给您一些想法。

PS:是我构建 DDPG 所遵循的代码的链接,是每集的奖励图。