強化學習系列 4 DQN

2021-07-31 12:36:15 字數 1109 閱讀 5029

傳統的**形式的強化學習有這樣乙個瓶頸,使用**來儲存每乙個狀態state, 和在這個 state 每個行為 action 所擁有的 q 值.  如果全用**來儲存它們, 計算機記憶體不夠, 而且搜尋對應的狀態也是一件很耗時的事. (比如下圍棋).

所以,我們可以利用神經網路將狀態和動作當成神經網路的輸入, 然後經過神經網路分析後得到動作的 q 值, 這樣我們就沒必要在**中記錄 q 值, 而是直接使用神經網路生成 q 值. 

還有一種形式, 只輸入狀態值, 輸出所有的動作值, 然後按照 q learning 的原則, 直接選擇擁有最大值的動作當做下一步要做的動作. 神經網路接受外部的資訊, 相當於眼睛鼻子耳朵收集資訊, 然後通過大腦加工輸出每種動作的值, 最後通過強化學習的方式選擇動作.

在這裡,我們採取第二種方式:

首先, 我們需要 a1, a2 正確的q值, 這個 q 值我們就用之前在 q learning 中的 q 現實來代替. 同樣我們還需要乙個 q 估計來實現神經網路的更新. 所以神經網路的的引數就是老的 nn 引數 加學習率 alpha 乘以 q 現實 和 q 估計 的差距,

我們通過 nn **出q(s2, a1) 和 q(s2,a2) 的值, 這就是 q 估計. 然後我們選取 q 估計中最大值的動作來換取環境中的獎勵 reward. 而 q 現實中也包含從神經網路分析出來的兩個 q 估計值, 不過這個 q 估計是針對於下一步在 s』 的估計. 最後再通過剛剛所說的演算法更新神經網路中的引數. 但是這並不是 dqn 會玩電動的根本原因. 還有兩大因素支撐著 dqn 使得它變得無比強大. 這兩大因素就是 experience replay 和 fixed q-targets

簡單來說, dqn 有乙個記憶庫用於學習之前的經歷.  q learning 是一種 off-policy 離線學習法, 它能學習當前經歷著的, 也能學習過去經歷過的, 甚至是學習別人的經歷. 所以每次 dqn 更新的時候, 我們都可以隨機抽取一些之前的經歷進行學習. 隨機抽取這種做法打亂了經歷之間的相關性, 也使得神經網路更新更有效率. fixed q-targets 也是一種打亂相關性的機理, 如果使用 fixed q-targets, 我們就會在 dqn 中使用到兩個結構相同但引數不同的神經網路, ** q 估計 的神經網路具備最新的引數, 而** q 現實 的神經網路使用的引數則是很久以前的. 

深度強化學習 (三)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 和...

強化學習 二 DQN深度強化學習網路

dqn,deep q network,是融合了q learning和神經網路的方法 使用q table這樣乙個 來儲存state和action的q值,在複雜的情境下,狀態可以多到比天上的星星還要多,如果全用 來儲存,計算機是儲存不下的。並且在如此巨大的 中搜尋對應狀態也是一種很耗時的事情 不過神經網...