Q ラーニングの実装でよくある問題、つまりステート アクション値が高くなりすぎるという問題に遭遇しました。この問題を調査し、解決策を提供しましょう。
問題を理解する
エージェントは、期待される合計報酬を最大化しようとします。ただし、報酬関数はゲーム継続に対して正の報酬 (0.5) を返します。これにより、エージェントはゲームを無期限に延長するようになり、その結果、期待される合計報酬が無制限になり、Q 値が過度に高くなります。
解決策: 報酬関数を調整する
この問題を解決するには、タイム ステップごとに負の報酬を提供するように報酬関数を調整します。これにより、エージェントは試合の延長に対してペナルティが課せられ、勝利戦略を求めるよう促されます。たとえば、次の報酬スキームを使用できます:
実装に関する考慮事項
コードでは、前の状態アクションの報酬として、agent.prevScore を使用しています。ただし、これは Q 値ではなく、実際に受け取った報酬である必要があります。コードでこの調整を行います:
<code class="go">agent.values[mState] = oldVal + (agent.LearningRate * (reward - agent.prevScore))</code>
予想される動作
これらの変更を実装した後、次の動作を確認する必要があります:
強化学習アルゴリズムは直感的ではない動作を示す場合があり、効果的なソリューションを開発するには基礎となる原理を理解することが重要であることに留意してください。
以上がQ-Learning の値が非常に高いのはなぜですか? 無限の期待報酬に対する解決策。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。