首頁 >後端開發 >Golang >為什麼我的 Q-Learning 價值觀呈現爆炸性成長?

為什麼我的 Q-Learning 價值觀呈現爆炸性成長?

Susan Sarandon
Susan Sarandon原創
2024-10-29 09:01:02893瀏覽

Why are My Q-Learning Values Exploding?

Q-Learning 值超出閾值

在實施Q-Learning 時,您遇到了Q 值變得過大的問題,導致溢出。為了解決這個問題,讓我們檢查一下基本概念和潛在問題:

獎勵函數

提供的獎勵函數為每個時間步分配正獎勵,促進長期比賽重於勝利。這是不可取的,因為應該激勵代理人去爭取勝利。

更新方程式

問題的關鍵在於Q 值的更新方程式:

agent.values[mState] = oldVal + (agent.LearningRate * (agent.prevScore + (agent.DiscountFactor * reward) - oldVal))

這裡,agent.prevScore 代表前一個狀態動作的獎勵。但是,在您的實作中,您將其設定為上一步驟的 Q 值(即 oldVal)。這個錯誤會導致 Q 值無限增加。

解決方案

透過 agent.prevScore 分配給上一步驟的獎勵來修正此錯誤後,代理人的行為正常化。更新後的 Q 值現在反映了預期的總獎勵,激勵智能體追求勝利。

Q 值範圍

在典型的 Q-Learning 問題中,Q-價值受到最大可能的獎勵和懲罰的限制。在您的情況下,獎勵函數將 Q 值限制為 [-1, 1],因為它為失敗分配 -1,為獲勝分配 1。然而,在其他場景中,範圍可能更大甚至無界。預期總獎勵是決定 Q 值範圍的關鍵因素。

透過解決這些問題,您已經成功實施了 Q-Learning,現在可以訓練一個以更具戰略性的方式進行遊戲的智能體,優先考慮贏得長時間遊戲。

以上是為什麼我的 Q-Learning 價值觀呈現爆炸性成長?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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