我正在实施 DQN 算法来训练我的代理玩回合制游戏。游戏的动作空间很小,但并非所有动作都可以在所有状态下使用。因此,在决定选择哪个动作时,代理将所有非法移动的 Q 值设置为 0,同时将其余的值标准化。
在训练过程中,当代理计算策略和目标网络之间的损失时,是否应该忽略非法行为(设置为 0),以便它们不影响计算?
我正在实施 DQN 算法来训练我的代理玩回合制游戏。游戏的动作空间很小,但并非所有动作都可以在所有状态下使用。因此,在决定选择哪个动作时,代理将所有非法移动的 Q 值设置为 0,同时将其余的值标准化。
在训练过程中,当代理计算策略和目标网络之间的损失时,是否应该忽略非法行为(设置为 0),以便它们不影响计算?
我之前已经实现过这个确切的场景;您的方法很可能会成功,但我认为可以简化。
因此,在决定选择哪个动作时,代理将所有非法移动的 Q 值设置为 0,同时将其余的值标准化。
在 DQN 中,Q 值用于找到最佳动作。要确定给定状态下的最佳动作,只需查看所有有效动作的 Q 值,然后采取具有最高 Q 值的有效动作即可。一旦你有一个有效动作的列表,就没有必要将无效动作的 Q 值设置为 0。请注意,您首先需要该组有效操作将无效的 Q 值设置为 0,因此我建议的方法更简洁而不会降低性能。
由于 Q 值的相对顺序是找到最佳动作所需的全部,因此不需要归一化。此外,原始 DQN论文使用- 贪婪的探索。请记住,在以这种方式探索时,仅从给定状态下的有效操作中采样。
在训练过程中,当代理计算策略和目标网络之间的损失时,是否应该忽略非法行为(设置为 0),以便它们不影响计算?
如您之前的一个问题所述,我们训练经验元组。. Q-learning 更新的定义如下(取自Sutton 和 Barto的第 6.8 行):
更新要求对所有有效操作采取最大. 同样,一旦您知道一组有效操作,将无效 Q 值设置为 0 是不必要的额外工作。忽略无效动作相当于将这些动作排除在有效动作集中。