首页 文章

为什么DQN会为所有观察结果给动作空间(2)中的所有动作赋予类似的值

提问于
浏览
2

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

细节:

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

  • 我提供的奖励功能提供以下奖励:如果不是游戏结束则为0.1,如果游戏结束则为-1

  • 衰减率(gamma)为0.95

  • epsilon为前3200个动作为1(填充部分重放内存),然后退回超过100,000步,值为0.01

  • 重放内存的大小为10,000

  • 转换网的架构是:

  • 输入图层大小为screen_pixels

  • 转换层1具有32个带内核(8,8)和步幅(4,4)的过滤器,relu激活功能并在输出上填充为与输入相同的大小

  • conv layer 2带有64个带内核(4,4)和stride(2,2)的过滤器,relu激活功能,并在输出上填充为与输入相同的大小

  • 转换层3有64个带内核(3,3)和步幅(1,1)的过滤器,relu激活函数并在输出上填充为与输入相同的大小

  • 一个展平图层(这是为了改变数据的形状,然后将其输入完全连接的图层)

  • 具有512个节点的完全连接层和relu激活功能

  • 具有2个节点的输出完全连接层(动作空间)

  • 卷积神经网络的学习率为0.0001

  • 该代码是在keras中开发的,使用经验重播和双深q学习

  • 原始图像从(400,600,3)减少到(60,84,4),通过灰度,大小调整,裁剪,然后将4个图像堆叠在一起,然后再将其提供给转发网络

  • 目标网络每2个在线网络更新更新一次 .

1 回答

  • 1

    只要游戏没有结束,每一步都能提供0.1的积极奖励,这可能会使游戏超过-1的惩罚几乎无关紧要 . 特别是考虑到您使用的折扣因素 .

    如果不查看您的源代码很难判断,但我最初建议您在游戏结束时仅提供负面奖励并取消积极奖励 .

相关问题