鉴于OpenAI Gym环境MountainCar-v0始终会返回-1.0作为奖励(即使达到目标),我不了解具有体验重播功能的DQN如何收敛,但是我知道这样做,因为我有working code证明这一点。通过工作,我的意思是说,当我训练代理时,代理会迅速(在300-500集内)学习如何解决山地车问题。以下是我训练有素的代理商的示例。
machine-learning - DQN在奖励始终为-1的环境中如何工作-LMLPHP

据我了解,最终需要找到一个“稀疏奖励”。但据我从openAI Gym code所看到的,除-1之外没有任何其他奖励。感觉更像是一个“无奖励”的环境。

什么几乎可以回答我的问题,但实际上并不能回答:当任务快速完成时,情节的回报(奖励总和)会更大。因此,如果汽车未找到标志,则返回值为-1000。如果汽车迅速找到该标志,则返回值可能是-200。之所以不能回答我的问题,是因为使用DQN和体验重播时,体验重播内存中永远不会出现这些回报(-1000,-200)。所有的内存都是元组形式的(状态,动作,奖励,next_state),当然请记住,元组是从内存中随机抽取的,而不是逐集地提取。

这种特定的OpenAI Gym环境的另一个元素是,在两种情况下都会返回“完成”状态:击中标志(是)(Yay)或经过一定数量的步骤后超时(boos)。但是,代理将两者对待,接受-1的奖励。因此,就记忆中的元组而言,从奖励的角度来看,两个事件看起来都是相同的。

因此,我在内存中看不到任何表明该情节执行良好的内容。

因此,我不知道为什么此DQN代码适用于MountainCar。

最佳答案

之所以可行,是因为在Q学习中,您的模型正在尝试估算每个可能的操作的所有将来奖励的SUM(技术上是时间衰减的总和)。在MountainCar中,您直到获胜之前,每一步都会获得-1的奖励,因此,如果您设法赢得了胜利,最终得到的负面奖励将比平时少。例如,您获胜后的总得分可能是-160而不是-200,因此您的模型将开始为历来导致赢得比赛的动作预测更高的Q值。

关于machine-learning - DQN在奖励始终为-1的环境中如何工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54371272/

10-12 23:13