Q-Learning 值超出閾值
在嘗試實施Q-Learning 時,出現了狀態操作值超出閾值的問題雙精確度點變數的限制。最初的實作將此問題歸因於使用了 agent.prevState 而不是狀態-操作元組。然而,根本原因被確定為 prevScore 的計算。
理解問題
Q-Learning 根據以下值更新Q(s, a) 的值公式:
Q(s, a) = Q(s, a) + (LearningRate * (prevScore + (DiscountFactor * reward) - Q(s, a)))
關鍵的一點是prevScore 代表前一個狀態動作的獎勵,而不是Q 值。在最初的實作中,prevScore 包含了上一個步驟的 Q 值,而不是獎勵本身,導致值膨脹超出了浮點限制。
解析度
透過修改 prevScore 以保留上一步的真實獎勵,學習過程按預期進行。 2M 集後的最大值顯著降低,模型在遊戲過程中表現出合理的行為。
獎勵的作用
值得注意獎勵函數的影響在強化學習中。目標是最大化預期總獎勵。如果每個時間步都給予獎勵,演算法將有利於延長遊戲,導致 Q 值過高。在此範例中,為每個時間步驟引入負獎勵會鼓勵智能體以勝利為目標,從而將 Q 值控制在適當的範圍內。
以上是為什麼我的 Q-Learning 價值觀呈現爆炸性成長?誇大的獎勵和浮點限制的故事。的詳細內容。更多資訊請關注PHP中文網其他相關文章!