強化學習 DQN 演算法改進

2022-04-13 16:42:57 字數 1786 閱讀 4733

dueling dqn 是一種基於 dqn 的改進演算法。主要突破點:利用模型結構將值函式表示成更加細緻的形式,這使得模型能夠擁有更好的表現。下面給出公式,並定義乙個新的變數:

\[q(s_t, a_t)=v(s_t)+a(s_t, a_t)

\]也就是說,基於狀態和行動的值函式 \(q\) 可以分解成基於狀態的值函式 \(v\) 和優勢函式(advantage function)\(a\) 。由於存在:

\[e_}[q(s_t, a_t)] = v(s_t)

\]所以,如果所有狀態行動的值函式不相同,一些狀態行動的價值 \(q(s, a)\) 必然會高於狀態的價值 \(v(s)\),當然也會有一些低於價值。於是優勢函式可以表現出當前行動和平均表現之間的區別:如果優於平均表現,則優勢函式為正,反之為負。

以上是概念上的分解,以下是網路結構上對應的改變:

再保持主體網路不變的基礎上,將原本網路中的單一輸出變為兩路輸出,乙個輸出用於輸出 \(v\) ,它是乙個一維的標量;另乙個輸出用於輸出 \(a\),它的維度和行動數量相同。最後將兩部分加起來,就是原來的 \(q\) 值。

如果只進行以上單純地分解,會引出另外乙個問題:當 \(q\) 值一定使,\(v\) 和 \(a\) 有無窮多種可行組合,我們可以對 \(a\) 函式做限定。我們知道 \(a\) 函式地期望為 0:

\[e_a[a(s_t, a_t)] = e_[q(s_t, a_t)-v(s_t)]=v(s_t)-v(s_t)=0

\]對 \(a\) 值進行約束,將公式變為:

\[q(s_t, a_t) =v(s_t)+(a(s_t, a_t)- \frac\sum_a(s_t, a_t^))

\]讓每乙個 \(a\) 值減去當前狀態下所有 \(a\) 值得平均數,就可以保證前面提到的期望值為 0 的約束,從而增加了 \(v\) 和 \(a\) 的輸出穩定性。

實際意義:將值函式分解後,每一部分的結果都具有實際意義。通過反卷積操作得到兩個函式值對原始影象輸入的梯度後,可以發現 \(v\) 函式對遊戲中的所有關鍵資訊都十分敏感,而 \(a\) 函式只對和行動相關的資訊敏感。

priority replay buffer 是一種針對 replay buffer 的改進結構。replay buffer 能夠提高樣本利用率的同時減少樣本的相關性。它存在乙個問題:每個樣本都會以相同的頻率被學習。但實際上,每個樣本的難度是不同的,學習樣本所得的收穫也是不同的。為了使學習的潛力被充分挖掘出來,就有研究人員提出了 priority replay buffer。它根據模型對當前樣本的表現情況,給樣本一定的權重,在取樣時被取樣的概率就和這個權重有關。互動時表現越差,對應權重越高,取樣的概率也就越高。反之,如果表現越好,則權重也就降低,被取樣的概率也就降低。這使得模型表現不好的樣本可以有更高的概率被重新學習,模型會把更多精力放在這些樣本上

從演算法原理來看,priority replay buffer 與以往的 replay buffer 有兩個差別:

(1)為每乙個存入 replay buffer 的樣本設定乙個權重;

(2)使用這個權重完成取樣過程:由於取樣的複雜度較高,我們可以採用線段樹資料結構來實現這個功能。

references

​ [1] 《強化學習精要——核心演算法與 tensorflow 實現》馮超

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

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

強化學習系列 4 DQN

傳統的 形式的強化學習有這樣乙個瓶頸,使用 來儲存每乙個狀態state,和在這個 state 每個行為 action 所擁有的 q 值.如果全用 來儲存它們,計算機記憶體不夠,而且搜尋對應的狀態也是一件很耗時的事.比如下圍棋 所以,我們可以利用神經網路將狀態和動作當成神經網路的輸入,然後經過神經網路...