您在 Q-Learning 实现中遇到了一个常见问题:状态操作值变得过高。让我们探讨这个问题并提供解决方案。
了解问题
您的代理尝试最大化预期总奖励。但是,您的奖励函数会为游戏的继续进行返回正奖励 (0.5)。这会激励智能体无限期地延长游戏时间,导致预期总奖励无上限,并且 Q 值过高。
解决方案:调整奖励函数
解决此问题,调整你的奖励函数,为每个时间步提供负奖励。这将惩罚延长游戏时间的智能体,并鼓励其寻求获胜策略。例如,您可以使用以下奖励方案:
实现注意事项
在您的代码中,您使用agent.prevScore作为先前状态操作的奖励。然而,这应该是实际收到的奖励,而不是 Q 值。在您的代码中进行此调整:
<code class="go">agent.values[mState] = oldVal + (agent.LearningRate * (reward - agent.prevScore))</code>
预期行为
实施这些更改后,您应该观察以下行为:
请记住,强化学习算法有时会表现出非直观行为,理解基本原理对于开发有效的解决方案至关重要。
以上是为什么我的 Q-Learning 值如此高? 无限预期奖励的解决方案。的详细内容。更多信息请关注PHP中文网其他相关文章!