Q ラーニング値がしきい値を超えています
Q ラーニングの実装で、Q 値が過度に大きくなるという問題が発生しました。オーバーフローが発生します。これに対処するために、基本的な概念と潜在的な問題を調べてみましょう。
報酬関数
提供された報酬関数は、タイム ステップごとに正の報酬を割り当て、長期的な報酬を促進します。勝ちを賭けてプレーする。エージェントは勝利を目指して努力するよう動機付けられるべきであるため、これは望ましくないです。
更新式
問題の核心は、Q 値の更新式にあります。
agent.values[mState] = oldVal + (agent.LearningRate * (agent.prevScore + (agent.DiscountFactor * reward) - oldVal))
ここで、agent.prevScore は前の状態アクションからの報酬を表します。ただし、実装では、前のステップの Q 値 (つまり、oldVal) に設定されています。この間違いは Q 値の際限のない増加につながります。
解決策
前のステップからの報酬にagent.prevScoreを割り当ててこのエラーを修正した後、エージェントの行動が正常化します。更新された Q 値は、期待される合計報酬を反映するようになり、エージェントが勝利を追求する動機になります。
Q 値の範囲
典型的な Q 学習問題では、Q-値は、可能な最大の報酬とペナルティによって制限されます。あなたの場合、報酬関数は損失に -1、勝利に 1 を割り当てるため、Q 値を [-1, 1] に制限します。ただし、他のシナリオでは、範囲がさらに大きくなったり、無制限になる場合もあります。期待される合計報酬は、Q 値の範囲を決定する際の重要な要素です。
これらの問題に対処することで、Q ラーニングの実装に成功し、優先順位を付けて、より戦略的な方法でプレイするエージェントをトレーニングできるようになりました。長期プレイに勝利しました。
以上がQ-Learning の価値が爆発的に上昇しているのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。