首页 >后端开发 >Golang >为什么我的 Q-Learning 值如此高? 无限预期奖励的解决方案。

为什么我的 Q-Learning 值如此高? 无限预期奖励的解决方案。

DDD
DDD原创
2024-10-30 02:01:02390浏览

 Why are my Q-Learning Values So High?  A Solution to Unbounded Expected Rewards.

Q-Learning 值变得过高

您在 Q-Learning 实现中遇到了一个常见问题:状态操作值变得过高。让我们探讨这个问题并提供解决方案。

了解问题

您的代理尝试最大化预期总奖励。但是,您的奖励函数会为游戏的继续进行返回正奖励 (0.5)。这会激励智能体无限期地延长游戏时间,导致预期总奖励无上限,并且 Q 值过高。

解决方案:调整奖励函数

解决此问题,调整你的奖励函数,为每个时间步提供负奖励。这将惩罚延长游戏时间的智能体,并鼓励其寻求获胜策略。例如,您可以使用以下奖励方案:

  • 获胜:1
  • 输:-1
  • 平局:0
  • 游戏继续:-0.1

实现注意事项

在您的代码中,您使用agent.prevScore作为先前状态操作的奖励。然而,这应该是实际收到的奖励,而不是 Q 值。在您的代码中进行此调整:

<code class="go">agent.values[mState] = oldVal + (agent.LearningRate *
    (reward - agent.prevScore))</code>

预期行为

实施这些更改后,您应该观察以下行为:

  • Q 值应保持有界并在合理的范围内。
  • 代理应该学会专注于获胜而不是延长游戏时间。
  • 模型报告的最大值应该显着降低。

请记住,强化学习算法有时会表现出非直观行为,理解基本原理对于开发有效的解决方案至关重要。

以上是为什么我的 Q-Learning 值如此高? 无限预期奖励的解决方案。的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn