DQN學習筆記

2022-07-06 20:42:10 字數 2802 閱讀 5879

參考:1.莫煩什麼是dqn

2強化學習:dqn與double dqn討論

3實戰深度強化學習dqn-理論和實踐

dqn(深度神經網路)是q learning 與神經網路結合的產物。

先回顧一下傳統的q learning 演算法。

q learning 是異策略時間差分演算法:

q learning最重要的兩個概念是異策略和時間差分。

異策略是指動作策略(選擇動作的策略)和評估更新的策略不是同乙個。如演算法所示,動作策略是ε \varepsilonε 貪婪策略,目標策略是最大貪婪策略。

(注:這裡的ε \varepsilonε是乙個變化的值比較合理,這個值在一開始比較大,是為了讓agent充分探索環境並得到反饋,越到後面,這個值應該越小,也就是說,agent通過不斷學習,會使得其行為逐漸優化,變的越來越靠譜,所以應當適當減小ε \varepsilonε的值)

時間差分方法是指利用時間差分目標來更新當前行為值函式。在演算法中,時間差分目標是:

r t + γ max ⁡ a q ( s t + 1 , a ) + \gamma \mathop \limits_a q(},a)rt​+γmaxq(st+1​,a)

公式中,q(s,a) 我們可以稱做q估計值,即我們當前估計的q值,而r t + γ max ⁡ a q ( s t + 1 , a ) + \gamma \mathop \limits_a q(},a)rt​+γamax​q(st+1​,a)稱為q target,即我們使用貝爾曼方程加貪心策略認為實際應該得到的獎勵,我們的目標就是使我們的q值不斷的接近q-target值。

在q learning中,我們採用q表來儲存每個狀態state和動作action。而對於實際中的問題,比如玩遊戲,agent的狀態和動作實在是太多了,如果全部採用**的形式來儲存這些,就需要花費相當大的記憶體,且不一定夠,另外,在每次在這些大資料中搜尋對應的狀態和動作也是一件極為麻煩的事情。

神經網路處理這些事情很拿手。一種方法是可以將狀態state和動作action作為神經網路的輸入,經過網路分析計算後產生q值。這樣我們就沒有必要用**去記錄q值,而是直接通過網路生成q值。第二種方法是只輸入狀態值,輸出所有的動作的q值,然後在選擇最大q值對應的動作。

可以想象,神經網路接受外部的資訊, 相當於眼睛鼻子耳朵收集資訊, 然後通過大腦加工輸出每種動作的值, 最後通過強化學習的方式選擇動作。如下圖所示:

dqn主要有三大特點:

dqn利用深度卷積神經網路逼近值函式

dqn利用經驗回放機制訓練強化學習

dqn獨立設定了目標網路來單獨處理時間差分

如下圖所示為dqn的行為值函式逼近網路。與線性逼近不同,線性逼近指值函式由一組基函式和一組與之對應的引數相乘得到,值函式是引數的線性函式。而dqn的行為值函式利用神經網路逼近,屬於非線性逼近。雖然逼近方法不同,但都屬於引數逼近。請記住,此處的值函式對應著一組引數,在神經網路裡引數是每層網路的權重,我們用θ表示。用公式表示的話值函式為q(s,a;θ)。請留意,此時更新值函式時其實是更新引數θ,當網路結構確定時,θ就代表值函式。dqn所用的網路結構是三個卷積層加兩個全連線層,整體框架如下圖所示。

當人類睡覺的時候,海馬體會把一天的記憶重放給大腦皮層。利用這個啟發機制,deepmind團隊的研究人員構造了一種神經網路的訓練方法:經驗回放。

在標準的q learning演算法中沒見過這個replay memory。引入它的優勢是打破了(s,a,r,s』)的相關性。

在訓練神經網路時,存在的假設是訓練資料是獨立同分布的,但是通過強化學習採集的資料之間存在著關聯性,利用這些資料進行順序訓練,神經網路當然不穩定。如果不打亂順序,每次更新時會使估算的值比較偏。

經驗回放可以打破資料間的關聯,如下圖所示,在強化學習過程中,智慧型體將資料儲存到乙個資料庫中,再利用均勻隨機取樣的方法從資料庫中抽取資料,然後利用抽取的資料訓練神經網路。

比如說我們用dqn玩遊戲的時候,採集的資訊是乙個連續的時間序列,樣本之間具有連續性,如果每次得到樣本就更新q值,受樣本分佈的影響,效果會不好。我們可以先將樣本存起來,然後隨機取樣。

與**型的q learning演算法不同,利用神經網路對值函式進行逼近時,價值函式更新的是θ。dqn利用了卷積神經網路。其更新方法是梯度下降法,更新公式變為了:

θ t + 1 = θ t + α [ r + γ max ⁡ a q ( s ′ , a ′ ; θ ) − q ( s , a ; θ ) ] ∇ q ( s , a ; θ ) } = + \alpha \left[ \limits_a q(s',a';\theta ) - q(s,a;\theta )}\limits_{} } \right]\nabla q(s,a;\theta )θt+1​=θt​+α[r+γamax​q(s′,a′;θ)−q(s,a;θ)​]∇q(s,a;θ)

其中,r + γ max ⁡ a q ( s ′ , a ′ ; θ ) r + \gamma \mathop \limits_a q(s',a';\theta )}\limits_{}r+γamax​q(s′,a′;θ)

為時間差分目標。

在計算max ⁡ a q ( s ′ , a ′ ; θ ) \mathop \limits_a q(s',a';\theta )}\limits_{}a

dqn推薦系統 基於強化學習DQN的智慧型體信任增強

基於強化學習 dqn的智慧型體信任增強 亓法欣童向榮 於雷 期刊名稱 計算機研究與發展 年卷 期 2020 057 006 摘要 信任推薦系統是以社交網路為基礎的一種重要推薦系統應用 其結合用 戶之間的信任關係對使用者進行專案推薦 但之前的研究一般假定使用者之間的信任 值固定無法對使用者信任及偏好的...

深度強化學習 (三)DQN

強化學習是乙個馬爾科夫決策過程,它的目標是追求累計回報最大化max,值函式v s 是對狀態s能獲得的累計回報的估計,也就是v s e gt st s 根據貝爾曼方程v st 與v st 1 的關係為 v st e rt 1 r v st 1 st s 引入動作後有動作 值函式 q st,at q s...

強化學習 DQN 演算法改進

dueling dqn 是一種基於 dqn 的改進演算法。主要突破點 利用模型結構將值函式表示成更加細緻的形式,這使得模型能夠擁有更好的表現。下面給出公式,並定義乙個新的變數 q s t,a t v s t a s t,a t 也就是說,基於狀態和行動的值函式 q 可以分解成基於狀態的值函式 v 和...