緩解cold start--Deep Q-learning from Demonstrations筆記

緩解cold start--Deep Q-learning from Demonstrations筆記

來自專欄 DRL滄海拾遺

這篇筆記的目的和Ape-x論文的筆記目的一樣,就是看到近期幾篇deepmind的論文用到了DQFD演算法,所以翻出來做個筆記。當初看的時候與聽學長分享的時候總覺得沒有什麼東西,總體上的感覺就是很類似unreal之類的演算法/框架,將目的融入loss裡面,感覺能work還是蠻難的。

核心問題

  1. 研究問題:如何加速agent的學習過程,避免前期的cold start
  2. 假設條件:可以事先獲得一堆的Demonstrations,知道reward function,
  3. 主要想法:利用Demonstrations 來per-training NN的weights來緩解cold start
  4. 解決方案:利用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的 J

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 J 做了一定的修改(見後面) 4.在replay滿了之後,扔掉舊的交互數據。

loss J 的構造

J(Q) = J_{DQ}(Q) + lambda_1J_n(Q) + lambda_2J_E(Q) + lambda_3J_{L2}(Q)

RL: one-step,n-step

其中 J_{DQ}(Q) 為不同Double DQN產生的one step的loss,double的做的做法可以緩解Max op帶來的Q funciton過高估計的問題。 J_n(Q) 為n-step Q-learning的loss:

 J_n(Q) = (r_t + gamma r_{t+1} + ... + gamma^{n-1}r_{t+n-1} + max_{a}gamma^{n}Q(s_{t+n},a) - Q(s_t, a))^2

通過N-step的做法,本身就是相當於將N step中reward快速回傳回來,一定程度緩解credit assignment的問題,加速網路的學習,但是我覺的這邊因為是off-policy的更新方法,會引入bias,論文中並沒有對應的解決/緩解方法,需要思考一下。

Demonstrations

 J_E(Q) = max_{a} [Q(s,a) + l(a_E, a)] - Q(s, a_E)

其中 a_E 為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高一個 l 值。這裡其實是做了一個loss的權衡:這個 l 值導致的action差別的loss高,還是不同action導致達到下一個狀態的 S』 的產生的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 |