PRIORITIZED EXPERIENCE REPLAY
ICLR 2016
經驗回放使得 online reinforcement learning agent 能夠記住並且回放過去的經驗。在先前的工作中,從回放記憶中隨機的采樣 experience transitions。但是,這種方法簡單的在同一頻率 回放 transitions,而不管其意義。本文提出了一種方法能夠實現優先回放,能夠更加高頻的回放重要的 transitions,從而實現更加高校的學習。我們在 DQN 上使用優先經驗回放,取得了更加有效的結果。
online RL agent 當觀察到一系列的經驗時,增量的更新其參數。最簡單的形式,即:在更新之后,他們立刻扔掉到來的數據。這種做法有兩個問題:
a. 強烈的相關更新操作破壞了許多流行的 基於隨機梯度的算法;
b. 快速的忘記可能稀缺的經驗,但是后面可能還要用得上這個經驗。
Experience Replay 解決了上述問題:在一個 回放單元中存儲 experience,通過混合或多或少的最近的經驗來更新就有可能破壞 temporal correlation,rare experience 將會被用來不止一次更新。這就被用在 NIPS2013 和 Nature 2015的論文中,特別地,DQN 利用一個大的滑動窗口回放單元,隨機的從中均勻采樣,平均重復訪問一個 transition 8次。總的來講,experience replay 可以大量的降低需要去學習的經驗,而是用更多的計算和更多的memory來替換--- which are often cheaper resources than the RL agent's interactions with its environment.
注: a transition 是 agent在環境中的一次交互的原子操作,即:$ (state S_{t-1}, action A_{t-1}, reward R_t, discount t, next state S_t)$.
Prioritized Replay
1. A Motivating Example
設計這么一個優先回放功能,涉及到兩個層次,即:選擇哪些進行存儲,另外就是選擇哪些進行回放?本文主要是研究后者的,如何最有效的利用回放功能進行學習?
如上圖所示,本文給出了一個例子來充分的說明優先的潛在好處。引入了稱為“Blind Cliffwalk”的環境,來示例說明當獎賞非常 rare的時候,探索所遇到的挑戰。假設僅有 n 個狀態,這個環境就要求足夠的隨機步驟知道得到第一個非零獎勵;確切的講,隨機的選擇動作序列就會有 $2^{-n}$的概率才能得到第一個非零獎賞。此外,最相關的 transitions 卻藏在大量的失敗的嘗試當中。
本文利用這個例子來 highlight 兩個 agents的學習次數的不同。可以看到這兩個 agent 都從同一個 回放單元中去獲取Q-learning的更新,第一個agent 隨機均勻的回放 transitions,第二個喚醒一個 oracle 來進行優先轉移。這個 oracle 貪婪的選擇使得在當前狀態下最大化的降低全局損失的 transitions。從上圖右側的圖可以看出,按照一定優化序列得到的轉移 比 隨機均勻采樣要花費很少的嘗試步驟,這明顯的提升了訓練的速度。
2. Prioritizing TD-Error
優先回放的一個中心成分是評判優先的准則:衡量每一個轉移 transitions 的重要性。一個理想的標准是當前狀態下,RL agent 能夠學習到的量,也就是期望的學習過程。但是這個標准並不能直接訪問到,一個比較合理的代理,能夠表示重要性的另一個衡量是:一個 transitions 的 TD error $\delta$ 的規模,來表示該轉移的驚奇度 或者 出乎意料的程度:How far the value is from its next-step bootstrap estimation. 這非常適合增量的,在線 RL 算法,比如:SARSA 或者 Q-learning,已經計算 TD-error 並且 更新和 $\delta$成比例的參數。但是有些情況下, TD-error 仍然是非常差的預測,例如:當獎勵非常 noisy的時候。
為了說明通過 TD-error 優先回放的有效性,我們對比了 uniform 和 oracle baselines 在 Blind Cliffwalk 上的“貪婪 TD-error prioritization”算法。該算法存儲了在回放單元中每次轉移之后,最后遇到的 TD error 。將最大絕對值 TD誤差的轉移從 memory 中進行回放。然后對該轉移進行 Q-learning的更新,更新和 TD error 的權重。新的轉移到來之后,沒有已知的 TD-error,所以我們將其放到最大優先級的行列,確保所有的 experience 至少回放一次。
關於這樣做的好處,從下圖可以看出, oracle 的做法可以極大的降低無用的嘗試,加速了算法的執行速度。
3. Stochastic Priorization
然而,貪婪的 TD-error 優先 有幾個問題:
首先,為了避免在整個回放單元中掃描而帶來的計算代價,TD 誤差僅僅更新被回放的轉移。這個帶來的一個后果就是:帶有低 TD error的轉移在第一次訪問時可能很長時間不會被回放(which means effectively never with a sliding window replay memory)。
此外,對 noise spikes 非常敏感,bootstrapping 會加劇該現象,估計誤差又會成為另一個噪聲的來源。
最終,貪婪優先集中於 一個小的經驗子集,誤差收縮的很慢,特別是使用函數估計的時候,意味着初始的高誤差轉移被經常回放。缺乏多樣性使得該系統傾向於 over-fitting。
為了解決上述問題,我們引入了一個隨機采樣的方法,該方法結合了 純粹的貪婪優先 和 均勻隨機采樣。我們確保被采樣的概率在轉移優先級上是單調的,與此同時,確保最低優先級的轉移的概率也是非零的。具體的,我們定義采樣轉移 i 的概率為:
其中,pi 是轉移 i 的優先級。指數 $\alpha$ 決定了使用多少優先級,當 $\alpha$ 等於 0 的時候是均勻的情況。
第一種變體就是直接的,成比例的優先;
第二種是間接的,基於排行的優先級,pi = 1/rank(i),其中 rank(i)是回放單元根據誤差排行的轉移 i 的排行。
兩個分布都是隨着誤差單調的,但是后者更魯棒,因為其對離群點不敏感。兩個變體相對均勻的baseline來講都是有很大優勢的,如上圖右側所示。
4. Annealing The Bias
利用隨機更新得來的期望值的預測依賴於這些更新,對應其期望的同樣的分布。優先回放引入了誤差,因為它以一種不受控的形式改變了分布,從而改變了預測會收斂到的 solution(即使 policy 和 狀態分布都固定)。我們可以用下面的重要性采樣權重來修正該誤差:
在經典的強化學習的場景下,更新的無偏性是訓練最后接近收斂最重要的部分,因為這個過程是高度非靜態,由於變化的策略,狀態分布和引導目標;我們假設小的偏差可以忽略。
本文將優先回放和 Double Q-learning 相結合,就是將 均勻隨機采樣 替換為 本文提出的 隨機優先和重要性采樣方法,具體算法見下圖: