價值函數(shù)的近似表示:假如我們遇到復雜的狀態(tài)集合呢米愿?甚至很多時候鼻吮,狀態(tài)是連續(xù)的,那么就算離散化后违柏,集合也很大,此時我們的傳統(tǒng)方法香椎,比如Q-Learning漱竖,根本無法在內存中維護這么大的一張Q表畜伐。
一個可行的建模方法是價值函數(shù)的近似表示。方法是我們引入一個狀態(tài)價值函數(shù)v^, 這個函數(shù)由參數(shù)w描述万矾,并接受狀態(tài)s作為輸入慎框,計算后得到狀態(tài)s的價值,即我們期望:
類似的
價值函數(shù)近似的方法很多们颜,比如最簡單的線性表示法,用?(s)表示狀態(tài)s的特征向量努溃,則此時我們的狀態(tài)價值函數(shù)可以近似表示為:
當然阻问,除了線性表示法,我們還可以用決策樹第队,最近鄰刨秆,傅里葉變換,神經網絡來表達我們的狀態(tài)價值函數(shù)衡未。而最常見,應用最廣泛的表示方法是神經網絡如失。因此后面我們的近似表達方法如果沒有特別提到送粱,都是指的神經網絡的近似表示
對于神經網絡,可以使用DNN脆丁,CNN或者RNN橄镜。沒有特別的限制冯乘。如果把我們計算價值函數(shù)的神經網絡看做一個黑盒子,那么整個近似過程可以看做下面這三種情況
對于Qlearning?采用上面右邊的第三幅圖的動作價值函數(shù)建模思路來做姊氓,現(xiàn)在我們叫它Deep Q-Learning喷好。
和Q-Learning不同的地方在于,它的Q值的計算不是直接通過狀態(tài)值s和動作來計算禾唁,而是通過上面講到的Q網絡來計算的。這個Q網絡是一個神經網絡荡短,我們一般簡稱Deep Q-Learning為DQN掘托。
DQN的輸入是我們的狀態(tài)s對應的狀態(tài)向量?(s), 輸出是所有動作在該狀態(tài)下的動作價值函數(shù)Q闪盔,主要使用的技巧是經驗回放(experience replay),即將每次和環(huán)境交互得到的獎勵與狀態(tài)更新情況都保存起來,用于后面目標Q值的更新听绳。為什么需要經驗回放呢异赫?我們回憶一下Q-Learning,它是有一張Q表來保存所有的Q值的當前結果的贴妻,但是DQN是沒有的蝙斜,那么在做動作價值函數(shù)更新的時候,就需要其他的方法娩鹉,這個方法就是經驗回放稚伍。
通過經驗回放得到的目標Q值和通過Q網絡計算的Q值肯定是有誤差的,那么我們可以通過梯度的反向傳播來更新神經網絡的參數(shù)w个曙,當w收斂后垦搬,我們的就得到的近似的Q值計算方法,進而貪婪策略也就求出來了
DQN有個問題对雪,就是它并不一定能保證Q網絡的收斂米绕,也就是說馋艺,我們不一定可以得到收斂后的Q網絡參數(shù)迈套。這會導致我們訓練出的模型效果很差
進階:?Nature DQN:
注意到DQN(NIPS 2013)里面,我們使用的目標Q值的計算方式:
Nature DQN嘗試用兩個Q網絡來減少目標Q值計算和要更新Q網絡參數(shù)之間的依賴關系雏赦。下面我們來看看Nature DQN是怎么做的芙扎。
Nature DQN使用了兩個Q網絡戒洼,一個當前Q網絡Q用來選擇動作,更新模型參數(shù)圈浇,另一個目標Q網絡Q′用于計算目標Q值。目標Q網絡的網絡參數(shù)不需要迭代更新召耘,而是每隔一段時間從當前Q網絡Q復制過來褐隆,即延時更新,這樣可以減少目標Q值和當前的Q值相關性衫贬。
DDQN:
在DDQN之前歇攻,基本上所有的目標Q值都是通過貪婪法直接得到的? 使用max雖然可以快速讓Q值向可能的優(yōu)化目標靠攏,但是很容易過猶不及葬毫,導致過度估計(Over Estimation)斧散,所謂過度估計就是最終我們得到的算法模型有很大的偏差(bias)摊聋。為了解決這個問題, DDQN通過解耦目標Q值動作的選擇和目標Q值的計算這兩步箍镜,來達到消除過度估計的問題。
Nature DQN對于非終止狀態(tài)香缺,其目標Q值的計算式子是
在DDQN這里歇僧,不再是直接在目標Q網絡里面找各個動作中最大Q值,而是先在當前Q網絡中先找出最大Q值對應的動作祸轮,即
然后利用這個選擇出來的動作在目標網絡里面去計算目標Q值侥钳。即
Prioritized Replay DQN:
Nature DQN舷夺, DDQN等,他們都是通過經驗回放來采樣给猾,進而做目標Q值的計算的。在采樣的時候给僵,我們是一視同仁详拙,在經驗回放池里面的所有的樣本都有相同的被采樣到的概率。但是注意到在經驗回放池里面的不同的樣本由于TD誤差的不同蹲诀,對我們反向傳播的作用是不一樣的弃揽。TD誤差越大,那么對我們反向傳播的作用越大矿微。而TD誤差小的樣本涌矢,由于TD誤差小,對反向梯度的計算影響不大娜庇。在Q網絡中方篮,TD誤差就是目標Q網絡計算的目標Q值和當前Q網絡計算的Q值之間的差距励负。
這樣如果TD誤差的絕對值|δ(t)|較大的樣本更容易被采樣,則我們的算法會比較容易收斂:
Prioritized Replay DQN根據(jù)每個樣本的TD誤差絕對值|δ(t)|巾表,給定該樣本的優(yōu)先級正比于|δ(t)|略吨,將這個優(yōu)先級的值存入經驗回放池』菰常回憶下之前的DQN算法负间,我們僅僅只保存和環(huán)境交互得到的樣本狀態(tài),動作趾访,獎勵等數(shù)據(jù)董虱,沒有優(yōu)先級這個說法。由于引入了經驗回放的優(yōu)先級愤诱,那么Prioritized Replay DQN的經驗回放池和之前的其他DQN算法的經驗回放池就不一樣了淫半。因為這個優(yōu)先級大小會影響它被采樣的概率。在實際使用中科吭,我們通常使用SumTree這樣的二叉樹結構來做我們的帶優(yōu)先級的經驗回放池樣本的存儲。
Prioritized Replay DQN和DDQN相比购撼,收斂速度有了很大的提高谴仙,避免了一些沒有價值的迭代,因此是一個不錯的優(yōu)化點锁摔。同時它也可以直接集成DDQN算法哼审,所以是一個比較常用的DQN算法。
Dueling DQN:在Dueling DQN中十气,我們嘗試通過優(yōu)化神經網絡的結構來優(yōu)化算法春霍,Dueling DQN考慮將Q網絡分成兩部分,第一部分是僅僅與狀態(tài)S有關,與具體要采用的動作A無關衅疙,這部分我們叫做價值函數(shù)部分鸳慈,第二部分同時與狀態(tài)狀態(tài)S和動作A有關,這部分叫做優(yōu)勢函數(shù)(Advantage Function)部分绩郎,最終我們的價值函數(shù)可以重新表示為:
DQN算是深度強化學習的中的主流流派,代表了Value-Based這一大類深度強化學習算法胧后。但是它也有自己的一些問題,就是絕大多數(shù)DQN只能處理離散的動作集合纸巷,不能處理連續(xù)的動作集合眶痰。雖然NAF DQN可以解決這個問題,但是方法過于復雜了存哲。而深度強化學習的另一個主流流派Policy-Based而可以較好的解決這個問題