我最近开始使用 DeepMind ( https://arxiv.org/abs/1312.5602 ) 提出的 Deep Q 网络来解决控制问题。最初,我在没有体验重放的情况下实现了它。结果非常令人满意,虽然在实施ER之后,我得到的结果比较差。因此,我开始尝试 BATCH SIZE 和 MEMORY CAPACITY。
(1) 我注意到如果我设置 BATCH SIZE = 1 和 MEMORY CAPACITY = 1 即与之前进行正常在线学习相同,那么结果(几乎)与最初相同。
(2) 如果我增加 CAPACITY 和 BATCH SIZE 例如 CAPACITY = 2000 和 BATCH SIZE = 128,所有动作的 Q 值趋向于收敛到非常相似的负值。
每个状态转换都会收到一个小的负奖励 -1,除了获得 +10 奖励的所需状态。我的伽玛是0.7。每个状态都是离散的,并且在动作 a 之后环境可以转换到多个 X 状态,X 中的每个状态都有很大的概率。
获得积极的奖励是非常罕见的,因为达到理想状态可能需要很长时间。因此,当对 128 次体验进行抽样时,如果“幸运”,则只有少量体验可能会产生积极的回报。
因为,在进行小批量训练时,我们对所有样本的损失进行平均,然后更新 DQN,我想知道通常正奖励是否会变得毫无意义,因为它们被负奖励“支配”。这意味着这会导致与实际值的收敛速度非常慢?并且还证明收敛到与 (2) 中相似的负值是合理的?这是预期的吗?我正在寻求实施。优先考虑 ER 作为解决此问题的潜在解决方案,但上述逻辑是否有问题?
我希望这确实有意义。如果我在上面做出错误的假设,请原谅我,因为我是该领域的新手。
编辑:问题似乎是,确实很少找到奖励会导致采样几乎永远不会,特别是在训练的乞求时,这反过来导致与实际 Q 值的收敛非常缓慢。使用 Prioritized ER 成功解决了这个问题 - 但我相信任何形式的仔细分层抽样都会产生良好的结果