我對Pong遊戲實現深度神經網絡有一些麻煩,因爲我的網絡始終發散,無論我改變哪些參數。 我參加了一個Pong遊戲,並實施了一個基於theano/lasagne的深度q學習算法,該算法基於Googles Deepmind着名的自然論文。爲pong遊戲尋找神經網絡的正確參數
我想什麼:
相反飼餵像素數據的網絡的欲輸入的x和球的y位置和槳葉的連續4幀的y位置。所以我總共有12個輸入。
我只想獎勵一輪的命中,損失和勝利。
有了這個配置,網絡沒有收斂,我的經紀人也無法玩遊戲。相反,槳直接驅動到頂部或底部或重複相同的模式。所以我想我會盡量讓代理更簡單一些,並添加一些信息。
我所做的:
國:
- 球(-1到1)x位置
- 球(的y位置-1到1 )
- 球的歸一化x-速度
- 球的歸一化y-速度
- 槳(-1至1)
隨着連續4幀的y位置我得到的20
獎勵總輸入:
- 10如果扳鈕命中球
- +100如果代理贏得回合
- -100如果代理丟失回合
- -5到0表示球的預測結束位置(y位置)與當前槳的y位置之間的距離如果球的預測結束位置位於球的當前範圍內,則該球的預測結束位置爲
- +20。槳(命中預見)
- -5如果球位於槳(未命中可能的了)後面
利用這種配置,網絡仍然發散。我嘗試瞭解學習速率(0.1到0.00001),隱藏層的節點(5到500),隱藏層的數量(1到4),批量累加器(總和或平均值),更新規則(rmsprop或Deepminds rmsprop)。
所有這些都沒有導致令人滿意的解決方案。損失平均值的圖形大部分看起來像this。 您也可以下載實現我的當前版本here
我將是任何提示:)
Koanashi
由於我沒有足夠的信譽點發布更多信息我想在這裏提供兩條鏈接: [Pong-Game](http://pygame.org/project-py-pong-2040-.html); [Theano/Lasagne實施](https://github.com/spragunr/deep_q_rl); [Nature paper](https://storage.googleapis.com/deepmind-data/assets/papers/DeepMindNature14236Paper.pdf); [另一個損失情節](http://i.imgur.com/U5ZBLcQ.png); – Koanashi
您是否嘗試過使用較低的獎勵值?如果可能的話,我建議使用您當前使用的獎勵,根據最小和最大可能值,將所有獎勵標準化爲[0.0,1.0]或[-1.0,1.0]。如果難以確定這些最小值和最大值,它可能仍然至少有助於使一切接近0(也許將您現在使用的所有獎勵除以100?)。這可能有助於網絡更快地融合。 –
謝謝,我還沒有,但我會知道,然後報告。 – Koanashi