DQN發展歷程(一)算法
DQN發展歷程(二)網絡
DQN發展歷程(三)異步
DQN發展歷程(四)函數
DQN發展歷程(五)htm
值函數的近似
- 當狀態-動做數目太多時,使用表格存儲全部的狀態-動做會形成維度災難,沒法求解大規模問題。
- 能夠採用一個函數來近似這個這個表格,輸入狀態-動做,輸出對應的狀態值。
- 可使用神經網絡來充當這個近似函數。
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 課程blog
https://home.cnblogs.com/u/pinard/排序