国产精品久久99,51久久成人国产精品麻豆,亚洲欧洲免费三级网站,最近中文字幕mv,重口老太大和小伙乱

首頁>娛樂 > 正文

最資訊丨強(qiáng)化學(xué)習(xí)從基礎(chǔ)到進(jìn)階-常見問題和面試必知必答[4]::深度Q網(wǎng)絡(luò)-DQN、double DQN、經(jīng)驗(yàn)回放、rainbow、分布式DQN

2023-06-25 06:16:36來源:博客園

強(qiáng)化學(xué)習(xí)從基礎(chǔ)到進(jìn)階-常見問題和面試必知必答[4]::深度Q網(wǎng)絡(luò)-DQN、double DQN、經(jīng)驗(yàn)回放、rainbow、分布式DQN

1.核心詞匯

  • 深度Q網(wǎng)絡(luò)(deep Q-network,DQN):基于深度學(xué)習(xí)的Q學(xué)習(xí)算法,其結(jié)合了價值函數(shù)近似(value function approximation)與神經(jīng)網(wǎng)絡(luò)技術(shù),并采用目標(biāo)網(wǎng)絡(luò)和經(jīng)驗(yàn)回放等方法進(jìn)行網(wǎng)絡(luò)的訓(xùn)練。

  • 狀態(tài)-價值函數(shù)(state-value function):其輸入為演員某一時刻的狀態(tài),輸出為一個標(biāo)量,即當(dāng)演員在對應(yīng)的狀態(tài)時,預(yù)期的到過程結(jié)束時間段內(nèi)所能獲得的價值。

  • 狀態(tài)-價值函數(shù)貝爾曼方程(state-value function Bellman equation):基于狀態(tài)-價值函數(shù)的貝爾曼方程,它表示在狀態(tài) $s_t$ 下對累積獎勵 $G_t$ 的期望。


    (資料圖)

  • Q函數(shù)(Q-function): 其也被稱為動作價值函數(shù)(action-value function)。其輸入是一個狀態(tài)-動作對,即在某一具體的狀態(tài)采取對應(yīng)的動作,假設(shè)我們都使用某個策略 $\pi$ ,得到的累積獎勵的期望值有多大。

  • 目標(biāo)網(wǎng)絡(luò)(target network):其可解決在基于時序差分的網(wǎng)絡(luò)中,優(yōu)化目標(biāo) $Q_{\pi}\left(s_{t}, a_{t}\right) = r_{t}+Q_{\pi}\left(s_{t+1}, \pi\left(s_{t+1}\right)\right)$ 左右兩側(cè)會同時變化使得訓(xùn)練過程不穩(wěn)定,從而增大回歸的難度的問題。目標(biāo)網(wǎng)絡(luò)選擇將右邊部分,即 $r_{t}+Q_{\pi}\left(s_{t+1}, \pi\left(s_{t+1}\right)\right)$ 固定,通過改變左邊部分,即 $Q_{\pi}\left(s_{t}, a_{t}\right)$ 中的參數(shù)進(jìn)行回歸,這也是深度Q網(wǎng)絡(luò)應(yīng)用中比較重要的技巧。

  • 探索(exploration):我們在使用Q函數(shù)的時候,我們的策略完全取決于Q函數(shù),這有可能導(dǎo)致出現(xiàn)對應(yīng)的動作是固定的某幾個數(shù)值的情況,而不像策略梯度中的輸出是隨機(jī)的,我們再從隨機(jī)分布中采樣選擇動作。這會導(dǎo)致我們繼續(xù)訓(xùn)練的輸入值一樣,從而“加重”輸出的固定性,導(dǎo)致整個模型的表達(dá)能力急劇下降,這就是探索-利用窘境(exploration-exploitation dilemma)問題。我們可以使用 $\varepsilon$-貪心和玻爾茲曼探索(Boltzmann exploration)等探索方法進(jìn)行優(yōu)化。

  • 經(jīng)驗(yàn)回放(experience replay):其會構(gòu)建一個回放緩沖區(qū)(replay buffer)來保存許多經(jīng)驗(yàn),每一個經(jīng)驗(yàn)的形式如下:在某一個狀態(tài) $s_t$,采取某一個動作 $a_t$,得到獎勵 $r_t$,然后進(jìn)入狀態(tài) $s_{t+1}$。我們使用 $\pi$ 與環(huán)境交互多次,把收集到的經(jīng)驗(yàn)都存儲在回放緩沖區(qū)中。當(dāng)我們的緩沖區(qū)“裝滿”后,就會自動刪去最早進(jìn)入緩沖區(qū)的經(jīng)驗(yàn)。在訓(xùn)練時,對于每一輪迭代都有相對應(yīng)的批量(batch)(與我們訓(xùn)練普通的網(wǎng)絡(luò)一樣,都是通過采樣得到的),然后用這個批量中的經(jīng)驗(yàn)去更新我們的Q函數(shù)。綜上,Q函數(shù)在采樣和訓(xùn)練的時候,會用到過去的經(jīng)驗(yàn),所以這里稱這個方法為經(jīng)驗(yàn)回放,其也是深度Q網(wǎng)絡(luò)應(yīng)用中比較重要的技巧。

  • 雙深度Q網(wǎng)絡(luò)(double DQN):在雙深度Q網(wǎng)絡(luò)中存在兩個Q網(wǎng)絡(luò),第一個Q網(wǎng)絡(luò)決定哪一個動作的Q值最大,從而決定對應(yīng)的動作。另一方面,Q值是用 $Q"$ 計(jì)算得到的,這樣就可以避免過度估計(jì)的問題。具體地,假設(shè)我們有兩個Q函數(shù)并且第一個Q函數(shù)高估了它現(xiàn)在執(zhí)行的動作 $a$ 的值,這沒關(guān)系,只要第二個Q函數(shù) $Q"$ 沒有高估動作 $a$ 的值,那么計(jì)算得到的就還是正常的值。

  • 競爭深度Q網(wǎng)絡(luò)(dueling DQN):將原來的深度Q網(wǎng)絡(luò)的計(jì)算過程分為兩步。第一步計(jì)算一個與輸入有關(guān)的標(biāo)量 $\mathrm{V(s)}$;第二步計(jì)算一個向量 $\mathrm{A(s,a)}$ 對應(yīng)每一個動作。最后的網(wǎng)絡(luò)將兩步的結(jié)果相加,得到我們最終需要的Q值。用一個公式表示就是 $\mathrm{Q(s,a)=V(s)+A(s,a)}$ 。另外,競爭深度Q網(wǎng)絡(luò),使用狀態(tài)價值函數(shù)與動作價值函數(shù)來評估Q值。

  • 優(yōu)先級經(jīng)驗(yàn)回放(prioritized experience replay,PER):這個方法是為了解決我們在第6章中提出的經(jīng)驗(yàn)回放方法的不足而提出的。我們在使用經(jīng)驗(yàn)回放時,均勻地取出回放緩沖區(qū)(reply buffer)中的采樣數(shù)據(jù),這里并沒有考慮數(shù)據(jù)間的權(quán)重大小。但是我們應(yīng)該將那些訓(xùn)練效果不好的數(shù)據(jù)對應(yīng)的權(quán)重加大,即其應(yīng)該有更大的概率被采樣到。綜上,優(yōu)先級經(jīng)驗(yàn)回放不僅改變了被采樣數(shù)據(jù)的分布,還改變了訓(xùn)練過程。

  • 噪聲網(wǎng)絡(luò)(noisy net):其在每一個回合開始的時候,即智能體要和環(huán)境交互的時候,在原來的Q函數(shù)的每一個參數(shù)上加上一個高斯噪聲(Gaussian noise),把原來的Q函數(shù)變成 $\tilde{Q}$ ,即噪聲Q函數(shù)。同樣,我們把每一個網(wǎng)絡(luò)的權(quán)重等參數(shù)都加上一個高斯噪聲,就得到一個新的網(wǎng)絡(luò) $\tilde{Q}$ 。我們會使用這個新的網(wǎng)絡(luò)與環(huán)境交互直到結(jié)束。

  • 分布式Q函數(shù)(distributional Q-function):對深度Q網(wǎng)絡(luò)進(jìn)行模型分布,將最終網(wǎng)絡(luò)的輸出的每一類別的動作再進(jìn)行分布操作。

  • 彩虹(rainbow):將7個技巧/算法綜合起來的方法,7個技巧分別是——深度Q網(wǎng)絡(luò)、雙深度Q網(wǎng)絡(luò)、優(yōu)先級經(jīng)驗(yàn)回放的雙深度Q網(wǎng)絡(luò)、競爭深度Q網(wǎng)絡(luò)、異步優(yōu)勢演員-評論員算法(A3C)、分布式Q函數(shù)、噪聲網(wǎng)絡(luò),進(jìn)而考察每一個技巧的貢獻(xiàn)度或者與環(huán)境的交互是否是正反饋的。

2.常見問題匯總

2.為什么在深度Q網(wǎng)絡(luò)中采用價值函數(shù)近似的表示方法?

首先深度Q網(wǎng)絡(luò)為基于深度學(xué)習(xí)的Q學(xué)習(xí)算法,而在Q學(xué)習(xí)中,我們使用表格來存儲每一個狀態(tài)下動作的獎勵,即我們在正文中介紹的動作價值函數(shù) $Q(s,a)$ 。但是在我們的實(shí)際任務(wù)中,狀態(tài)量通常數(shù)量巨大,并且在連續(xù)任務(wù)中會遇到維度災(zāi)難等問題,使用真正的價值函數(shù)通常是不切實(shí)際的,所以使用了與價值函數(shù)近似的表示方法。

2.2 評論員的輸出通常與哪幾個值直接相關(guān)?

與狀態(tài)和演員直接相關(guān)。我們在討論輸出時通常是針對一個演員衡量一個狀態(tài)的好壞,也就是狀態(tài)、價值從本質(zhì)上來說是依賴于演員的。不同的演員在相同的狀態(tài)下也會有不同的輸出。

2.3 我們通常怎么衡量狀態(tài)價值函數(shù) $V_{\pi}(s)$ ?其優(yōu)勢和劣勢分別有哪些?

(1)基于蒙特卡洛的方法:本質(zhì)上就是讓演員與環(huán)境交互。評論員根據(jù)統(tǒng)計(jì)結(jié)果,將演員和狀態(tài)對應(yīng)起來,即如果演員看到某一狀態(tài) $s_a$ ,將預(yù)測接下來的累積獎勵有多大,如果看到另一個狀態(tài) $s_b$,將預(yù)測接下來的累積獎勵有多大。但是其普適性不好,其需要匹配到所有的狀態(tài)。如果我們面對的是一個簡單的例如貪吃蛇游戲等狀態(tài)有限的問題還可以應(yīng)對,但是如果我們面對的是一個圖片型的任務(wù),我們幾乎不可能將所有的狀態(tài)(對應(yīng)每一幀的圖像)的都“記錄”下來??傊?,其不能對未出現(xiàn)過的輸入狀態(tài)進(jìn)行對應(yīng)價值的輸出。

(2)基于蒙特卡洛的網(wǎng)絡(luò)方法:為了彌補(bǔ)上面描述的基于蒙特卡洛的方法的不足,我們將其中的狀態(tài)價值函數(shù) $V_{\pi}(s)$ 定義為一個網(wǎng)絡(luò),其可以對于從未出現(xiàn)過的輸入狀態(tài),根據(jù)網(wǎng)絡(luò)的泛化和擬合能力,“估測”出一個價值輸出。

(3)基于時序差分的網(wǎng)絡(luò)方法,即基于時序差分的網(wǎng)絡(luò):與我們在前4章介紹的蒙特卡洛方法與時序差分方法的區(qū)別一樣,基于時序差分的網(wǎng)絡(luò)方法和基于蒙特卡洛的網(wǎng)絡(luò)方法的區(qū)別也相同。在基于蒙特卡洛的方法中,每次我們都要計(jì)算累積獎勵,也就是從某一個狀態(tài) $s_a$ 一直到游戲結(jié)束的時候,得到的所有獎勵的總和。所以要應(yīng)用基于蒙特卡洛的方法時,我們必須至少把游戲玩到結(jié)束。但有些游戲要玩到游戲結(jié)束才能夠更新網(wǎng)絡(luò)花費(fèi)的時間太長了,因此我們會采用基于時序差分的網(wǎng)絡(luò)方法?;跁r序差分的網(wǎng)絡(luò)方法不需要把游戲玩到結(jié)束,只要在游戲某一個狀態(tài) $s_t$ 的時候,采取動作 $a_t$ 得到獎勵 $r_t$ ,進(jìn)入狀態(tài) $s_{t+1}$,就可以應(yīng)用基于時序差分的網(wǎng)絡(luò)方法。其公式與之前介紹的時序差分方法類似,即 $V_{\pi}\left(s_{t}\right)=V_{\pi}\left(s_{t+1}\right)+r_{t}$。

(4)基于蒙特卡洛方法和基于時序差分方法的區(qū)別在于: 蒙特卡洛方法本身具有很大的隨機(jī)性,我們可以將其 $G_a$ 視為一個隨機(jī)變量,所以其最終的偏差很大。而對于時序差分,其具有隨機(jī)的變量 $r$ 。因?yàn)樵跔顟B(tài) $s_t$ 采取同一個動作,所得的獎勵也不一定是一樣的,所以對于時序差分方法來說,$r$ 是一個隨機(jī)變量。但是相對于蒙特卡洛方法的 $G_a$ 來說,$r$ 的隨機(jī)性非常小,這是因?yàn)?$G_a$ 本身就是由很多的 $r$ 組合而成的。從另一個角度來說,在時序差分方法中,我們的前提是 $r_t=V_{\pi}\left(s_{t+1}\right)-V_{\pi}\left(s_{t}\right)$ ,但是我們通常無法保證 $V_{\pi}\left(s_{t+1}\right)$ 、$V_{\pi}\left(s_{t}\right)$ 計(jì)算的誤差為0。所以當(dāng) $V_{\pi}\left(s_{t+1}\right)$ 、$V_{\pi}\left(s_{t}\right)$ 計(jì)算得不準(zhǔn)確,得到的結(jié)果也會是不準(zhǔn)確的。總之,兩者各有優(yōu)劣。

(5)目前,基于時序差分的方法是比較常用的,基于蒙特卡洛的方法其實(shí)是比較少用的。

2.4 基于本章正文介紹的基于蒙特卡洛的網(wǎng)絡(luò)方法,我們怎么訓(xùn)練模型呢?或者我們應(yīng)該將其看作機(jī)器學(xué)習(xí)中什么類型的問題呢?

理想狀態(tài)下,我們期望對于一個輸入狀態(tài),輸出其無誤差的獎勵價值。對于價值函數(shù),如果輸入狀態(tài)是 $s_a$,正確的輸出價值應(yīng)該是 $G_a$。如果輸入狀態(tài)是 $s_b$,正確的輸出價值應(yīng)該是 $G_b$。所以在訓(xùn)練的時候,其就是一個典型的機(jī)器學(xué)習(xí)中的回歸問題。我們實(shí)際中需要輸出的僅僅是一個非精確值,即我們希望在輸入狀態(tài) $s_a$ 的時候,輸出價值與 $G_a$ 越近越好;輸入 $s_b$ 的時候,輸出價值與 $G_b$ 越近越好。其訓(xùn)練方法與我們在訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)等深度神經(jīng)網(wǎng)絡(luò)時的方法類似。

2.5 基于本章正文中介紹的基于時序差分的網(wǎng)絡(luò)方法,具體地,我們應(yīng)該怎么訓(xùn)練模型呢?

基于時序差分網(wǎng)絡(luò)的核心函數(shù)為 $V_{\pi}\left(s_{t}\right)=V_{\pi}\left(s_{t+1}\right)+r_{t}$。我們將狀態(tài) $s_t$ 輸入網(wǎng)絡(luò),因?yàn)閷?$s_t$ 輸入網(wǎng)絡(luò)會得到輸出 $V_{\pi}(s_t)$,同樣將 $s_{t+1}$ 輸入網(wǎng)絡(luò)會得到$V_{\pi}(s_{t+1})$。同時核心函數(shù) $V_{\pi}\left(s_{t}\right)=V_{\pi}\left(s_{t+1}\right)+r_{t}$ 告訴我們, $V_{\pi}(s_t)$ 減 $V_{\pi}(s_{t+1})$ 的值應(yīng)該是 $r_t$。我們希望它們兩個相減的損失值與 $r_t$ 盡可能地接近。這也是網(wǎng)絡(luò)的優(yōu)化目標(biāo),我們稱之為損失函數(shù)。

2.6 動作價值函數(shù)和狀態(tài)價值函數(shù)的有什么區(qū)別和聯(lián)系?

(1)狀態(tài)價值函數(shù)的輸入是一個狀態(tài),它根據(jù)狀態(tài)計(jì)算出當(dāng)前這個狀態(tài)以后的累積獎勵的期望值是多少。

(2)動作價值函數(shù)的輸入是狀態(tài)-動作對,即在某一個狀態(tài)采取某一個動作,同時假設(shè)我們都使用策略 $\pi$ ,得到的累積獎勵的期望值是多少。

2.7 請介紹Q函數(shù)的兩種表示方法。

?

(1)使用狀態(tài)-動作對表示時,即當(dāng)Q函數(shù)的輸入是狀態(tài)-動作對時,輸出就是一個標(biāo)量。

(2)僅使用狀態(tài)表示時,即當(dāng)Q函數(shù)的輸入僅是一個狀態(tài)時,輸出就是多個價值。

2.8 當(dāng)?shù)玫搅薗函數(shù)后,我們應(yīng)當(dāng)如何找到更好的策略 $\pi"$ 呢?或者說 $\pi"$ 的本質(zhì)是什么?

首先, $\pi"$ 由 $\pi^{\prime}(s)=\underset{a}{\arg \max} Q_{\pi}(s, a)$ 計(jì)算而得,其表示假設(shè)我們已經(jīng)學(xué)習(xí)出 $\pi$ 的Q函數(shù),對于某一個狀態(tài) $s$ ,把所有可能的動作 $a$ 一一代入這個Q函數(shù),看看哪一個動作 $a$ 可以讓Q函數(shù)的價值最大,那么該動作就是 $\pi"$ 將會執(zhí)行的動作。所以根據(jù)以上方法決定動作的策略 $\pi"$ 一定比原來的策略 $\pi$ 要好,即 $V_{\pi^{\prime}}(s) \geqslant V_{\pi}(s)$ 。

2.9 解決探索-利用窘境問題的探索的方法有哪些?

(1) $\varepsilon$-貪心: 我們有 $1-\varepsilon$ 的概率(通常 $\varepsilon$ 很?。┩耆凑誕函數(shù)決定動作,但是有 $\varepsilon$ 的概率使得動作是隨機(jī)的。通常在實(shí)現(xiàn)上, $\varepsilon$的值會隨著時間遞減。也就是在最開始的時候,因?yàn)檫€不知道哪個動作是比較好的,所以我們會花比較大的力氣做探索。接下來隨著訓(xùn)練的次數(shù)越來越多,我們已經(jīng)比較確定哪一種策略是比較好的,就會減少探索,從而把 $\varepsilon$ 的值變小,主要根據(jù)Q函數(shù)來決定未來的動作,隨機(jī)性就會變小。

(2) 玻爾茲曼探索:這個方法比較像策略梯度。在策略梯度里面,網(wǎng)絡(luò)的輸出是一個期望動作空間上的一個概率分布,我們根據(jù)概率分布去采樣。所以也可以根據(jù)Q值確定一個概率分布,假設(shè)某一個動作的Q值越大,代表它越好,我們采取這個動作的概率就越高。

2.10 我們使用經(jīng)驗(yàn)回放有什么好處

(1)首先,在強(qiáng)化學(xué)習(xí)的整個過程中,最花時間的過程是與環(huán)境交互,使用GPU乃至TPU來訓(xùn)練網(wǎng)絡(luò)相對來說是比較快的。而用回放緩沖區(qū)可以減少與環(huán)境交互的次數(shù)。因?yàn)樵谟?xùn)練的時候,我們的經(jīng)驗(yàn)不需要通通來自于某一個策略(或者當(dāng)前時刻的策略)。一些由過去的策略所得到的經(jīng)驗(yàn)可以放在回放緩沖區(qū)中被使用多次,被反復(fù)地再利用,這樣采樣到的經(jīng)驗(yàn)才能被高效地利用。

(2)另外,在訓(xùn)練網(wǎng)絡(luò)的時候,我們其實(shí)希望一個批量里面的數(shù)據(jù)越多樣越好。如果一個批量里面的數(shù)據(jù)都是同性質(zhì)的,我們訓(xùn)練出的模型的擬合能力可能不會很樂觀。如果一個批量里面都是一樣的數(shù)據(jù),在訓(xùn)練的時候,擬合效果會比較差。如果回放緩沖區(qū)里面的經(jīng)驗(yàn)通通來自于不同的策略,那么采樣到的一個批量里面的數(shù)據(jù)會是比較多樣的。這樣可以保證我們的模型的性能至少不會很差。

2.11 在經(jīng)驗(yàn)回放中我們觀察 $\pi$ 的價值,發(fā)現(xiàn)里面混雜了一些不是 $\pi$ 的經(jīng)驗(yàn),這會有影響嗎?

沒影響。這并不是因?yàn)檫^去的 $\pi$ 與現(xiàn)在的 $\pi"$ 很相似,就算過去的$\pi$ 不是很相似,其實(shí)也是沒有關(guān)系的。主要的原因是我們并不是去采樣一條軌跡,我們只能采樣一個經(jīng)驗(yàn),所以與是不是異策略是沒有關(guān)系的。就算是異策略,就算是這些經(jīng)驗(yàn)不是來自 $\pi$,我們還是可以使用這些經(jīng)驗(yàn)來估測 $Q_{\pi}(s,a)$。

2.12 為什么傳統(tǒng)的深度Q網(wǎng)絡(luò)的效果并不好?可以參考其公式 $Q(s_t ,a_t)=r_t+\max_{a}Q(s_{t+1},a)$ 來描述。

因?yàn)閷?shí)際應(yīng)用時,需要讓 $Q(s_t ,a_t)$ 與 $r_t+\max_{a}Q(s_{t+1},a)$ 盡可能相等,即與我們的目標(biāo)越接近越好??梢园l(fā)現(xiàn),目標(biāo)值很容易一不小心就被設(shè)置得太高,因?yàn)樵谟?jì)算該目標(biāo)值的時候,我們實(shí)際上在做的事情是看哪一個動作 $a$ 可以得到最大的Q值,就把它加上去,使其成為我們的目標(biāo)。

例如,現(xiàn)在有4個動作,本來它們得到的Q值都是差不多的,它們得到的獎勵也都是差不多的,但是在估算的時候是有誤差的。如果第1個動作被高估了,那目標(biāo)就會執(zhí)行該動作,然后就會選這個高估的動作的Q值加上 $r_t$ 當(dāng)作目標(biāo)值。如果第4個動作被高估了,那目標(biāo)就會選第4個動作的Q值加上 $r_t$ 當(dāng)作目標(biāo)值。所以目標(biāo)總是會選那個Q值被高估的動作,我們也總是會選那個獎勵被高估的動作的Q值當(dāng)作Q值的最大值的結(jié)果去加上 $r_t$ 當(dāng)作新目標(biāo)值,因此目標(biāo)值總是太大。

2.13 在傳統(tǒng)的深度Q網(wǎng)絡(luò)中,我們應(yīng)該怎么解決目標(biāo)值太大的問題呢?

我們可以使用雙深度Q網(wǎng)絡(luò)解決這個問題。首先,在雙深度Q網(wǎng)絡(luò)里面,選動作的Q函數(shù)與計(jì)算價值的Q函數(shù)不同。在深度Q網(wǎng)絡(luò)中,需要窮舉所有的動作 $a$,把每一個動作 $a$ 都代入Q函數(shù)并計(jì)算哪一個動作 $a$ 反饋的Q值最大,就把這個Q值加上 $r_t$ 。但是對于雙深度Q網(wǎng)絡(luò)的兩個Q網(wǎng)絡(luò),第一個Q網(wǎng)絡(luò)決定哪一個動作的Q值最大,以此來決定選取的動作。我們的Q值是用 $Q"$ 算出來的,這樣有什么好處呢?為什么這樣就可以避免過度估計(jì)的問題呢?假設(shè)我們有兩個Q函數(shù),如果第一個Q函數(shù)高估了它現(xiàn)在選出來的動作 $a$ 的值,那沒關(guān)系,只要第二個Q函數(shù) $Q"$ 沒有高估這個動作 $a$ 的值,計(jì)算得到的就還是正常值。假設(shè)反過來是 $Q"$ 高估了某一個動作的值,那也不會產(chǎn)生過度估計(jì)的問題。

2.14 請問雙深度Q網(wǎng)絡(luò)中所謂的 $Q$ 與 $Q"$ 兩個網(wǎng)絡(luò)的功能是什么?

在雙深度Q網(wǎng)絡(luò)中存在兩個Q網(wǎng)絡(luò),一個是目標(biāo)的Q網(wǎng)絡(luò),一個是真正需要更新的Q網(wǎng)絡(luò)。具體實(shí)現(xiàn)方法是使用需要更新的Q網(wǎng)絡(luò)選動作,然后使用目標(biāo)的Q網(wǎng)絡(luò)計(jì)算價值。雙深度Q網(wǎng)絡(luò)相較于深度Q網(wǎng)絡(luò)的更改是最少的,它幾乎沒有增加任何的運(yùn)算量,甚至連新的網(wǎng)絡(luò)都不需要。唯一要改變的就是在找最佳動作 $a$ 的時候,本來使用 $Q"$ 來計(jì)算,即用目標(biāo)的Q網(wǎng)絡(luò)來計(jì)算,現(xiàn)在改成用需要更新的Q網(wǎng)絡(luò)來計(jì)算。

2.15 如何理解競爭深度Q網(wǎng)絡(luò)的模型變化帶來的好處?

對于 $\mathrm{Q}(s,a)$ ,其對應(yīng)的狀態(tài)由于為表格的形式,因此是離散的,而實(shí)際中的狀態(tài)卻不是離散的。對于 $\mathrm{Q}(s,a)$ 的計(jì)算公式—— $\mathrm{Q}(s,a)=\mathrm{V}(s)+\mathrm{A}(s,a)$ 。其中的 $\mathrm{V}(s)$ 對于不同的狀態(tài)都有值, $\mathrm{A}(s,a)$ 對于不同的狀態(tài)都有不同的動作對應(yīng)的值。所以從本質(zhì)上來說,我們最終矩陣 $\mathrm{Q}(s,a)$ 的結(jié)果是將每一個 $\mathrm{V}(s)$ 加到矩陣 $\mathrm{A}(s,a)$ 中得到的。從模型的角度考慮,我們的網(wǎng)絡(luò)直接改變的不是 $\mathrm{Q}(s,a)$ ,而是改變的 $\mathrm{V}$、$\mathrm{A}$ 。但是有時我們更新時不一定會將 $\mathrm{V}(s)$ 和 $\mathrm{Q}(s,a)$ 都更新。將狀態(tài)和動作對分成兩個部分后,我們就不需要將所有的狀態(tài)-動作對都采樣一遍,我們可以使用更高效的估計(jì)Q值的方法將最終的 $\mathrm{Q}(s,a)$ 計(jì)算出來。

2.16 使用蒙特卡洛和時序差分平衡方法的優(yōu)劣分別有哪些?

優(yōu)勢:時序差分方法只采樣了一步,所以某一步得到的數(shù)據(jù)是真實(shí)值,接下來的都是Q值估測出來的。使用蒙特卡洛和時序差分平衡方法采樣比較多步,如采樣$N$步才估測價值,所以估測的部分所造成的影響就會比較小。

劣勢:因?yàn)橹悄荏w的獎勵比較多,所以當(dāng)我們把$N$步的獎勵加起來時,對應(yīng)的方差就會比較大。為了緩解方差大的問題,我們可以通過調(diào)整$N$值,在方差與不精確的Q值之間取得一個平衡。這里介紹的參數(shù)$N$是超參數(shù),需要微調(diào)參數(shù) $N$,例如是要多采樣3步、還是多采樣5步。

2.17 深度Q網(wǎng)絡(luò)相比基于策略梯度的方法為什么訓(xùn)練效果更好、更平穩(wěn)?

在深度Q網(wǎng)絡(luò)中,只要能夠估計(jì)出Q函數(shù),就可以找到一個比較好的策略。同樣地,只要能夠估計(jì)出Q函數(shù),就可以增強(qiáng)對應(yīng)的策略。因?yàn)楣烙?jì)Q函數(shù)是一個比較容易的回歸問題,在這個回歸問題中,我們可以時刻觀察模型訓(xùn)練的效果是不是越來越好(一般情況下我們只需要關(guān)注回歸的損失有沒有下降,就可以判斷模型學(xué)習(xí)得好不好),所以估計(jì)Q函數(shù)相較于學(xué)習(xí)一個策略來說是比較容易的。只需要估計(jì)Q函數(shù),就可以保證現(xiàn)在一定會得到比較好的策略,同樣其也比較容易操作。對比來說,策略梯度方法中的優(yōu)化目標(biāo)是最大化總回報,但是我們很難找到一個明確的損失函數(shù)來進(jìn)行優(yōu)化,其本質(zhì)上是一個策略搜索問題,也就是一個無約束的優(yōu)化問題。

2.18 深度Q網(wǎng)絡(luò)在處理連續(xù)動作時存在什么樣的問題呢?對應(yīng)的解決方法有哪些呢?

我們在日常生活中常見的問題大都是包含連續(xù)動作的,例如智能體要進(jìn)行自動駕駛,其就需要決定方向盤要左轉(zhuǎn)幾度或右轉(zhuǎn)幾度,這就是連續(xù)的動作;假設(shè)智能體是一個機(jī)器人,它身上有50個關(guān)節(jié),它的每一個動作就對應(yīng)到這50個關(guān)節(jié)的角度,這些角度也是連續(xù)的。

然而在使用深度Q網(wǎng)絡(luò)時,很重要的一步是要求能夠解決對應(yīng)的優(yōu)化問題。當(dāng)我們預(yù)估出Q函數(shù) $Q(s,a)$ 以后,必須要找到一個動作,它可以讓 $Q(s,a)$ 最大。假設(shè)動作是離散的,那么動作 $a$ 的可能性是有限的。但如果動作是連續(xù)的,我們就不能像對離散的動作一樣,窮舉所有可能的動作了。

為了解決這個問題,有以下幾種方案。

(1)第一個方案:我們可以使用采樣方法,即隨機(jī)采樣出$N$個可能的動作,然后一個一個代入Q函數(shù)中,計(jì)算對應(yīng)的$N$個Q值,并比較哪一個最大。但是這個方案因?yàn)槭褂貌蓸臃椒ㄋ圆粫浅>_。

(2)第二個方案:我們將這個連續(xù)動作問題,建模為一個優(yōu)化問題,從而可以用梯度上升去最大化我們的目標(biāo)函數(shù)。具體地,我們將動作視為變量,使用梯度上升更新動作對應(yīng)的Q值。但是這個方案通常時間花銷比較大,因?yàn)槠湫枰?jì)算。

(3)第三個方案:設(shè)計(jì)一個特別的網(wǎng)絡(luò)架構(gòu),即設(shè)計(jì)一個特別的Q函數(shù),使得求解讓Q函數(shù)最大化的動作 $a$ 變得非常容易。也就是這里的Q函數(shù)不是一個廣義的Q函數(shù),我們可以使用特殊方法設(shè)計(jì)Q函數(shù),使得尋找讓這個Q函數(shù)最大的動作 $a$ 非常容易。但是這個方案的Q函數(shù)不能隨意設(shè)計(jì),其必須有一些額外的限制。

(4)第四個方案:不用深度Q網(wǎng)絡(luò),畢竟用其處理連續(xù)動作比較麻煩。

3.面試必知必答

3.1 友善的面試官:請問深度Q網(wǎng)絡(luò)是什么?其兩個關(guān)鍵性的技巧分別是什么?

深度Q網(wǎng)絡(luò)是基于深度學(xué)習(xí)的Q學(xué)習(xí)算法,其結(jié)合了價值函數(shù)近似與神經(jīng)網(wǎng)絡(luò)技術(shù),并采用了目標(biāo)網(wǎng)絡(luò)和經(jīng)驗(yàn)回放技巧進(jìn)行網(wǎng)絡(luò)的訓(xùn)練。目標(biāo)網(wǎng)絡(luò)和經(jīng)驗(yàn)回放

3.2 友善的面試官:那我們繼續(xù)分析!你剛才提到的深度Q網(wǎng)絡(luò)中的兩個技巧————目標(biāo)網(wǎng)絡(luò)和經(jīng)驗(yàn)回放,其具體作用是什么呢?

在深度Q網(wǎng)絡(luò)中某個動作價值函數(shù)的更新依賴于其他動作價值函數(shù)。如果我們一直更新價值網(wǎng)絡(luò)的參數(shù),會導(dǎo)致更新目標(biāo)不斷變化,也就是我們在追逐一個不斷變化的目標(biāo),這樣勢必會不太穩(wěn)定。為了解決基于時序差分的網(wǎng)絡(luò)中,優(yōu)化目標(biāo) $Q_{\pi}\left(s_{t}, a_{t}\right) =r_{t}+Q_{\pi}\left(s_{t+1}, \pi\left(s_{t+1}\right)\right)$ 左右兩側(cè)會同時變化使得訓(xùn)練過程不穩(wěn)定,從而增大回歸難度的問題,目標(biāo)網(wǎng)絡(luò)選擇將優(yōu)化目標(biāo)的右邊即 $r_{t}+Q_{\pi}\left(s_{t+1}, \pi\left(s_{t+1}\right)\right)$ 固定,通過改變優(yōu)化目標(biāo)左邊的網(wǎng)絡(luò)參數(shù)進(jìn)行回歸。對于經(jīng)驗(yàn)回放,其會構(gòu)建一個回放緩沖區(qū),用來保存許多數(shù)據(jù),每一個數(shù)據(jù)的內(nèi)容包括:狀態(tài) $s_t$、采取的動作 $a_t$、得到的獎勵 $r_t$、下一個狀態(tài) $s_{t+1}$。我們使用 $\pi$ 與環(huán)境交互多次,把收集到的數(shù)據(jù)都放到回放緩沖區(qū)中。當(dāng)回放緩沖區(qū)“裝滿”后,就會自動刪去最早進(jìn)入緩沖區(qū)的數(shù)據(jù)。在訓(xùn)練時,對于每一輪迭代都有相對應(yīng)的批量(與我們訓(xùn)練普通網(wǎng)絡(luò)一樣,通過采樣得到),然后用這個批量中的數(shù)據(jù)去更新Q函數(shù)。即Q函數(shù)在采樣和訓(xùn)練的時候會用到過去的經(jīng)驗(yàn)數(shù)據(jù),也可以消除樣本之間的相關(guān)性。

3.3 友善的面試官:深度Q網(wǎng)絡(luò)和Q學(xué)習(xí)有什么異同點(diǎn)?

整體來說,從名稱就可以看出,兩者的目標(biāo)價值以及價值的更新方式基本相同。但有如下不同點(diǎn):

(1)首先,深度Q網(wǎng)絡(luò)將Q學(xué)習(xí)與深度學(xué)習(xí)結(jié)合,用深度網(wǎng)絡(luò)來近似動作價值函數(shù),而Q學(xué)習(xí)則是采用表格進(jìn)行存儲。

(2)深度Q網(wǎng)絡(luò)采用了經(jīng)驗(yàn)回放的技巧,從歷史數(shù)據(jù)中隨機(jī)采樣,而Q學(xué)習(xí)直接采用下一個狀態(tài)的數(shù)據(jù)進(jìn)行學(xué)習(xí)。

3.4 友善的面試官:請問,隨機(jī)性策略和確定性策略有什么區(qū)別嗎?

隨機(jī)性策略表示為某個狀態(tài)下動作取值的分布,確定性策略在每個狀態(tài)只有一個確定的動作可以選。從熵的角度來說,確定性策略的熵為0,沒有任何隨機(jī)性。隨機(jī)性策略有利于我們進(jìn)行適度的探索,確定性策略不利于進(jìn)行探索。

3.5 友善的面試官:請問不打破數(shù)據(jù)相關(guān)性,神經(jīng)網(wǎng)絡(luò)的訓(xùn)練效果為什么就不好?

在神經(jīng)網(wǎng)絡(luò)中通常使用隨機(jī)梯度下降法。隨機(jī)的意思是我們隨機(jī)選擇一些樣本來增量式地估計(jì)梯度,比如常用的批量訓(xùn)練方法。如果樣本是相關(guān)的,就意味著前后兩個批量很可能也是相關(guān)的,那么估計(jì)的梯度也會呈現(xiàn)出某種相關(guān)性。但是在極端條件下,后面的梯度估計(jì)可能會抵消掉前面的梯度估計(jì)量,從而使得訓(xùn)練難以收斂。

3.6 友善的面試官:深度Q網(wǎng)絡(luò)都有哪些變種?引入狀態(tài)獎勵的是哪種?

深度Q網(wǎng)絡(luò)有3個經(jīng)典的變種:雙深度Q網(wǎng)絡(luò)、競爭深度Q網(wǎng)絡(luò)、優(yōu)先級雙深度Q網(wǎng)絡(luò)。

(1)雙深度Q網(wǎng)絡(luò):將動作選擇和價值估計(jì)分開,避免Q值被過高估計(jì)。

(2)競爭深度Q網(wǎng)絡(luò):將Q值分解為狀態(tài)價值和優(yōu)勢函數(shù),得到更多有用信息。

(3)優(yōu)先級雙深度Q網(wǎng)絡(luò):將經(jīng)驗(yàn)池中的經(jīng)驗(yàn)按照優(yōu)先級進(jìn)行采樣。

3.7 友善的面試官:請簡述雙深度Q網(wǎng)絡(luò)原理。

深度Q網(wǎng)絡(luò)由于總是選擇當(dāng)前最優(yōu)的動作價值函數(shù)來更新當(dāng)前的動作價值函數(shù),因此存在過估計(jì)問題(估計(jì)的價值函數(shù)值大于真實(shí)的價值函數(shù)值)。為了解耦這兩個過程,雙深度Q網(wǎng)絡(luò)使用兩個價值網(wǎng)絡(luò),一個網(wǎng)絡(luò)用來執(zhí)行動作選擇,然后用另一個網(wǎng)絡(luò)的價值函數(shù)對應(yīng)的動作值更新當(dāng)前網(wǎng)絡(luò)。

3.8 友善的面試官:請問競爭深度Q網(wǎng)絡(luò)模型有什么優(yōu)勢呢?

對于 $\boldsymbol{Q}(s,a)$ ,其對應(yīng)的狀態(tài)由于為表格的形式,因此是離散的,而實(shí)際的狀態(tài)大多不是離散的。對于Q值 $\boldsymbol{Q}(s,a)=V(s)+\boldsymbol{A}(s,a)$ 。其中的 $V(s)$ 是對于不同的狀態(tài)都有值, $\boldsymbol{A}(s,a)$ 對于不同的狀態(tài)都有不同的動作對應(yīng)的值。所以本質(zhì)上,我們最終的矩陣 $\boldsymbol{Q}(s,a)$ 是將每一個 $V(s)$ 加到矩陣 $\boldsymbol{A}(s,a)$ 中得到的。但是有時我們更新時不一定會將 $V(s)$ 和 $\boldsymbol{Q}(s,a)$ 都更新。我們將其分成兩個部分后,就不需要將所有的狀態(tài)-動作對都采樣一遍,我們可以使用更高效的估計(jì)Q值的方法將最終的 $\boldsymbol{Q}(s,a)$ 計(jì)算出來。

更多優(yōu)質(zhì)內(nèi)容請關(guān)注公號:汀丶人工智能

關(guān)鍵詞:

責(zé)任編輯:

免責(zé)聲明

頭條新聞

精彩推送

新聞推送