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