Q ラーニング値がしきい値を超えています
Q ラーニングを実装しようとすると、状態アクション値がしきい値を超えるという問題が発生しました。倍精度浮動小数点変数の制限。初期の実装では、この問題の原因は、状態アクション タプルではなく、agent.prevState の使用にあると考えられていました。ただし、根本原因は prevScore の計算であることが特定されました。
問題の理解
Q ラーニングは、式:
Q(s, a) = Q(s, a) + (LearningRate * (prevScore + (DiscountFactor * reward) - Q(s, a)))
重要な点は、prevScore が Q 値ではなく、前の状態アクションに対する報酬を表すということです。初期実装では、prevScore に報酬自体ではなく前のステップの Q 値が含まれていたため、浮動小数点の制限を超える値が膨らんでいました。
解像度
前のステップの真の報酬を保持するように prevScore を修正することで、学習プロセスは意図したとおりに動作しました。 200 万エピソード後の最大値は大幅に減少し、モデルはゲームプレイ中に妥当な動作を示しました。
報酬の役割
報酬関数の影響に注意することが重要です強化学習では。目標は、期待される総報酬を最大化することです。タイム ステップごとに報酬が与えられる場合、アルゴリズムはゲームの延長に有利になり、Q 値が過度に高くなります。この例では、タイム ステップごとに負の報酬を導入することで、エージェントが勝利を目指すことを奨励し、Q 値を適切な範囲内に収めました。
以上がQ-Learning の価値が爆発的に上昇しているのはなぜですか?水増し報酬と浮動小数点制限の物語。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。