您在 Q-Learning 實作中遇到了一個常見問題:狀態操作值變得過高。讓我們探討這個問題並提供解決方案。
了解問題
您的代理嘗試最大化預期總獎勵。但是,您的獎勵函數會為遊戲的繼續進行返回正獎勵 (0.5)。這會激勵智能體無限期地延長遊戲時間,導致預期總獎勵無上限,且 Q 值過高。
解決方案:調整獎勵函數
解決此問題,調整你的獎勵函數,為每個時間步提供負獎勵。這將懲罰延長遊戲時間的智能體,並鼓勵其尋求獲勝策略。例如,您可以使用以下獎勵方案:
實作注意事項
在您的程式碼中,您使用agent.prevScore作為先前狀態操作的獎勵。然而,這應該是實際收到的獎勵,而不是 Q 值。在您的程式碼中進行此調整:
<code class="go">agent.values[mState] = oldVal + (agent.LearningRate * (reward - agent.prevScore))</code>
預期行為
實施這些變更後,您應該觀察以下行為:
請記住,強化學習演算法有時會表現出非直觀行為,理解基本原理對於開發有效的解決方案至關重要。
以上是為什麼我的 Q-Learning 值如此高? 無限預期獎勵的解決方案。的詳細內容。更多資訊請關注PHP中文網其他相關文章!