一脓豪、什么是Deep Q Network
這次我們來說說強化學(xué)習(xí)中的 Deep Q Network 簡稱為 DQN昔榴。Google Deep mind 團(tuán)隊就是靠著這 DQN 使計算機(jī)玩電動玩得比我們還厲害街州。
DQN 是一種融合了 神經(jīng)網(wǎng)絡(luò) 和 Q_learning 的方法劈伴,如果你還不了解 Q_learning,可以看看《強化學(xué)習(xí)——Q_learning》這篇文章告希。
傳統(tǒng)的 Q 表格形式的強化學(xué)習(xí)有一個瓶頸桥温。當(dāng)今問題是在太復(fù)雜引矩,使用表格來存儲每一個狀態(tài) state 和 action 所擁有的 Q 值,計算機(jī)有再大的內(nèi)存都不夠,而且每次在這么大的表格中搜索對應(yīng)的狀態(tài)也是一件很耗時的事旺韭。
所以氛谜,我們可以將 狀態(tài) 和 動作 當(dāng)成神經(jīng)網(wǎng)絡(luò)的輸入,然后經(jīng)過神經(jīng)網(wǎng)絡(luò)分析后得到動作的 Q 值区端,這樣我們就沒必要在表格中記錄 Q 值值漫,而是直接使用神經(jīng)網(wǎng)絡(luò)生成 Q 值。
還有一種形式的是我們只輸入狀態(tài)值织盼,輸出所有的動作值杨何,然后按照 Q learning 的原則,直接選擇擁有最大值的動作當(dāng)做下一步要做的動作沥邻。接下來危虱,我們就按照這種方式來說明。
二唐全、神經(jīng)網(wǎng)絡(luò)的更新
我們知道神經(jīng)網(wǎng)絡(luò)是要被訓(xùn)練才能預(yù)測出準(zhǔn)確的值埃跷。那在強化學(xué)習(xí)中,神經(jīng)網(wǎng)絡(luò)是如何被訓(xùn)練的呢邮利?首先弥雹,我們需要 a1、a2 正確的Q值延届,這個 Q 值我們就用之前在 Q learning 中的 Q 現(xiàn)實來代替缅糟。
同樣我們還需要一個 Q 估計,來實現(xiàn)神經(jīng)網(wǎng)絡(luò)的更新祷愉。所以神經(jīng)網(wǎng)絡(luò)的的參數(shù)就是舊的神經(jīng)網(wǎng)絡(luò)參數(shù)加學(xué)習(xí)率 alpha 乘以 Q 現(xiàn)實 和 Q 估計的差值。
我們通過 NN 預(yù)測出Q(s2, a1) 和 Q(s2,a2) 的值赦颇,這就是 Q 估計. 然后我們選取 Q 估計中最大值的動作來換取環(huán)境中的獎勵 reward. 而 Q 現(xiàn)實中也包含從神經(jīng)網(wǎng)絡(luò)分析出來的兩個 Q 估計值, 不過這個 Q 估計是針對于下一步在 s’ 的估計. 最后再通過剛剛所說的算法更新神經(jīng)網(wǎng)絡(luò)中的參數(shù).
三二鳄、Experience replay 和 Fixed Q-targets
簡單來說,DQN 有一個記憶庫用于學(xué)習(xí)之前的經(jīng)歷媒怯。Q learning 是一種 off-policy 離線學(xué)習(xí)法订讼,它能學(xué)習(xí)當(dāng)前經(jīng)歷著的, 也能學(xué)習(xí)過去經(jīng)歷過的,甚至是學(xué)習(xí)別人的經(jīng)歷扇苞。所以每次 DQN 更新的時候欺殿,我們都可以隨機(jī)抽取一些之前的經(jīng)歷進(jìn)行學(xué)習(xí)。隨機(jī)抽取這種做法打亂了經(jīng)歷之間的相關(guān)性鳖敷,也使得神經(jīng)網(wǎng)絡(luò)更新更有效率脖苏。
Fixed Q-targets 也是一種打亂相關(guān)性的機(jī)理,如果使用 fixed Q-targets定踱,我們就會在 DQN 中使用到兩個結(jié)構(gòu)相同但參數(shù)不同的神經(jīng)網(wǎng)絡(luò)棍潘,預(yù)測 Q 估計 的神經(jīng)網(wǎng)絡(luò)具備最新的參數(shù),而預(yù)測 Q 現(xiàn)實的神經(jīng)網(wǎng)絡(luò)使用的參數(shù)則是很久以前的。
以上內(nèi)容參考莫凡Python亦歉。