從零開始強(qiáng)化學(xué)習(xí)(五)——Deep Q-network(DQN)

五. Deep Q-network(DQN)

現(xiàn)實(shí)中強(qiáng)化學(xué)習(xí)面臨的狀態(tài)空間往往是連續(xù)的,存在無窮多個(gè)狀態(tài)。這種情況下,就不能再使用表格對價(jià)值函數(shù)進(jìn)行存儲(chǔ),采用價(jià)值函數(shù)近似(Value Function Approximation)的方式進(jìn)行逼近

在連續(xù)的狀態(tài)和動(dòng)作空間中,可以用函數(shù)Q_\phi(s,a)來表示近似計(jì)算:
Q_\phi(s,a) \approx Q^\pi(s,a)
其中函數(shù)Q_\phi(s,a)通常是一個(gè)參數(shù)為\phi的函數(shù),比如神經(jīng)網(wǎng)絡(luò)

5.1 狀態(tài)價(jià)值函數(shù)(State Value Function)

衡量這個(gè)狀態(tài)價(jià)值函數(shù)V^{\pi}(s),有兩種不同的做法:MC-based的方法和TD-based的方法:

5.1.1 蒙特卡洛法
  • 方法:

    • 輸入一個(gè)狀態(tài),輸出接下來的累計(jì)獎(jiǎng)勵(lì)。是一個(gè)回歸問題。網(wǎng)絡(luò)的輸出就是一個(gè)值,你希望在輸入s_a的時(shí)候,輸出的值跟 G_a越近越好,輸入s_b的時(shí)候,輸出的值跟G_b越近越好,把網(wǎng)絡(luò)訓(xùn)練下去就是MC-based的方法
  • 問題:

    • 由于每次都要計(jì)算累積獎(jiǎng)勵(lì),所以必須等待游戲結(jié)束才能更新網(wǎng)絡(luò),這樣花的時(shí)間太長
    • 方差很大。本身具有隨機(jī)性,累積獎(jiǎng)勵(lì)可以看成是一個(gè)隨機(jī)變量


5.1.2 時(shí)序差分法
  • 方法:

    • 假設(shè)在某一個(gè)狀態(tài)s_t,采取動(dòng)作a_t得到獎(jiǎng)勵(lì)r_t ,跳到狀態(tài)s_{t+1} ,則有:

    V^\pi(s_t) = V^\pi(s_{t+1})+r_t

    • 希望V^\pi(s_t)V^\pi(s_{t+1})相減的損失跟r_t相似,并以此更新V的參數(shù)

5.2 動(dòng)作價(jià)值函數(shù)(State-action Value Function)

動(dòng)作價(jià)值函數(shù)的輸入是狀態(tài)、動(dòng)作對。表示在某一個(gè)狀態(tài)采取某一個(gè)動(dòng)作,都是用演員\pi,得到的累計(jì)獎(jiǎng)勵(lì)期望值
Q函數(shù)的兩種寫法:

  1. 輸入是狀態(tài)和動(dòng)作,輸出是一個(gè)標(biāo)量
  2. 輸入是狀態(tài),輸出是多個(gè)值(只有離散動(dòng)作才能使用)

方法:

  • 假設(shè)有一個(gè)Q函數(shù)和某一個(gè)策略\pi,根據(jù)策略\pi學(xué)習(xí)出的Q函數(shù),保證可以找到一個(gè)\pi好的新的策略\pi',在用相同方法找它的Q函數(shù)以及新的更好的策略\pi'(s) = \arg \max\limits_a Q^\pi(s,a)

證明:為什么用Q^\pi(s,a)決定出來的\pi'一定比\pi

  1. V π ( s ) = Q π ( s , a ) V^\pi(s)=Q^\pi(s,a)V
  2. \max_a Q^\pi(s,a) = Q^\pi(s,\pi'(s))max

由1、2式可得:

  1. V^{\pi}(s) \leq Q^\pi(s,\pi'(s))
  2. Q^\pi(s,\pi'(s)) = E[r_t+V^\pi(s_{t+1})|s_t=s,a_t=\pi'(s)]

綜合3、4可得:V^{\pi}(s) \leq E[r_t+r_{t+1}V^\pi(s_{t+2})|s_t=s,a_t=\pi'(s)]
=E[r_t+r_{t+1}+r_{t+2}+V^\pi(s_{t+3})|s_t=s,a_t=\pi'(s)]=E[r_t+r_{t+1}+r_{t+2}+\cdots|s_t=s,a_t=\pi'(s)]=V^{\pi'}(s)

即證畢,對于估計(jì)某一個(gè)策略的Q-function,接下來就可以找到另外一個(gè)策略\pi'比原來的策略還要更好


5.3 目標(biāo)網(wǎng)絡(luò)(target network)

在學(xué)習(xí)Q-function的時(shí)候,會(huì)用到TD的概念。那怎么用TD?在狀態(tài)s_t,采取動(dòng)作a_t以后,得到獎(jiǎng)勵(lì)r_t,然后跳到狀態(tài)s_{t+1}。根據(jù)這個(gè)Q-function:
\mathrm{Q}^{\pi}\left(s_{t}, a_{t}\right) =r_{t}+\mathrm{Q}^{\pi}\left(s_{t+1}, \pi\left(s_{t+1}\right)\right)
但是實(shí)際上這樣的一個(gè)輸入并不好學(xué)習(xí),因?yàn)榧僭O(shè)這是一個(gè)回歸問題,\mathrm{Q}^{\pi}\left(s_{t}, a_{t}\right)是網(wǎng)絡(luò)的輸出,r_{t}+\mathrm{Q}^{\pi}\left(s_{t+1}, \pi\left(s_{t+1}\right)\right)是目標(biāo),實(shí)際上目標(biāo)是可變的。在做反向傳播的時(shí)候,Q^{\pi}的參數(shù)會(huì)被更新,并會(huì)把兩個(gè)更新的結(jié)果加在一起,這樣會(huì)導(dǎo)致訓(xùn)練變得不太穩(wěn)定

所以可以把其中一個(gè)Q網(wǎng)絡(luò),通常是會(huì)把右邊這個(gè)Q網(wǎng)絡(luò)固定住。在訓(xùn)練的時(shí)候只更新左邊的Q網(wǎng)絡(luò)的參數(shù),而右邊的Q網(wǎng)絡(luò)的參數(shù)會(huì)被固定住。因?yàn)橛疫叺?*Q網(wǎng)絡(luò)負(fù)責(zé)產(chǎn)生目標(biāo),所以叫目標(biāo)網(wǎng)絡(luò)**。因?yàn)槟繕?biāo)網(wǎng)絡(luò)是固定的,所以得到的目標(biāo)r_{t}+\mathrm{Q}^{\pi}\left(s_{t+1}, \pi\left(s_{t+1}\right)\right)的值也是固定的。只調(diào)左邊網(wǎng)絡(luò)的參數(shù),它就變成是一個(gè)回歸問題。希望模型的輸出的值跟目標(biāo)越接近越好,可以最小化它的均方誤差(mean square error)

在實(shí)現(xiàn)的時(shí)候,把目標(biāo)網(wǎng)絡(luò)固定,只調(diào)模型輸出的網(wǎng)絡(luò)。在把輸出的網(wǎng)絡(luò)更新幾次以后,再去用更新的網(wǎng)絡(luò)替換目標(biāo)網(wǎng)絡(luò)

5.4 探索(Exploration)

這個(gè)問題其實(shí)就是探索-利用窘境(Exploration-Exploitation dilemma)問題

當(dāng)使用Q函數(shù)時(shí),策略完全取決于Q函數(shù)。在采取動(dòng)作的時(shí)候,會(huì)采取Q值最大的動(dòng)作。這樣可能會(huì)一直采取相同的動(dòng)作,所以需要探索機(jī)制,避免一直采取相同的動(dòng)作

5.4.1 ε-貪心(ε-greedy)
  • 定義:

    • 有1-ε的概率會(huì)按照Q函數(shù)決定動(dòng)作,主要根據(jù)Q函數(shù)決定動(dòng)作,比較少隨機(jī)決定動(dòng)作:
      \pi(a|s)= \begin{cases} \underset{a}{\operatorname{argmax}}Q(s,a)\ \ \ \ 1-ε\\ 隨機(jī)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ε \end{cases}

    • 通常ε會(huì)隨時(shí)間遞減。隨著訓(xùn)練次數(shù)的增多可以減少探索

  • 對象:

    • 無法嘗試Q值比較差的動(dòng)作,可能的動(dòng)作有:
      • 最大Q值對應(yīng)動(dòng)作
      • 隨機(jī)動(dòng)作
5.4.2 玻爾茲曼探索(Bolzman Exploration)
  • 定義:

    • 輸出動(dòng)作空間上的概率分布,根據(jù)概率分布采樣選擇動(dòng)作(取指數(shù) --> 歸一化)
      P(a|s) = \frac{\exp(Q(s,a))}{\sum_a \exp(Q(s,a))}
  • 對象:

    • 根據(jù)Q值確定了動(dòng)作空間的概率分布,可以通過采樣選擇任意動(dòng)作

5.5 經(jīng)驗(yàn)回放(Experience Replay)

思想:構(gòu)建一個(gè)回訪緩沖區(qū)(replay buffer),會(huì)將策略與環(huán)境互動(dòng)收集的數(shù)據(jù)(狀態(tài)-動(dòng)作-獎(jiǎng)勵(lì)...)放到緩沖區(qū)中。循環(huán)迭代訓(xùn)練Q函數(shù)時(shí),會(huì)從數(shù)據(jù)緩沖區(qū)隨機(jī)挑一個(gè)批量(batch)出來更新Q函數(shù)。

迭代地去訓(xùn)練這個(gè)Q-function,在每次迭代里面,從這個(gè)buffer里面隨機(jī)挑一個(gè)batch出來,根據(jù)這把經(jīng)驗(yàn)去更新Q-function,就跟TD learning要有一個(gè)目標(biāo)網(wǎng)絡(luò)是一樣的

特點(diǎn):

  • 回訪緩沖區(qū)內(nèi)的經(jīng)驗(yàn)可能來自不同策略
  • 異策略(off-policy)
  • 減少了跟環(huán)境做互動(dòng)的次數(shù),數(shù)據(jù)利用高效
  • 多樣化的訓(xùn)練數(shù)據(jù)

5.6 DQN原理

DQN使用深度卷積神經(jīng)網(wǎng)絡(luò)近似擬合狀態(tài)動(dòng)作值函數(shù)Q(s,a),其網(wǎng)絡(luò)結(jié)構(gòu)如上圖所示。DQN模型的輸入是距離當(dāng)前時(shí)刻最近的4幀圖像,該輸入經(jīng)過3個(gè)卷積層和2個(gè)全連接層的非線性變化后,最終在輸出層輸出每個(gè)動(dòng)作對應(yīng)的Q值


算法:

  1. 初始化兩個(gè)網(wǎng)絡(luò)Q,\hat{Q},開始目標(biāo)網(wǎng)絡(luò)\hat{Q}等于Q
  2. 基于Q函數(shù)探索機(jī)制Q(ε,玻爾茲曼)選擇動(dòng)作,獲得獎(jiǎng)勵(lì),狀態(tài)從s_t跳到s_{t+1}
  3. 將數(shù)據(jù)經(jīng)驗(yàn)(s_t,a_t,r_{t+1},s_{t+1})塞到數(shù)據(jù)緩沖區(qū)中
  4. 從緩沖區(qū)中采樣一批量的數(shù)據(jù),根據(jù)數(shù)據(jù)計(jì)算目標(biāo):y=r_i+\max_a \hat{Q}(s_{i+1},a)
  5. 更新Q的參數(shù)使得Q(s_i,a_i)盡可能接近于y(回歸)
  6. 每C步更新目標(biāo)網(wǎng)絡(luò)\hat{Q}=Q
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容