強化學習:DQN的理解

分類目錄——強化學習

還是根據Q(s, a)值來進行動作判斷的一種機制

image-20191229153052489

傳統的Q-Learning強化學習會生成一個狀態動作的組合表,通過一輪輪的迭代使這個表格收斂。

**問題:**現實中的活動往往狀態空間很大,比如下圍棋,理論上Q表的矩陣要達到(19**2)*(19**2)的規模,存儲這麼一個表格是一個問題,學習並讓這個表格收斂更是一個大問題。

——如果能有一個公式能通過輸入當前的狀態和動作參量,輸出他們對應的Q值就好了

欸,(深度學習)神經網絡就很適合幹這種無規則(人主觀看起來無規則)的數據之間的映射

以下是兩種可能的網絡類型

類型1

類型1

類型1_

類型二(在DQN及其變體中的Q網絡基於此類型)

類型2

類型2_

問題:能夠進行深度學習是建立在學習數據相互獨立的基礎之上的,但是在強化學習中,連貫的動作前後往往存在着極強的相關性,這阻礙了深度學習的應用。

——打破學習數據之間的相關性,每次從所有的(s,a)集合中隨機取一小份數據,(這就是 經驗重放 機制)學習一下/更新一下參數/向着收斂前進一步。而這種操作是離線學習(off-policy)的操作,我認爲這也是爲什麼Deep能和Q-Learning湊到一塊的原因。(在線學習(on-policy)是不行的,在線學習是聚焦在一個回合內的。如果用在線學習就是沒每進一步就學習一下,這樣的數據是強相關的,神經網絡是極難收斂的)

問題:我們知道神經網絡是想着minimize(error),即向着誤差最小化的方向學習收斂的。神經網絡的誤差通過(預測值-真實值)來構造,但強化學習是不需要標定好的數據的,也就是沒有 真實值 這個概念。通過生成Q值的網絡,可以得到一個 q_估計,少一個 q_現實 來構造 error=q_估計-q_現實(形象化理解,不符合公式)

在Q-Learning中我們知道,Q_現實=Q_現實

我在看機器學習的時候get到一種理念,就是,什麼都是可以學習的。再搞一個網絡來生成q_現實,有一個情況就是,q_估計和q_現實是在同一個環境下的同樣性質的值。DQN的提出者給出的方案就是構造兩個結構相同的網絡用來分別生成q_估計和q_現實,如何來區別兩者以生成兩種q值呢——通過給q_現實的網絡延遲參數的更新。最後來捋一捋

q_估計網絡:實時跟進的網絡,

q_現實網絡:延遲更新的網絡,

對上面問題下的 q_現實 的重新理解

爲了便於理解,我在上面用了 q_現實 這個概念,而實際上

image-20191229172447280

image-20191228094733306

  • DQN的延遲更新——凍結參數機制

至少在莫大大的實踐和另外的論文中得到了證實,延遲更新 是學習n次,Q估計網絡 就吧最新的參數更新到 Q現實網絡,並不是Q估計的參數於Q現實的參數時刻保持着n步的差異。

  • 參考文獻

    什麼是 DQN

  • 相關文獻

    分類目錄——強化學習(更新中)

    什麼是gym

    gym自定義可視化環境繪製

    gym自定義可視化環境實例

    強化學習調用gym環境實例

    從Q_Learning看強化學習

    一個Q_Learning強化學習自定義gym環境可視化實例

    tkinter繪製強化學習可視化環境

    Pytorch實現DQN

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章