雖然試圖實現神經網絡作爲近似器,但我想知道如何根據當前學習的網絡權重選擇最佳動作。如果動作空間是離散的,我可以計算當前狀態下不同動作的估計值並選擇給出最大值的那個。但這似乎不是解決問題的最佳方法。此外,如果動作空間可以是連續的,則不起作用(例如,像自動駕駛汽車的加速)。具有神經網絡的情景式半梯度薩爾薩
所以,basicly我想知道如何解決10號線Choose A' as a function of q(S', , w)
薩頓的這種僞代碼:
如何這些問題通常解決了嗎?可以使用Keras
推薦一個很好的算法例子嗎?
編輯:當使用網絡作爲近似器時,我需要修改僞代碼嗎?那麼,我簡單地將網絡預測的MSE
最小化,例如獎勵R
?
好的,謝謝。我決定去選擇你的答案,並試圖用Keras實現這個問題。但我仍然不知道如何執行權重的更新。我試圖解決它像這樣https://gist.github.com/FlashTek/0dfddf46c4d50c4e068f1ecbad1d03b5,但遺憾的是代理沒有真正學習任何東西。你能給我更多關於這一步的細節嗎? – FlashTek
我不太瞭解合併方法在Keras中的工作方式,但我認爲你最終創建了一個3的小批量來預測何時選擇一個動作,然後是一個1的最小批量更新。我有個問題:'output_layer = Dense(1,activation =「tanh」)(x)' - 我不認爲'tanh'涵蓋了所有的獎勵範圍,這個任務獎勵例如。 -300是可能的。您似乎已經修改了培訓目標(使用TD目標,而不是TD錯誤),但我認爲這是對以簡單方式使用Keras優化器的正確修改。 –
是的,這就是我想要做的。好的 - 我應該使用哪個其他激活函數來代替這個?我認爲'LeakyReLu'能夠解決這個問題(因爲它涵蓋了所有的負面價值),但是代理人仍然沒有學到任何東西。 – FlashTek