五. Deep Q-network(DQN)
現(xiàn)實中強化學(xué)習(xí)面臨的狀態(tài)空間往往是連續(xù)的,存在無窮多個狀態(tài)。這種情況下,就不能再使用表格對價值函數(shù)進行存儲,采用價值函數(shù)近似(Value Function Approximation)的方式進行逼近
在連續(xù)的狀態(tài)和動作空間中,可以用函數(shù)來表示近似計算:
其中函數(shù)通常是一個參數(shù)為
的函數(shù),比如神經(jīng)網(wǎng)絡(luò)
5.1 狀態(tài)價值函數(shù)(State Value Function)
衡量這個狀態(tài)價值函數(shù),有兩種不同的做法:
MC-based
的方法和TD-based
的方法:
5.1.1 蒙特卡洛法
-
方法:
- 輸入一個狀態(tài),輸出接下來的累計獎勵。是一個回歸問題。網(wǎng)絡(luò)的輸出就是一個值,你希望在輸入
的時候,輸出的值跟
越近越好,輸入
的時候,輸出的值跟
越近越好,把網(wǎng)絡(luò)訓(xùn)練下去就是
MC-based
的方法
- 輸入一個狀態(tài),輸出接下來的累計獎勵。是一個回歸問題。網(wǎng)絡(luò)的輸出就是一個值,你希望在輸入
-
問題:
- 由于每次都要計算累積獎勵,所以必須等待游戲結(jié)束才能更新網(wǎng)絡(luò),這樣花的時間太長
-
方差很大。本身具有隨機性,累積獎勵可以看成是一個隨機變量
5.1.2 時序差分法
-
方法:
- 假設(shè)在某一個狀態(tài)
,采取動作
得到獎勵
,跳到狀態(tài)
,則有:
- 希望
和
相減的損失跟
相似,并以此更新V的參數(shù)
- 假設(shè)在某一個狀態(tài)
5.2 動作價值函數(shù)(State-action Value Function)
動作價值函數(shù)的輸入是狀態(tài)、動作對。表示在某一個狀態(tài)采取某一個動作,都是用演員,得到的累計獎勵期望值
Q函數(shù)的兩種寫法:
- 輸入是狀態(tài)和動作,輸出是一個標(biāo)量
- 輸入是狀態(tài),輸出是多個值(只有離散動作才能使用)
方法:
- 假設(shè)有一個
Q函數(shù)
和某一個策略,根據(jù)策略
學(xué)習(xí)出的Q函數(shù),保證可以找到一個
好的新的策略
,在用相同方法找它的
Q函數(shù)
以及新的更好的策略
證明:為什么用決定出來的
一定比
好
-
max
由1、2式可得:
綜合3、4可得:
即證畢,對于估計某一個策略的Q-function
,接下來就可以找到另外一個策略比原來的策略還要更好
5.3 目標(biāo)網(wǎng)絡(luò)(target network)
在學(xué)習(xí)Q-function
的時候,會用到TD
的概念。那怎么用TD?在狀態(tài),采取動作
以后,得到獎勵
,然后跳到狀態(tài)
。根據(jù)這個
Q-function
:
但是實際上這樣的一個輸入并不好學(xué)習(xí),因為假設(shè)這是一個回歸問題,是網(wǎng)絡(luò)的輸出,
是目標(biāo),實際上目標(biāo)是可變的。在做反向傳播的時候,
的參數(shù)會被更新,并會把兩個更新的結(jié)果加在一起,這樣會導(dǎo)致訓(xùn)練變得不太穩(wěn)定
所以可以把其中一個Q網(wǎng)絡(luò)
,通常是會把右邊這個Q網(wǎng)絡(luò)
固定住。在訓(xùn)練的時候只更新左邊的Q網(wǎng)絡(luò)
的參數(shù),而右邊的Q網(wǎng)絡(luò)的參數(shù)會被固定住。因為右邊的**Q網(wǎng)絡(luò)
負(fù)責(zé)產(chǎn)生目標(biāo),所以叫目標(biāo)網(wǎng)絡(luò)**
。因為目標(biāo)網(wǎng)絡(luò)是固定的,所以得到的目標(biāo)的值也是固定的。只調(diào)左邊網(wǎng)絡(luò)的參數(shù),它就變成是一個回歸問題。希望模型的輸出的值跟目標(biāo)越接近越好,可以最小化它的
均方誤差(mean square error)
在實現(xiàn)的時候,把目標(biāo)網(wǎng)絡(luò)固定,只調(diào)模型輸出的網(wǎng)絡(luò)。在把輸出的網(wǎng)絡(luò)更新幾次以后,再去用更新的網(wǎng)絡(luò)替換目標(biāo)網(wǎng)絡(luò)
5.4 探索(Exploration)
這個問題其實就是
探索-利用窘境(Exploration-Exploitation dilemma)
問題
當(dāng)使用Q函數(shù)
時,策略完全取決于Q函數(shù)
。在采取動作的時候,會采取Q值最大的動作。這樣可能會一直采取相同的動作,所以需要探索機制,避免一直采取相同的動作
5.4.1 ε-貪心(ε-greedy)
-
定義:
有1-ε的概率會按照
Q函數(shù)
決定動作,主要根據(jù)Q函數(shù)
決定動作,比較少隨機決定動作:
通常ε會隨時間遞減。隨著訓(xùn)練次數(shù)的增多可以減少探索
-
對象:
- 無法嘗試Q值比較差的動作,可能的動作有:
- 最大Q值對應(yīng)動作
- 隨機動作
- 無法嘗試Q值比較差的動作,可能的動作有:
5.4.2 玻爾茲曼探索(Bolzman Exploration)
-
定義:
- 輸出動作空間上的概率分布,根據(jù)概率分布采樣選擇動作(取指數(shù) --> 歸一化)
- 輸出動作空間上的概率分布,根據(jù)概率分布采樣選擇動作(取指數(shù) --> 歸一化)
-
對象:
- 根據(jù)Q值確定了動作空間的概率分布,可以通過采樣選擇任意動作
5.5 經(jīng)驗回放(Experience Replay)
思想:構(gòu)建一個回訪緩沖區(qū)
(replay buffer)
,會將策略與環(huán)境互動收集的數(shù)據(jù)(狀態(tài)-動作-獎勵...)放到緩沖區(qū)中。循環(huán)迭代訓(xùn)練Q函數(shù)時,會從數(shù)據(jù)緩沖區(qū)隨機挑一個批量(batch)出來更新Q函數(shù)。
迭代地去訓(xùn)練這個Q-function
,在每次迭代里面,從這個buffer里面隨機挑一個batch出來,根據(jù)這把經(jīng)驗去更新Q-function
,就跟TD learning要有一個目標(biāo)網(wǎng)絡(luò)是一樣的
特點:
- 回訪緩沖區(qū)內(nèi)的經(jīng)驗可能來自不同策略
異策略(off-policy)
- 減少了跟環(huán)境做互動的次數(shù),數(shù)據(jù)利用高效
- 多樣化的訓(xùn)練數(shù)據(jù)
5.6 DQN原理
DQN使用深度卷積神經(jīng)網(wǎng)絡(luò)近似擬合狀態(tài)動作值函數(shù),其網(wǎng)絡(luò)結(jié)構(gòu)如上圖所示。DQN模型的輸入是距離當(dāng)前時刻最近的4幀圖像,該輸入經(jīng)過3個卷積層和2個全連接層的非線性變化后,最終在輸出層輸出每個動作對應(yīng)的
Q值
算法:
- 初始化兩個網(wǎng)絡(luò)
,
,開始目標(biāo)網(wǎng)絡(luò)
等于
- 基于
Q函數(shù)
和探索機制
:(ε,玻爾茲曼)選擇動作,獲得獎勵,狀態(tài)從
跳到
- 將數(shù)據(jù)經(jīng)驗
塞到數(shù)據(jù)緩沖區(qū)中
- 從緩沖區(qū)中采樣一批量的數(shù)據(jù),根據(jù)數(shù)據(jù)計算目標(biāo):
- 更新Q的參數(shù)使得
盡可能接近于
(回歸)
- 每C步更新目標(biāo)網(wǎng)絡(luò)