为什么 DQN 会为所有观测值为操作空间 (2) 中的所有操作提供相似的值



我有一个学习的 DQN 算法(损失收敛到 0(,但不幸的是,它学习了一个 Q 值函数,使得 2 个可能动作中每个动作的 Q 值都非常相似。值得注意的是,Q值在每个观测值中变化很小。

详:

  • 该算法从OpenAI Gym播放CartPole-v1,但使用屏幕像素作为观察值,而不是提供的4个值

  • 我提供的奖励
  • 功能提供的奖励为:如果游戏没有结束,则为 0.1,如果游戏结束,则为 -1

  • 衰变率(伽马(为0.95

  • 对于前 3200 个动作(填充一些重播内存(,epsilon 为 1,然后退火超过 100,000 步,值为 0.01

  • 重播内存大小为 10,000

  • 卷网的架构是:

    • 大小为 screen_pixels 的输入层
    • CONV 第 1 层,具有 32 个过滤器,带有内核 (8,8( 和跨步 (4,4(,RELU 激活功能,并在输出上填充为与输入相同的大小
    • CONV 第 2 层,具有 64 个过滤器,带有内核 (4,4( 和跨步 (2,2(,RELU 激活功能,并在输出上填充为与输入相同的大小
    • CONV 第 3 层,具有 64 个过滤器,带有内核 (3,3( 和跨步 (1,1(,RELU 激活功能,并在输出上填充为与输入相同的大小
    • 一个
    • 扁平层(这是为了改变数据的形状,使其能够馈送到一个完全连接的层中(
    • 全连接层,512节点,relu激活功能
    • 具有 2 个节点的输出全连接层(动作空间(
  • 卷积神经网络的学习率为 0.0001
  • 该代码是在 keras 中开发的,并使用经验回放和双深度 q 学习
  • 原始图像从 (400, 600, 3( 减少到 (60, 84, 4(,方法是灰度缩放、调整大小、裁剪,然后将 4 张图像堆叠在一起,然后再将其提供给卷积网
  • 目标网络每 2 次在线网络更新更新一次。

只要游戏没有结束,每一步提供 0.1 的正奖励可能会使游戏超过 -1 的惩罚几乎无关紧要。特别是考虑到您正在使用的折扣系数。

如果不查看源代码,很难判断,但我最初建议您在游戏结束时仅提供负奖励并删除正奖励。

相关内容

  • 没有找到相关文章

最新更新