首頁 >後端開發 >Golang >為什麼我的 Q-Learning 值如此高? 無限預期獎勵的解決方案。

為什麼我的 Q-Learning 值如此高? 無限預期獎勵的解決方案。

DDD
DDD原創
2024-10-30 02:01:02389瀏覽

 Why are my Q-Learning Values So High?  A Solution to Unbounded Expected Rewards.

Q-Learning 值變得過高

您在 Q-Learning 實作中遇到了一個常見問題:狀態操作值變得過高。讓我們探討這個問題並提供解決方案。

了解問題

您的代理嘗試最大化預期總獎勵。但是,您的獎勵函數會為遊戲的繼續進行返回正獎勵 (0.5)。這會激勵智能體無限期地延長遊戲時間,導致預期總獎勵無上限,且 Q 值過高。

解決方案:調整獎勵函數

解決此問題,調整你的獎勵函數,為每個時間步提供負獎勵。這將懲罰延長遊戲時間的智能體,並鼓勵其尋求獲勝策略。例如,您可以使用以下獎勵方案:

  • 獲勝:1
  • 輸:-1
  • 平手:0
  • 遊戲繼續:- 0.1

實作注意事項

在您的程式碼中,您使用agent.prevScore作為先前狀態操作的獎勵。然而,這應該是實際收到的獎勵,而不是 Q 值。在您的程式碼中進行此調整:

<code class="go">agent.values[mState] = oldVal + (agent.LearningRate *
    (reward - agent.prevScore))</code>

預期行為

實施這些變更後,您應該觀察以下行為:

  • Q 值應保持有界並在合理的範圍內。
  • 代理商應該學會專注於獲勝而不是延長遊戲時間。
  • 模型報告的最大值應該顯著降低。

請記住,強化學習演算法有時會表現出非直觀行為,理解基本原理對於開發有效的解決方案至關重要。

以上是為什麼我的 Q-Learning 值如此高? 無限預期獎勵的解決方案。的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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