DQN笔记
DQN基于Q-Learning,也就是說DQN也是一個離線算法,它第一個關(guān)注點是解決空間狀態(tài)爆炸的問題,也就是說它不解決連續(xù)動作的問題
tip:何謂連續(xù)動作
例子,取值為(0,1)之間任意數(shù)為連續(xù)變量,動作包含連續(xù)變量的叫做連續(xù)動作
最基礎(chǔ)的思想是用一個神經(jīng)網(wǎng)絡(luò)來擬合Q-Table里面的Q值。
用到了神經(jīng)網(wǎng)絡(luò)那么就有一個訓練的問題,訓練的數(shù)據(jù)哪里來,與環(huán)境交互。最基礎(chǔ)的DQN數(shù)據(jù)存儲(s,a,r,s’)數(shù)據(jù)用于訓練
DQN里面的網(wǎng)絡(luò)是一個監(jiān)督學習的過程,其目標是真實值和估計值之間的差值最小,術(shù)語叫做TD-ERROR,用公式來表示的化:
這個代表的是真實值,是的,真實值也是估計出來的,基礎(chǔ)的DQN用target_network來選取action,同時計算這個真實值里面的Q值,然后減去需要學習網(wǎng)絡(luò)估計出來的Q值。得到td-error
而被更新的那個原來的那個網(wǎng)絡(luò)是根據(jù)經(jīng)驗被更新的網(wǎng)絡(luò),通過上面那個標簽值和網(wǎng)絡(luò)估計值最小利用梯度下降法來求解更新網(wǎng)絡(luò)參數(shù)。
target_network是隔C步才更新的網(wǎng)絡(luò)。它的存在就是為了存儲一下那個被更新網(wǎng)絡(luò)的狀態(tài)。不能一邊更新,一邊標簽值也在變吧。它本身不學習,每隔C步,學習經(jīng)驗的網(wǎng)絡(luò)會把參數(shù)賦給它
還需要說的一點就是經(jīng)驗回放機制,也就是為什么要把經(jīng)驗(s,a,r,s’)存起來再隨機選取來更新網(wǎng)絡(luò)呢。
因為你跑一次,前一步和后一步是有強關(guān)聯(lián)性的,所以經(jīng)驗回放就是為了破除這些關(guān)聯(lián)性,就是學習的兩條記錄是獨立的兩條記錄
總結(jié)
- 上一篇: 基于Swift语言开发微信、QQ跟微博的
- 下一篇: 最完整的PS快捷键大全(绝对经典)