1. 程式人生 > >DQN(Deep Reiforcement Learning) 發展歷程(五)

DQN(Deep Reiforcement Learning) 發展歷程(五)

排序 一段 改進 每次 擬合 一個 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) 發展歷程(五)