Q*bert 中的最佳探索-开发权衡是什么?

人工智能 强化学习 q学习 dqn 深度学习 探索-开发-权衡
2021-10-31 10:30:51

我正在 Q*bert Atari 环境中使用 Deep Q-learning + Experience Replay 训练 RL 代理。在 400,000 帧之后,我的代理似乎已经了解了有关游戏的战略信息,但没有了解环境。据了解,一个好的即时策略是简单地跳下对角线和板的下降,从而完成第一级的大部分。但是,仍然要了解板的边界以防止跳下,也不了解如何避免敌人。我在这里问这个,而不是 Stack Overflow,因为这是一个更普遍的问题,在编程理解方面的需求较少。简单地说,我在问这是否与孔隙勘探政策有关(我假设)。如果你同意,

根据评论请求:

您能否添加您当前的探索方法是什么,以及您在深度 Q 学习实施中使用了哪些选项(例如重放大小、批量大小、NN 架构、每个目标网络副本的步数,或者您是否使用不同的更新机制来实现目标网络)。此外,如果您使用与经典 DQN 论文不同的任何其他方法,例如状态表示。

这是我的参数:

  • 探索策略:epsilon =min(1.0, 1000 / (frames + 1))
  • 回放内存 = 20,000 帧
  • 批量大小 = 32 个转换
  • NN架构:Conv2D(64, 3, 2), Dropout(0.2), Dense(32, relu), Dense(32, relu), Dense(num_actions, linear)
  • 每个目标网络副本的步数:100
1个回答

我可以在你的实施中发现三,也许四,可能导致你观察到的学习不完整的事情。

长期探索更多

我认为您已经正确地确定了探索可能是一个问题。在离策略学习(Q-learning 就是其中的一个例子)中,通常设置一个最小探索率。这是您需要管理的超参数。设置得太高,代理将永远不会体验到最好的奖励,因为它会犯太多错误。设置得太低,当有机会学习它们时,代理将无法探索到找到正确的替代动作。

我会为你建议类似的东西:

epsilon = max(min(1.0, 1000 / (frames + 1)), 0.01)

您可以选择 0.01 以外的数字,但我认为这对于许多 Atari 游戏来说是一个合理的开始。你可以尝试更高,在对错误更宽容的游戏中达到 0.1。

删除辍学

我不知道为什么,但我总是遇到 RL 神经网络中的 dropout 问题。尝试删除 dropout 层。

更多卷积层

对于视觉和基于网格的问题,卷积层是非常有效的泛化器。但是,您不会从单层中真正受益。我会再添加两个,增加输出通道的数量。

也许是国家代表?

从您的描述中不清楚您是使用单色帧表示状态,还是使用堆叠的灰度帧表示最后 3 个输入。应该是后者,如果你想更接近地复制原始的 DQN Atari 论文,你应该把前面的 4 帧作为输入。

此外,您应该将输入标准化为范围[0,1]或者[-1,1]. 本机图像范围[0,255]对于神经网络来说处理起来很棘手,如果你不规范化,价值函数就会卡住很常见。