DQN(Deep Reiforcement Learning) 發展歷程(五)
阿新 • • 發佈:2019-02-26
排序 一段 改進 每次 擬合 一個 class 解耦 通過
目錄
- 值函數的近似
- DQN
- Nature DQN
- DDQN
- Prioritized Replay DQN
- Dueling DQN
- 參考
DQN發展歷程(一)
DQN發展歷程(二)
DQN發展歷程(三)
DQN發展歷程(四)
DQN發展歷程(五)
值函數的近似
- 當狀態-動作數目太多時,使用表格存儲所有的狀態-動作會造成維度災難,無法求解大規模問題。
- 可以采用一個函數來近似這個這個表格,輸入狀態-動作,輸出對應的狀態值。
- 可以使用神經網絡來充當這個近似函數。
DQN
- 使用來一個神經網絡來作為近似函數求解狀態值。
- 每一步都更新這個神經網絡,由於每步之間的輸入數據是相關的,無法滿足神經網絡輸入數據獨立同分布的要求。
- 由此,使用一個經驗池來存儲更新過的(S,A,R),隔一段時間隨機從這個經驗池中抽取一個batch的(S,A,R)來修正神經網絡的權值,以打亂數據之間的相關性。
Nature DQN
- 在此之前,訓練時,計算狀態值使用的是這個神經網絡估計,而更新神經網絡也使用同一個神經網絡來估計狀態值,容易造成過擬合,不利於算法的收斂。
- 於是,使用兩個神經網絡,一個用於策略的選擇,一個用於狀態值的更新。用於策略選擇的神經網絡,隔一段時間和另一個神經網絡同步一次。通過異步更新加速算法的收斂。
DDQN
- 在DQN中,每次更新狀態值都使用貪婪法選取最大的狀態值來更新,每次都選擇最大,容易造成過度估計。
- DDQN在選擇動作時分為兩步,先在當前在選擇動作的Q網絡找到最大Q值對應的動作a,再把a代入計算Q值的網絡中獲得Q值。
Prioritized Replay DQN
- DQN在經驗池中隨機選取batch更新神經網絡,但是batch中每個(S,A,R)對神經網絡的作用是不同的。通過對每個(S,A,R)做優先級排序,優先使用更新神經網絡誤差大的數據項,達到加速收斂的目的。
Dueling DQN
- 而 Dueling DQN 則對Q值改進。由於某些情況下,采用不同的動作對狀態對不大,所以把Q分解為兩個部分:
- 第一部分價值函數是僅僅與狀態S有關,與具體要采用的動作A無關。
- 第二部分優勢函數同時與狀態S和動作A有關
- 通過最後再把兩部分合並,通過解耦Q使得對不同的狀態有更好的靈敏度。
參考
david siver 課程
https://home.cnblogs.com/u/pinard/
DQN(Deep Reiforcement Learning) 發展歷程(五)