Q-Learning 值超出阈值
在尝试实施 Q-Learning 时,出现了状态操作值超出阈值的问题双精度浮点变量的限制。最初的实现将此问题归因于使用了 agent.prevState 而不是状态-操作元组。然而,根本原因被确定为 prevScore 的计算。
理解问题
Q-Learning 根据以下值更新 Q(s, a) 的值公式:
Q(s, a) = Q(s, a) + (LearningRate * (prevScore + (DiscountFactor * reward) - Q(s, a)))
关键的一点是 prevScore 代表前一个状态动作的奖励,而不是 Q 值。在最初的实现中,prevScore 包含了上一步的 Q 值,而不是奖励本身,导致值膨胀超出了浮点限制。
分辨率
通过修改 prevScore 以保留上一步的真实奖励,学习过程按预期进行。 2M 集后的最大值显着降低,模型在游戏过程中表现出合理的行为。
奖励的作用
值得注意奖励函数的影响在强化学习中。目标是最大化预期总奖励。如果每个时间步都给予奖励,算法将有利于延长游戏,导致 Q 值过高。在此示例中,为每个时间步引入负奖励会鼓励智能体以胜利为目标,从而将 Q 值控制在适当的范围内。
以上是为什么我的 Q-Learning 价值观呈爆炸式增长?夸大的奖励和浮点限制的故事。的详细内容。更多信息请关注PHP中文网其他相关文章!