DQN 笔记 double DQN
1 DQN的問題
在DQN 筆記 State-action Value Function(Q-function)_UQI-LIUWJ的博客-CSDN博客?中,我們知道DQN的學習目標是
?????????但是,這個Q的值是被“高估”了的。因為每一次策略Π更新的時候,Π(s)都取的是最大的那個action,也即
? ? ? ? 然而,實際網絡環境中,由于每個狀態都有一定的概率取不同的動作(policy-based network),所以實際的【reward小的那些action會“向下”拉低一些Q值】,也就是說,我們回歸的目標值是“高估”了的
這是double-DQN paper里的圖,可以形象地說明這個“高估”?
????????這邊有 4 個不同的小游戲,橫軸是訓練的時間,紅色鋸齒狀一直在變的線就是 Q-function 對不同的狀態估計出來的平均 Q 值。有很多不同的狀態,每個狀態都 sample 一下,然后算它們的 Q 值,把它們平均起來,得到這條紅色鋸齒狀Q-function。
?????????這條紅色鋸齒狀的線在訓練的過程中會改變,但它是不斷上升的。因為 Q-function 是取決于你的策略的。學習的過程中你的策略越來越強,你得到的 Q 值會越來越大。在同一個狀態, 你得到 reward 的期望會越來越大,所以一般而言,這個值都是上升的,但這是 Q-network 估測出來的值。【所以為啥Alien那里會下降,我就不得而知了】
????????接下來真的去玩那個游戲,玩很多次。然后真的去算,在某一個狀態, 你會得到的 Q 值到底有多少。(紅色直線)
????????你會發現估測出來的值遠比實際的值大,在每一個游戲都是這樣,都大很多。這就是“高估”的效果
? ? ? ? ?就著這個圖我們再看一下double DQN的效果。
????????藍色的鋸齒狀的線是 Double DQN 的 Q-network 所估測出來的 Q 值。
????????藍色的無鋸齒狀的線是真正的 Q 值,你會發現它們是比較接近的。
2 double DQN的原理
2.1 大體思想
????????在 Double DQN 里面,選動作的 Q-function 跟算值的 Q-function 不是同一個。
????????在原來的 DQN 里面,你窮舉所有的 a,把每一個 a 都帶進去, 看哪一個 a 可以給你的 Q 值最高,那你就把那個 Q 值加上?rt?。但是在 Double DQN 里面,你有兩個 Q-network:
- 第一個 Q-network Q 決定哪一個動作的 Q 值最大(你把所有的 a 帶入 Q 中,看看哪一個 Q 值最大)。
- 你決定你的動作以后,你的 Q 值(也就是回歸的目標值)是用?Q′?算出來的。
? ? ? ? 所以:
- 假設第一個 Q-function 高估了它現在選出來的動作 a,只要第二個 Q-function?Q′?沒有高估這個動作 a 的值,那你算出來的就還是正常的值。
- 假設?Q′?高估了某一個動作的值,那也沒差,因為只要前面這個 Q 不要選那個動作出來就沒事了,這個就是 Double DQN 神奇的地方。
2.2 Q 和Q'的選取
? ? ? ? 使用DQN 筆記 State-action Value Function(Q-function)_UQI-LIUWJ的博客-CSDN博客?第三小節說的target network
????????在實現上,你有兩個 Q-network:目標的 Q-network 和你會更新的 Q-network。
????????所以在 Double DQN 里面,你會拿你會更新參數的那個 Q-network 去選動作,然后你拿目標網絡(固定住不動的網絡)去算值。
????????Double DQN 相較于原來的 DQN 的更改是最少的,它幾乎沒有增加任何的運算量,連新的網絡都不用,因為原來就有兩個網絡了。你唯一要做的事情只有,本來你在找 Q 值最大的 a 的時候,你是用fixed的 Q′ (目標網絡) 來算【也就是說,我原來更新和找最大的a都是用Q’來求得的】?,F在改成用另外一個會更新的 Q-network 來算最大的a,只用Q'來更新Q-function。
總結
以上是生活随笔為你收集整理的DQN 笔记 double DQN的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 报错处理:sh: 1: Syntax e
- 下一篇: osmnx 应用 可视化两张图异同的点和