machine-learning - 为什么 DQN 会为所有观察的 Action 空间 (2) 中的所有 Action 提供相似的值

标签 machine-learning computer-vision deep-learning keras q-learning

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

详细信息:

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

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

  • 衰减率(gamma)为 0.95

  • 前 3200 个操作的 epsilon 为 1(以填充一些重播内存),然后将超过 100,000 个步骤退火到值 0.01

  • 回放内存大小为 10,000

  • 转换网络的架构是:

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

最佳答案

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

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

关于machine-learning - 为什么 DQN 会为所有观察的 Action 空间 (2) 中的所有 Action 提供相似的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45462615/

相关文章:

python - Pytorch 是否允许将给定的转换应用于图像的边界框坐标?

tensorflow - 在神经网络中将批量大小或神经元数量视为 2 的幂的原因是什么?

r - 如何解释 R kmeans 函数的结果?

scala - 使用一种热编码和向量汇编器与向量索引器来处理分类特征

machine-learning - Q-learning更新频率

machine-learning - 在输入层中,input_dim和输入层上的节点数有什么区别?

image-processing - 小图像数据集的数据增强技术?

python - TensorFlow:如果 tf.train.batch 已经并行出队示例,并行排队示例是否会加快批量创建速度?

python - 验证数据的性能比 keras 中的训练数据差

tensorflow - 使用 Tensorflow 后端运行 Keras 时如何获得可重现的结果