首頁 >後端開發 >Golang >為什麼我的 Q-Learning 價值觀呈現爆炸性成長?誇大的獎勵和浮點限制的故事。

為什麼我的 Q-Learning 價值觀呈現爆炸性成長?誇大的獎勵和浮點限制的故事。

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-26 00:50:28710瀏覽

 Why Are My Q-Learning Values Exploding? A Tale of Inflated Rewards and Floating Point Limits.

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn