"?two branches ?for Deep Reinforcement Learning: based on Value or Policy.
based on Value: DQN(Deep Q Network, google) ?= NN + Q learning
Q learning : (State , action ) -->Q value, for each state choose the action which lead to the largest Q;是一種策略時(shí)間差分方法,核心是異策略,時(shí)間差分。
異策略:行動策略(產(chǎn)生數(shù)據(jù)的策略)和要評估改進(jìn)的策略是分開的,行動策略是5行的thegma-貪婪,評估和改進(jìn)的是6行的貪婪(選擇對每個狀態(tài)來說,取值最大的動作)
時(shí)間差分:更新行為值函數(shù)時(shí)是依據(jù)時(shí)間差分目標(biāo)。時(shí)間差分目標(biāo)如下




DQN benefits from: CNN, Experience replay and Fixed Q-targets
Experience replay makes DQN a off-policy "offline learning" which is able to learn from the experience and others' experience。經(jīng)驗(yàn)回放對強(qiáng)化學(xué)習(xí)的學(xué)習(xí)過程進(jìn)行訓(xùn)練。Why,因?yàn)镽L負(fù)責(zé)收集數(shù)據(jù),但上下文數(shù)據(jù)的關(guān)聯(lián)性很強(qiáng) V.S. 神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí)要求數(shù)據(jù)是獨(dú)立同分布的。所以用經(jīng)驗(yàn)回放來打破數(shù)據(jù)的關(guān)聯(lián)性。
解釋二:DeepMind創(chuàng)始人Hassabis是倫敦大學(xué)神經(jīng)科學(xué)博士:人在睡覺時(shí),海馬體會把一天的記憶重放給大腦皮層。

如上圖,強(qiáng)化學(xué)習(xí)時(shí),會把數(shù)據(jù)存到一個DB,then均勻隨機(jī)采樣抽取數(shù)據(jù),來訓(xùn)練神經(jīng)網(wǎng)絡(luò)。2013NIPS就指出了。
2015nature提出目標(biāo)網(wǎng)絡(luò)來進(jìn)一步減小數(shù)據(jù)間的關(guān)聯(lián)性。DQN用目標(biāo)網(wǎng)絡(luò)Q-targets來單獨(dú)處理時(shí)間差分算法中的TD偏差。
Fixed Q-targets makes DQN owns 2 networks with same structures but different parameters: one for predicting Q real with experience parameters and the other predict Q estimate with the latest parameters.
與表格型傳統(tǒng)Qlearning不同,用NN進(jìn)行值函數(shù)逼進(jìn)時(shí),每一步更新的是網(wǎng)絡(luò)權(quán)值參數(shù),而不是圖2第6行的Q值了,換成了梯度下降更新:

7是TD目標(biāo),用網(wǎng)絡(luò)參數(shù)theta來計(jì)算8。



以往神經(jīng)網(wǎng)絡(luò)逼近值函數(shù)時(shí),【計(jì)算TD目標(biāo)的動作值函數(shù)】用的是網(wǎng)絡(luò)參數(shù)theta,與梯度計(jì)算【要逼近的動作值函數(shù)】,所用的網(wǎng)絡(luò)參數(shù)一樣,這樣就容易導(dǎo)致數(shù)據(jù)關(guān)聯(lián)性,訓(xùn)練不穩(wěn)定,事實(shí)上,這兩個操作的更新頻率等是不完全一樣的。所以單獨(dú)弄一個TD目標(biāo)網(wǎng)絡(luò)來【計(jì)算TD目標(biāo)】,theta-;【逼近值函數(shù)】的網(wǎng)絡(luò)用theta;【計(jì)算TD目標(biāo)的動作函數(shù)】每個固定的步數(shù)更新一次,【用于逼近的動作值函數(shù)網(wǎng)絡(luò)】每一步都更新。所以值函數(shù)的更新變成:

DQN偽代碼:

第[1]行,初始化回放記憶D,可容納的數(shù)據(jù)條數(shù)為N
第[2]行,利用隨機(jī)權(quán)值theta來初始化動作行為值函數(shù)Q
第[3]行,令theta- = theta來計(jì)算TD目標(biāo)的動作行為值Q
第[4]行,循環(huán)每次事件
第[5]行,初始化每次事件的第一個狀態(tài)s1 ,預(yù)處理得到狀態(tài)對應(yīng)的特征輸入
第[6]行,循環(huán)每個事件的每一步
第[7]行,利用概率thegma選一個隨機(jī)動作at
第[8]行,若小概率事件沒發(fā)生,則用貪婪策略選擇當(dāng)前值函數(shù)最大的那個動作,注意,這里選最大動作時(shí)用到的值函數(shù)網(wǎng)絡(luò)與逼近值函數(shù)所用的網(wǎng)絡(luò)是一個網(wǎng)絡(luò),都對應(yīng)著theta。
注意:第[7]行和第[8]行是行動策略,即thegma-greedy策略。
第[9]行,在仿真器中執(zhí)行動作at,觀測回報(bào)rt與圖像xt+1
第[10]行,設(shè)置st+1 = st, at, xt+1, 預(yù)處理
第[11]行,將轉(zhuǎn)換(,,,)儲存在回放記憶D中
第[12]行,從回放記憶D中均勻隨機(jī)采樣一個轉(zhuǎn)換樣本數(shù)據(jù)
第[13]行,判斷是否是一個事件的終止?fàn)顟B(tài),若是終止?fàn)顟B(tài)則TD目標(biāo)為rj,否則利用TD目標(biāo)網(wǎng)絡(luò)theata- 來計(jì)算TD目標(biāo)
第[14]行,執(zhí)行一次梯度下降算法
第[15]行,更新動作值函數(shù)逼近的網(wǎng)絡(luò)參數(shù)theta
第[16]行,每隔C步更新一次TD目標(biāo)網(wǎng)絡(luò)權(quán)值即令theta- ?= theta
第[17]行,結(jié)束每次事件內(nèi)循環(huán)
第[18]行,結(jié)束事件間的循環(huán)
我們可以看到,在第[12]行,利用了經(jīng)驗(yàn)回放;在[13]行利用了獨(dú)立的目標(biāo)網(wǎng)絡(luò)theta-。第[15]行,更新動作值函數(shù)逼近網(wǎng)絡(luò)參數(shù);第[17]行更新目標(biāo)網(wǎng)絡(luò)參數(shù).