《強化學習》中的第11章:基於函數逼近的離軌策略方法

前言: 本次筆記對《強化學習(第二版)》第十一章進行概括性描述。

以下概括都是基於我個人的理解,可能有誤,歡迎交流:[email protected]

總的來說,第11章學習體驗不好。可能是由於內容本身比較抽象,第11章屬於星標章節。練習題沒有引起我的興趣。還有一點比較令人失望:儘管本章討論了不少更新目標與算法(其中很多爲反例),並給出了大量帶有矩陣的計算公式,但實例並不多。因此,我認爲理解其大概思想便可。

正文

基於函數逼近的離軌策略方法的大多方法並不令人滿意:無論是理論上還是實踐上。

離軌策略學習目前面臨兩個挑戰:

  • The first part of the challenge has to do with the target of the update (not to be confused with the
    target policy);
  • and the second part has to do with the distribution of the updates.

解釋一下,在離軌策略的預測/控制中,我們更新的目標與交互的基礎是不同的,因此有了第一個挑戰。在非表格型情況下,我們需要用到狀態的分佈μ(s)\mu(s),因此有了第二個挑戰。

第一個挑戰可以通過引入重要度採樣來解決。

11.1 半梯度方法

本節討論了重要度採樣在離軌策略中的推廣。換句話說,就是把之前表格型算法中的離軌方法轉換爲半梯度形式。

值得注意的是,這些方法只對表格型的情況才保證穩定且漸進無偏。

11.2 離軌策略發散的例子

本節舉了一個小例子和一個大例子,說明了半梯度以及其他方法的不穩定性

Baird 反例代碼見:https://nbviewer.jupyter.org/github/PiperLiu/Reinforcement-Learning-practice-zh/blob/master/practice/Counterexample.ipynb

此外,Tsitsiklis 和 van Roy’s 的反例由數學推導得證。

這裏我要強調一下 Baird 反例,這着實困擾我一些時間。並且現在也沒有完全明白其計算過程。我能給出的說明是:如果你對於爲什麼狀態的編碼刑如 2w_1 + w_8 有疑問,那麼我的解釋是,狀態編碼(或者說線性特徵的構造)並不是我們決定的,在例子中,特徵已經被很愚蠢地構造好了,在這種愚蠢地構造下,我們可以觀測大,傳統的半梯度方法會導致不收斂、不穩定。

那麼,既然如此,我們“聰明地”構造特徵不就可以了嗎?

不可以,因爲大部分情況下,我們無法掌控我們對於特徵的構造(因爲權值向量ww維度不能太大)。如果要構造特徵的話,這涉及到wwss的映射關係(我的理解是,神經網絡/瓦片編碼可以解決這種問題)。這也是爲什麼在本節末尾,提到了“另一個避免不穩定的方式是使用函數逼近中的一些特殊方法”。

11.3 致命三要素

同時滿足以下三種要素,一定不穩定/發散:

  • 函數逼近
  • 自舉法
  • 離軌策略訓練

那麼,該拋棄哪個來保證穩定呢?

一、函數逼近極大地節省了計算開銷,不能拋棄。

二、自舉法或許可以拋棄,但是將帶來的效率損失是巨大的:

  • 不用自舉法學的慢,在第10章中已經有實例證明;
  • 使用蒙特卡洛將帶來巨大的存儲壓力。

三、離軌策略或許可能被拋棄。因爲很多情況下,同軌策略就住夠了。但是想實現真正的“通用性”,僅僅依靠離軌策略是不夠的。

11.4 線性價值函數的幾何性質

這節課爲向量賦予了“幾何性質”,但着實困擾我許久。這節課是後面章節所提指標的鋪墊

書上說,考慮這種情況:

  • S={s1,s2,s3}S = \{ s_1,s_2,s_3 \}
  • w=(w1,w2)Tw = (w_1, w_2)^T

接着,書上就做了二維與三維交叉的圖,這讓我很困惑。最終我給自己的解釋是(這個解釋存疑):這個空間中的點對應的三維座標是ww對應的各狀態的價值,v(s)v(s)是三元組(v(s1),v(s2),v(s3))(v(s_1),v(s_2),v(s_3))

近似的線性價值函數即:

vw=Xwv_w = X w

其中:

X=S×d=[x1(s)  x2(s)x1(s)  x2(s)x1(s)  x2(s)]X = |S| \times d = \left[ \begin{aligned} x_1(s) \; x_2(s) \\ x_1(s) \; x_2(s) \\ x_1(s) \; x_2(s) \\ \end{aligned} \right]

這裏注意理解一下,SS本來是有個維度的,因爲“特徵工程”的處理,變成了只有兩個特徵的XX。爲什麼兩個特徵?因爲我們的參數只有兩個值(w=(w1,w2)Tw=(w_1,w_2)^T)。

如果僅僅依靠線性關係來計算,因爲我們的參數只有兩個值(w=(w1,w2)Tw=(w_1,w_2)^T),並且XX可能很差,因此(考慮向量相乘的幾何意義尤其是方向)我們得到的狀態價值(v^(s1),v^(s2),v^(s3))(\hat{v}(s_1),\hat{v}(s_2),\hat{v}(s_3))這個向量很有可能無法得到vπv_\pi

值得注意的是,這裏我們描繪距離不使用歐幾里得距離。

11.5 對貝爾曼誤差做梯度下降

本節中以最小化均方梯度誤差TDE\overline{TDE}爲目標,使用完全的 SGD 算法進行下降。這在理論上會保證收斂,這個算法被稱爲樸素殘差梯度 算法。但是,樸素殘差收斂到的並非最優策略。

書上例11.2的A-分裂例子很好地做了反例。

因此,我們考慮貝爾曼誤差BE\overline{BE}。如果價值是準確的,那麼貝爾曼誤差是0。

貝爾曼誤差是該狀態的TD誤差的期望。需要下一狀態的兩個獨立樣本,但這並不難實現。且,貝爾曼誤差在現行情況下,總會收斂到最小化對應的ww,且ww是唯一的。

以貝爾曼誤差爲目標下降

但問題有三個:

  • 貝爾曼誤差對應的殘差梯度算法太慢了;
  • 貝爾曼誤差看起來仍然收斂到錯誤的值(書例11.3 A預先分裂的例子);
  • 貝爾曼誤差是不可學習的。

11.6 貝爾曼誤差是不可學習的

何爲不可學習的的?

即,不能從可觀測的數據中學到。

書上有例子:兩個情況是不同的,但產生的數據遵從同一分佈,而VE\overline{VE}卻不同。也就是說VE\overline{VE}不是這個數據分佈唯一確定的函數(跟數據序列竟然沒什麼關係!)。BE\overline{BE}也是一個道理。因此BE\overline{BE}是不可學習的。

但是,爲啥在上一章我們認爲VE\overline{VE}可用呢?因爲優化他的參數是可學習的。我們引出均方回報誤差RE\overline{RE}

11.7 梯度TD方法

考慮最小化均方投影貝爾曼誤差PBE\overline{PBE}的SGD。

本節由數學推導,依此提出了最小均方(Least Mean Square, LMS)GTD2帶梯度修正的TD(0)(TDC)或者GTD(0)算法。

實例證明,梯度TD(0)是有用的。

GTD2 和 TDC 其實包含了兩個學習過程:學w和學v。書上將這種不對稱的依賴稱爲梯級

11.8 強調 TD 方法

此外,書上還簡單介紹了強調 TD 方法,核心思想是將更新分佈也轉換爲同軌策略分佈。

這需要用到興趣值強調值

理論上,期望中,算法理論上是可以收斂到最優解的,但實際上並非如此。

11.9 減小方差

介紹了“重要性權重感知”更新、樹回溯算法、“識別器”等概念,或許可以幫助減小估計的方差,更有效地利用數據。

PiperLiu
2020-3-15 16:39:22

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章