簡體   English   中英

神經網絡與時間差異學習

[英]Neural Network and Temporal Difference Learning

我有一些關於時間差異學習的論文和講座(有些與神經網絡有關,比如TD-Gammon上的Sutton教程),但是我很難理解方程式,這引出了我的問題。

- 預測值V_t來自哪里? 接下來,我們如何獲得V_(t + 1)?

- 當TD與神經網絡一起使用時,究竟是什么回傳? 也就是說,返回傳播的錯誤來自何時使用TD?

向后和向前的視圖可能令人困惑,但是當你處理像游戲程序這樣簡單的事情時,實際上事情實際上非常簡單。 我不是在看你正在使用的參考文獻,所以讓我提供一般概述。

假設我有一個類似神經網絡的函數逼近器,它有兩個函數, trainpredict特定輸出的訓練並預測狀態的結果。 (或者在特定州采取行動的結果。)

假設我在玩游戲時有一些游戲,我使用predict方法告訴我在每個點上做出什么動作,並假設我在比賽結束時輸了(V = 0)。 假設我的狀態是s_1,s_2,s_3 ...... s_n。

monte-carlo方法說我使用跟蹤和最終得分在跟蹤中的每個狀態上訓練我的函數逼近器(例如我的神經網絡)。 所以,給定這個跟蹤,你會做類似於調用的事情:

train(s_n, 0) train(s_n-1, 0) ... train(s_1, 0)

也就是說,我要求每個州預測追蹤的最終結果。

動態編程方法說我根據下一個狀態的結果進行訓練。 所以我的訓練就像是

train(s_n, 0) train(s_n-1, test(s_n)) ... train(s_1, test(s_2))

也就是說,我要求函數逼近器預測下一個狀態預測的內容,最后一個狀態預測跟蹤的最終結果。

TD學習混合在這兩者之間,其中λ=1對應於第一種情況(monte carlo)而λ=0對應於第二種情況(動態編程)。 假設我們使用λ=0.5 然后我們的培訓將是:

train(s_n, 0) train(s_n-1, 0.5*0 + 0.5*test(s_n)) train(s_n-2, 0.25*0 + 0.25*test(s_n) + 0.5*test(s_n-1)+) ...

現在,我在這里寫的並不完全正確,因為你實際上並沒有在每一步重新測試近似值。 相反,您只需從預測值(在我們的示例中為V = 0 )開始,然后更新它以使用下一個預測值訓練下一步。 V = λ·V + (1-λ)·test(s_i)

這比monte carlo和動態編程方法學得快得多,因為你不是要求算法學習這樣的極值。 (忽略當前預測或忽略最終結果。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM