DQN 解决了最大化平均奖励的最优控制问题。虽然它通常使用折扣奖励,但折扣因子不是设置的一部分 - 相反,它是解决方案超参数的一部分,并且通常设置得相当高,例如 0.99 - 当使用函数逼近器时。
DQN 中使用的 TD 目标对您来说是个问题:
Gt : t + 1=Rt + 1+ γ最大限度一种'问(小号t + 1,一种')
因为它依赖于不再适用于给定值函数的贝尔曼方程。在您的情况下,似乎没有任何方法可以表示时间的 TD 目标吨通过引用其他 Q 值,因为您需要减去未来的奖励,这是非常笨拙的。相反,您可以使用简单的截断蒙特卡洛返回
Gt : t + 3=Rt + 1+Rt + 2+Rt + 3
有几种不同的方法可以做到这一点,但最简单和最接近 DQN 的方法是 IMO:
- 在体验回放表中按顺序存储轨迹
- 对于训练小批量中的每个项目:
- 选择一个开始状态/动作对来评估s吨,一种吨从重播表中随机
- 检查一种t + 1和一种t + 2正在最大化您当前目标策略中的操作st + 1和st + 2,如果不是则拒绝样品(注意您不需要检查或拒绝一种吨,这就是你的代码学习探索性动作的方式)
- 计算TD目标,G吨=rt + 1+rt + 2+rt + 3
- 该示例的训练数据是s吨,一种吨,G吨
检查最大化动作部分可能会很慢,所以你可能更喜欢简化方法而不是使用off-policy。或者,如果e p s i l o n足够低,您可以将三步返回直接存储在体验重播表中(等到您获得来自t + 3在存储数据之前吨) 并忽略一些回报来自探索性行动的事实,因此是嘈杂/有偏见的。. . 这种方法在 DQN“Rainbow”版本的 n 步返回中使用,并且在 Atari 问题的实践中运行良好,尽管理论基础不稳定。
注意我使用的是约定s吨,一种吨,rt + 1,st + 1代表轨迹中的一个步骤,而在您似乎正在使用的问题中s吨,一种吨,r吨,st + 1具有不同的奖励指数。如果你想坚持你的约定,你将需要转换回来。