2017-04-17 142 views
1

我正在使用Keras進行深q學習的實驗,並且我想要教授代理來執行任務。深q學習不收斂

在我的問題

我wan't教的試劑,以避免撞擊物體在它的路徑,通過改變它的速度(加速或減速)

所述試劑水平移動和對象以避免在垂直方向移動的,我不要他學會改變速度以避免擊中它們。 我基於我對這個代碼:Keras-FlappyBird

我試圖3個不同模型(我不使用卷積網絡)

  1. 模型與S形的激活函數10密隱藏層,用400輸出節點

  2. 模型與Leaky ReLU激活功能

  3. ReLu活化函數10密隱藏層模型10密隱藏層,具有400個輸出節點

我向網絡提供我網絡中所有對象的座標和速度。

並訓練它100萬幀,但依然看不到任何結果 這裏是我的Q值積爲3種型號,

模型1:Q值 enter image description here 模型2 :q值

enter image description here 模型3:q值

enter image description here 模型3:Q值放大

enter image description here

,你可以看到的Q值都相同並沒有改善作爲來回獎勵......請幫助我什麼,我我做錯了..

回答

0

我對你的環境有點困惑。我假設你的問題不是飛揚的鳥,而你正試圖將來自飛鳥的代碼移植到你自己的環境中。所以即使我不瞭解你的環境或你的代碼,我仍然認爲有足夠的回答一些潛在的問題來讓你走上正確的道路。

首先,您提到了您嘗試過的三種模型。當然,選擇正確的函數逼近對於廣義強化學習非常重要,但是有更多的超參數可能對解決您的問題非常重要。例如,伽瑪,學習率,探索和探索衰減率,某些情況下的回放記憶長度,培訓的批量大小等。如果您的Q值在您認爲實際上應該改變的狀態下未發生變化,則潛在客戶我相信對模型1和模型2的研究正在進行有限的探索。在代碼示例中,epsilon從.1開始,也許在那裏嘗試不同的值。此外,這也需要調整探索速率的衰減率。如果你的q值在劇集中劇增,我也會看看學習率(儘管在代碼示例中它看起來很小)。在同一張紙條上,gamma可能非常重要。如果它太小,你的學習者會是近視的。

你還提到你有400個輸出節點。你的環境有400個動作嗎?大動作空間也帶來了自己的一系列挑戰。如果你的確有400個動作https://arxiv.org/pdf/1512.07679.pdf,那麼這是一個很好的白皮書。如果你沒有400個動作,你的網絡結構就有問題。您應該將每個輸出節點視爲選擇哪個動作的概率。例如,在您發佈的代碼示例中,他們有兩個操作並使用relu。

獲得深度q學習的參數是非常困難的,特別是當你考慮訓練速度有多慢時。

+0

非常感謝您的回答,1:400節點我的意思是在隱藏節點中,在輸出節點中我只有3個。 2:是的,你是對的,我正在爲自己的環境移植代碼。 3:解釋我的環境;我基本上試圖訓練一個網絡,以避免與移動目標相撞,我將目標的位置作爲輸入,輸出是3個可能的動作 –

+0

,我認爲你是正確的,我試圖改變epsilon的參數和伽瑪,我看到一些改善,但仍然不是我所希望的結果 –

+0

我也會看看其他參數,包括學習率。如果您的環境沒有終端狀態,那麼您可能需要考慮最低探索速率爲.1或類似的東西,以便它不斷探索新的狀態,找到一個最佳的解決方案。 –