Batch-Constrained deep Q- Learning(BCQ)
論文全稱:Off-Policy Deep Reinforcement Learning Without Exploration (Scott Fujimoto, David Meger, Doina Precup)
原文傳送門
https://arxiv.org/pdf/1812.02900arxiv.org
簡介
本文其實不算是一篇Exploration的文章,但文章題目中的Without Exploration還是吸引到我了。
本文解決的問題是Batch Reinforcement Learning,可以只利用replay buffer中的經驗資料進行學習而不需要通過與環境進一步互動。作者提出當前的off policy演算法例如DQN,DDPG中的replay buffer中的資料其實都是和當前策略十分相關的,因此才能學之有效,但當這些經驗的資料分佈和當前策略差距很大時,則無法進行學習。而本文提出的方法可以利用任意的經驗來解決連續控制問題。
本文解決的問題其實在模仿學習和off-policy學習之間,BatchRL理論上可以利用任意策略(可以不止一種)取樣得到的離線資料學習在該環境中的最優策略,而不是模仿取樣示例的所謂“專家資料”。而模仿學習則是模仿取樣專家資料的策略(雖然也可以不需要互動),off-policy需要的經驗池則需要大量的近期資料。
注意本文主要focus on在連續動作空間,因為連續動作空間的取樣是難以完全的。
核心筆記
一、背景
Batch Reinforcement Learning是從一個固定的資料集中學習而不需要與環境進行進一步互動的任務,適用於很多資料收集費力的場景。當資料質量足夠,即軌跡可以保證是專家資料的話,可以直接使用imitation learning,但對於suboptimal的軌跡資料就無效了。因此Batch Reinforcement Learning解決的是從任意資料(可以是各種取樣的大雜燴資料)中學習最優策略的情形。
當前的Off-Policy演算法會有growing batch learning的問題,即經驗池會不斷增長。但是本文的實驗驗證了當資料與當前策略很不相關,即取樣用到的策略與當前策略差別很大(導致資料分佈差別大)時,Off-Policy的演算法就不work了。實驗中,通過學習得到的策略甚至不如behavioral的策略(即用來取樣得到經驗池資料的策略)。
這樣的問題來源於文中定義的extrapolation error,推斷誤差,即錯誤的估計狀態值或者狀態動作值,本質上來源於經驗池中的資料分佈與當前策略不一致。比如,如果經驗池中沒有選擇某個動作的樣本,我們不可能學到選擇了該動作的策略。
本文提出的BCQ演算法就可以很好的解決這個問題。核心在於利用state-conditioned generative model提供先前見過的動作(即選擇的策略和經驗池更相關)。本文證明了在一些假設下,這樣的batch-constrained條件,是要從不完整的資料集中學習有限、確定性
本文主要在MuJoCo上實驗,因為其中的高維連續動作空間是很難完整取樣的。BCQ演算法還為imitation learning和off-policy演算法提供了一個統一的視角。作者說BCQ只是實現batch-constrained RL在deep setting的其中一種方法,但可以為未來的演算法打基礎。程式碼也已經開源。
二、推斷誤差 Extrapolation Error
這部分主要介紹什麼是推斷誤差,原文話是‘introduced by the mismatch between the dataset and true state-action visitation of the current policy’。說白了就是不同策略取樣的分佈不同,在計算Q/V的時候有關概率肯定有差別。
但要注意,如果是off-policy,並且更新的策略(例如greedy)利用的資料全部來源於取樣的策略(例如epsilon-greedy)的話,在bellman equation迭代計算Q的時候應該乘上一連串重要性取樣的權重,但Q-learning通過技巧(下一步的Q的action由更新的策略(例如greedy)給出),從而避免了重要性取樣的權重,因此這部分是沒有誤差的。推斷誤差主要來自於以下方面:
- Model Bias. batch都不是無窮大小的,因此每個state的訪問次數也是有限的,因此其分佈就帶來了偏差。如下式
偏差受到s'分佈的影響。
2. Absent Data. 也即某些特定的state-action對(s,a)沒有出現在batch中,這部分的價值就無法更新。誤差來源於相似資料的價值和逼近誤差。
3. Training Mismatch. 即便有足夠資料,從dataset取樣時是均勻取樣的,訓練的損失函式和資料的likelihood成比例:
因此當資料分佈不一樣時,學習會有偏差。但是即便這個損失函式是和當前policy的likelihood相關,但是當前policy下likelihood比較高的state-action pair不在batch中時,也會帶來誤差。
當前的SoTA演算法並沒有考慮到這樣的mismatch問題,但是他們為什麼work呢?作者說原因在於他們的replay buffer採的都是最近的policy的資料,和當前policy差別不大。但是當面對資料分佈很不一致的情況時同樣表現的很糟糕。作者用簡單的實驗驗證了這一點。實驗採用了3種batch:
- Final Buffer. 訓練一個DDPG演算法100萬步(加入了高斯噪聲來保證充分探索)並將遇到的transition全部儲存在經驗池,保證sufficient coverage.
- Concurrent. 在訓練behavioral DDPG agent(加入了高斯噪聲來保證充分探索)時同時訓練off-policy一個的DDPG,他們倆都用behavioral DDPG agent取樣得到的資料一起學習。
- Imitation. 一個訓練好的DDPG agent作為專家,取樣100萬步,不做任何探索。
結果如圖所示,其中True Value是用Monte Carlo算出來的。
可以看到off-policy的DDPG基本學不到東西,即便和behavioral的agent同時訓練,也有很大的差距,這說明在穩定的狀態分佈下,初始策略的差異便可導致推斷誤差!在final buffer中state-action pair基本都已經覆蓋到,但是訓練很不穩定,結果也很差。而在imitation中,有了專家資料的情況下學到的都是非專家的動作,value估計很快就發散了。
儘管很多時候推斷誤差都會惡化結果,但是當和最大化結合的時候,可以以噪聲的方式減小overestimate bias。這裡說的意思是,在on-policy下,推斷誤差會導致過分估計,帶來的是一種基於“uncertainty”的探索,當策略對這些“錯誤”的狀態探索後,其值估計會慢慢修正。但是off-policy是基於batch的,這樣的誤差將很難被消除。
在連續狀態空間和多維動作空間下,這樣的誤差將帶來更大的問題。
三、Batch-Constrained RL
當前的off-policy的DRL演算法在選擇動作時只考慮value,而不考慮value估計的準不準。如果我們在估計當前batch中不存在或者在batch的分佈之外的動作值時,將會帶來很大的誤差,但如果我們只選擇那些在batch的資料中有的動作空間,就會估計的很準。Batch-Constrained,顧名思義,就是在batch的限制下選擇策略。idea很簡單:to avoid extrapolation error a policy should induce a similar state-action visitation to the batch。意思就是選擇策略的時候要使得state-action分佈和batch相似。因此batch constrained策略有以下3個目標:
(1) Minimize the distance of selected actions to the data in the batch.
(2) Lead to states where familiar data can be observed.
(3) Maximize the value function.
其中(1)最重要,因為如果不限制在相關的transition下的話,value的估計將會很差,從而(2)(3)也不會好。因此本文在優化value函式時加入了future certainty的衡量,同時加入了距離限制,通過一個state conditioned generative model完成。這個generative model用一個網路來optimally perturb the generated actions in a small range,再加上Q網路來選擇最高價值的動作。為了評估相似狀態,在價值更新時利用兩個Q網路的估計再取soft minimum。
文章隨後從finite MDP出發推導了Extrapolation Error的數學形式,並分析了batch-constrained policy的理論性質,然後給出了BCQ演算法。這裡就暫時略去這些定理和引理,直接說結論。結論就是對於確定性MDP,BCQ可以保證至少match,甚至超過behavioral policy(就是經驗池用來取樣的策略)。
BCQ演算法詳細步驟如圖:
演算法和一般的DQN相比,BCQ使用了兩個Q網路和兩個targetQ網路,一個擾動網路和對應的target擾動網路以及一個VAE生成模型(conditionnal VAE)。在訓練時,首先從batch中取樣transition,然後訓練VAE,生成和batch中相似的action,然後從生成器中取樣,用擾動網路擾動action取值。最後更新Q和targetQ。
擾動網路的目的在於提供action的多樣性,這樣可以取樣一定adjustment的region內()的動作,而不單單依靠生成器生成。因此policy是對區域內的action取max,如下式:
和n提供了模仿學習和強化學習的trade-off:若=0且n=1,則成為behavior cloning(選擇的動作就是取樣出來的動作);若且n=,則即為Q學習(注意是沒法實現的連續動作空間下的dqn)。
懲罰future states的uncertainty是借鑑了Clipped Double Q-Learning的做法(也是本文的一作提出的),利用兩個Q網路的估計的最小值。注意用的不是hard minimum而是convex combination,如下式:
四、實驗結果
作者對比了在之前所述的三個訓練集上的表現,對比了一些baseline,驗證了演算法的有效性。可以看到BCQ甚至超越了behavioral agent的效果。說明在固定的batch上學習仍可以學習得到更好的策略。
此外,可以看到,BCQ的價值估計也十分準確而且穩定。這說明推斷誤差得到了很好的解決。
BCQ可以從不好的資料示例中進行學習,並可以超過示例;此外,相較於一般的DRL演算法,BCQ需要的迭代次數很少。總之,BCQ既能從專家示例中學習,也可以避免噪聲的影響。
BCQ這篇工作理論紮實,提出的視角值得思考,但對於取樣較為容易的場景其實沒必要。此外,由於只能從有限的資料中學習,而不與環境互動,其可以學習到的最優策略應當是有上界的(文中沒有證明,只給了下界)。有興趣的同學可以繼續研究一下batch RL。