緩解cold start--Deep Q-learning from Demonstrations筆記
來自專欄 DRL滄海拾遺
這篇筆記的目的和Ape-x論文的筆記目的一樣,就是看到近期幾篇deepmind的論文用到了DQFD演算法,所以翻出來做個筆記。當初看的時候與聽學長分享的時候總覺得沒有什麼東西,總體上的感覺就是很類似unreal之類的演算法/框架,將目的融入loss裡面,感覺能work還是蠻難的。
核心問題
- 研究問題:如何加速agent的學習過程,避免前期的cold start
- 假設條件:可以事先獲得一堆的Demonstrations,知道reward function,
- 主要想法:利用Demonstrations 來per-training NN的weights來緩解cold start
- 解決方案:利用reward function標記Demonstrations,構造NN的loss function為:RL的loss + Demonstrations的loss, 來初始化NN的Q function,然後在training時候採用同樣的loss function來銜接
動機
從cold start與data cost的角度來考慮,如果是模擬器的環境,那麼DRL可以直接用,因為模擬器的cost與時間成本低,最多就多用幾台機器,多開幾個並行的環境。但是很多real world的問題,需要learning快,不然前期因為學習時間與data cost導致成本非常高,導致DRL運用存在很大的gap,更直觀的理解就是:agent需要很多的step與探索來獲得一個對當前交互env的比較全面的認識,但是在真實世界,考慮時間/經濟成本,我們希望agent學習的越快越好。所以想在real world的環境中使用DRL就必須解決訓練速度的問題,那麼cold start就是一個切入點。
考慮到在實際中,我們可以事先獲得一些好的數據/策略(比如人類專家,之前運行的演算法/規則),從這個角度出來,一種直觀的想法利用這部分的信息來per-train NN的weight,然後再與環境做交互來進一步提升效果,應該能夠緩解cold start與訓練成本的問題。
演算法
演算法流程
Deep Q-learning from Demonstrations(DQFD)分為兩個階段:per-training,acting on the system。兩個部分採用同樣的loss的 ,
per-training階段
從Demonstrations抽樣來對於NN的Q function做sgd,過程類似於的監督學習。
acting on the system階段
1.採用per-training出來的NN,與環境做交互,然後將data存於單獨的replay中 2.然後在training時,利用proportional prioritized sampling從Demonstrations與交互生成的data中抽樣 3.training NN,這一步類似於DQN,直接做SGD,就是loss function 做了一定的修改(見後面) 4.在replay滿了之後,扔掉舊的交互數據。
loss 的構造
RL: one-step,n-step
其中 為不同Double DQN產生的one step的loss,double的做的做法可以緩解Max op帶來的Q funciton過高估計的問題。 為n-step Q-learning的loss:
通過N-step的做法,本身就是相當於將N step中reward快速回傳回來,一定程度緩解credit assignment的問題,加速網路的學習,但是我覺的這邊因為是off-policy的更新方法,會引入bias,論文中並沒有對應的解決/緩解方法,需要思考一下。
Demonstrations
其中 為Demonstrations中的action。
使用專家數據來做supervised loss其實有利有弊,因為實際上這部分數據只包含了state,action空間的一小部分。但是如果只用Q-learning來做per-training,由於MAX op的存在,NN的目標可能會選擇那些ungrounded variables,然後因為bootstrap的原因,將其傳播到其他的State下。
權衡一下,利用SL與RL中的Bellman equation,將專家數據看成一個軟的初始化約束,在per-training的時候,約束專家數據中的action要比這個state下其他的action高一個 值。這裡其實是做了一個loss的權衡:這個 值導致的action差別的loss高,還是不同action導致達到下一個狀態的 的產生的loss高,如果專家的SL帶帶來loss高的話,那麼以專家的loss為主,如果是RL的loss高的話,那麼這個約束就會被放寬,選擇RL中的action。
loss總結
pre-training的階段目的是對於已有專家數據做imitate,所以為了能夠與之後與環境交互部分結合(online RL部分),這邊imitate從單純學習action,轉為學出對應的Q function。採用了1-step/n-step Q-learning 來做loss,還有對於專家數據的SL,還有對於NN的weight的L2範數。因為Q-learning部分能夠比較好地利用per-training出來的Q function,同時利用專家數據來限制策略的空間,避免spg過程的policy性能的惡化(可能導致螺旋性的惡化)。
實驗
推薦閱讀:
TAG:深度學習DeepLearning | 強化學習ReinforcementLearning | DeepMind |