五. 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ù)來表示近似計(jì)算:
其中函數(shù)通常是一個(gè)參數(shù)為
的函數(shù),比如神經(jīng)網(wǎng)絡(luò)
5.1 狀態(tài)價(jià)值函數(shù)(State Value Function)
衡量這個(gè)狀態(tài)價(jià)值函數(shù),有兩種不同的做法:
MC-based的方法和TD-based的方法:
5.1.1 蒙特卡洛法
-
方法:
- 輸入一個(gè)狀態(tài),輸出接下來的累計(jì)獎(jiǎng)勵(lì)。是一個(gè)回歸問題。網(wǎng)絡(luò)的輸出就是一個(gè)值,你希望在輸入
的時(shí)候,輸出的值跟
越近越好,輸入
的時(shí)候,輸出的值跟
越近越好,把網(wǎng)絡(luò)訓(xùn)練下去就是
MC-based的方法
- 輸入一個(gè)狀態(tài),輸出接下來的累計(jì)獎(jiǎng)勵(lì)。是一個(gè)回歸問題。網(wǎng)絡(luò)的輸出就是一個(gè)值,你希望在輸入
-
問題:
- 由于每次都要計(jì)算累積獎(jiǎng)勵(lì),所以必須等待游戲結(jié)束才能更新網(wǎng)絡(luò),這樣花的時(shí)間太長
-
方差很大。本身具有隨機(jī)性,累積獎(jiǎng)勵(lì)可以看成是一個(gè)隨機(jī)變量
5.1.2 時(shí)序差分法
-
方法:
- 假設(shè)在某一個(gè)狀態(tài)
,采取動(dòng)作
得到獎(jiǎng)勵(lì)
,跳到狀態(tài)
,則有:
- 希望
和
相減的損失跟
相似,并以此更新V的參數(shù)
- 假設(shè)在某一個(gè)狀態(tài)

5.2 動(dòng)作價(jià)值函數(shù)(State-action Value Function)
動(dòng)作價(jià)值函數(shù)的輸入是狀態(tài)、動(dòng)作對。表示在某一個(gè)狀態(tài)采取某一個(gè)動(dòng)作,都是用演員,得到的累計(jì)獎(jiǎng)勵(lì)期望值
Q函數(shù)的兩種寫法:
- 輸入是狀態(tài)和動(dòng)作,輸出是一個(gè)標(biāo)量
- 輸入是狀態(tài),輸出是多個(gè)值(只有離散動(dòng)作才能使用)
方法:
- 假設(shè)有一個(gè)
Q函數(shù)和某一個(gè)策略,根據(jù)策略
學(xué)習(xí)出的Q函數(shù),保證可以找到一個(gè)
好的新的策略
,在用相同方法找它的
Q函數(shù)以及新的更好的策略
證明:為什么用決定出來的
一定比
好
-
max
由1、2式可得:
綜合3、4可得:
即證畢,對于估計(jì)某一個(gè)策略的Q-function,接下來就可以找到另外一個(gè)策略比原來的策略還要更好
5.3 目標(biāo)網(wǎng)絡(luò)(target network)
在學(xué)習(xí)Q-function的時(shí)候,會(huì)用到TD的概念。那怎么用TD?在狀態(tài),采取動(dòng)作
以后,得到獎(jiǎng)勵(lì)
,然后跳到狀態(tài)
。根據(jù)這個(gè)
Q-function:
但是實(shí)際上這樣的一個(gè)輸入并不好學(xué)習(xí),因?yàn)榧僭O(shè)這是一個(gè)回歸問題,是網(wǎng)絡(luò)的輸出,
是目標(biāo),實(shí)際上目標(biāo)是可變的。在做反向傳播的時(shí)候,
的參數(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)的值也是固定的。只調(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)作:
通常ε會(huì)隨時(shí)間遞減。隨著訓(xùn)練次數(shù)的增多可以減少探索
-
對象:
- 無法嘗試Q值比較差的動(dòng)作,可能的動(dòng)作有:
- 最大Q值對應(yīng)動(dòng)作
- 隨機(jī)動(dòng)作
- 無法嘗試Q值比較差的動(dòng)作,可能的動(dòng)作有:
5.4.2 玻爾茲曼探索(Bolzman Exploration)
-
定義:
- 輸出動(dòng)作空間上的概率分布,根據(jù)概率分布采樣選擇動(dòng)作(取指數(shù) --> 歸一化)
- 輸出動(dòng)作空間上的概率分布,根據(jù)概率分布采樣選擇動(dòng)作(取指數(shù) --> 歸一化)
-
對象:
- 根據(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ù),其網(wǎng)絡(luò)結(jié)構(gòu)如上圖所示。DQN模型的輸入是距離當(dāng)前時(shí)刻最近的4幀圖像,該輸入經(jīng)過3個(gè)卷積層和2個(gè)全連接層的非線性變化后,最終在輸出層輸出每個(gè)動(dòng)作對應(yīng)的
Q值
算法:
- 初始化兩個(gè)網(wǎng)絡(luò)
,
,開始目標(biāo)網(wǎng)絡(luò)
等于
- 基于
Q函數(shù)和探索機(jī)制:(ε,玻爾茲曼)選擇動(dòng)作,獲得獎(jiǎng)勵(lì),狀態(tài)從
跳到
- 將數(shù)據(jù)經(jīng)驗(yàn)
塞到數(shù)據(jù)緩沖區(qū)中
- 從緩沖區(qū)中采樣一批量的數(shù)據(jù),根據(jù)數(shù)據(jù)計(jì)算目標(biāo):
- 更新Q的參數(shù)使得
盡可能接近于
(回歸)
- 每C步更新目標(biāo)網(wǎng)絡(luò)
