用“小紅的下任男友是誰”通俗解釋強化學習中的 基於模型方法 與 免模型方法

之前糾結了很久 Model-based 與 Model-free 。突然想出來的一個點子,覺得蠻有意思、蠻直觀的,便寫下來,希望能幫到和我一樣的初學者。

我說的可能有錯誤,請以娛樂+批判性眼光閱讀此文,有問題歡迎 私信/郵箱 來 指正/交流:[email protected]

小紅同學比較…嗯,風流。就是經常更換男朋友。

我朋友最近不知哪根弦不對勁,特別八卦。他特別特別想“預測”出小紅的下任男友是誰。於是他找我來幫忙。

“這麼辦吧,”我說,“不如我們用強化學習的思想解決這個問題?”

“怎麼講?”

我便一本正經地胡說八道起來——

我們首先做五點假設:

  • 小紅選哪個男票只與其選擇當時的狀態(心情、心智、性格本身)有關;
  • 小紅的性格、心智、選擇原則一直沒怎麼發生過變化;
  • 小紅每次都會盡力去選擇其認爲的,會帶來最好的結果的那個;
  • 小紅分手後會根據心情立刻去找下一個男朋友;
  • 小紅每次“分手”後,都會發朋友圈,通過朋友圈文案,可以看出小紅對這個男友的滿意程度,也就是這個男友實際上到底處的值不值。

因此,我們可以根據“歷史數據”,得到一個個(狀態-動作-收益-下一個狀態-下一個動作)元組,從而可以根據小紅的狀態(心情)預測出其動作(選擇哪個男朋友)。如下表。

元組元素 狀態 動作 收益與後續狀態
解釋 小紅當前心情 小紅在該心情下選了哪個男朋友 與這個男友分手後,發的朋友圈內容
數據 1 小紅不高興 選了個很溫柔的男友 分手後朋友圈很懷念(收益:+5),小紅很尷尬
數據 2 小紅很尷尬 選了個很暴躁的男友 分手後朋友圈瘋狂吐槽(收益:-5),小紅很尷尬
數據 3 小紅很尷尬 選了個很體貼的男友 分手後朋友圈有點懷念(收益:+1),小紅很平靜
數據 4 小紅很平靜 選了個不愛說話的男友 分手後朋友圈較懷念(收益:+3),小紅很平靜
新數據 小紅很開心 請你預測小紅將找個什麼樣的男朋友? ???

數據抽象好了,我們就可以用 Sarsa 的思想來解決。

所謂 Sarsa 就是我們運用了 S A R S A 元素的意思。

我們通過已有的、或者測試得到的在線數據,來估計小紅在各個狀態下選擇各個動作的“價值”,就可以估計出其會選誰當自己男朋友了。

心情(StS_t) 選擇(AtA_t) 價值Q(St,At)Q(S_t, A_t)
不高興 選擇溫柔的 +10
不高興 選擇暴躁的 -10
不高興 選擇體貼的 +15
不高興
不高興 選擇不愛說話的 -5

如果有了上面這張表,我們就知道小紅在不高興的心情下,最可能選擇誰了。或者說,知道了選誰是對小紅最好的。

我們的數據就是用來得到上面這張表的。更新公式如下(Sutton’s Reinforcement Learning - An Introduction 2018, P129, 6.7):

Q(St,At)Q(St,At)+α[Rt+1+γQ(St+1,At+1)Q(St,At)]Q(S_t,A_t) \leftarrow Q(S_t,A_t) + \alpha [ R_{t+1} + \gamma Q(S_{t+1}, A_{t+1}) - Q(S_t,A_t)]

“小紅有過多少男朋友來着?”我問朋友。

“200多個吧。”

嗯…不多不少,我們應該更進一步:用 基於模型方法 (Model-based)還是 免模型方法(Model-free )?

啥是基於模型的方法?

基於模型,就是不單單把數據用來更新公式,還用來建模。

比如,上面提到了,數據是被放在公式Q(St,At)f(St,At,Rt,St+1,At+1)]Q(S_t,A_t) \leftarrow f(S_t,A_t,R_t,S_{t+1},A_{t+1})]裏面更新的。但除此之外,我們還可以拿這些數據對小紅這個人進行建模:

  • 通過小紅的行爲,判斷小紅這個人的心智、性格、選擇男朋友的原則(前面假設中提到了,小紅的心智、性格、選擇原則是不變化的);
  • 這樣,除了小紅產生的真實的200多個數據,我們還可以自己“推演”出一些虛擬數據(根據對小紅心智、性格、選擇男朋友的原則的假設,模擬小紅接下來該選誰當男朋友)。

這就是所謂的 基於模型方法(Model-based)。

基於模型方法有好有壞,好處是:

  • 更充分地利用數據,有些數據對於 Q(St,At)Q(S_t,A_t) 的更新是沒什麼用的,但對於判斷小紅是個什麼樣人有用(對於建模有用);
  • 基於模型,我們再產生一些數據,餵給 Q(St,At)Q(S_t,A_t) ,這樣,那些本來沒什麼用的數據也能間接地發揮價值;
  • “基於模型的方法則在一些控制問題中,相比於免模型方法,通常有 10^2 級的採樣率提升。”[1]

但問題是:

  • 模型可能有偏差,則產生的數據也是不準的,更加誤導了 Q(St,At)Q(S_t,A_t)
  • 這個問題本身難以建模。

免模型方法(Model-free )則是不建模,只更新Q(St,At)Q(S_t,A_t)


說罷,我們就開心地去給小紅的數據打標籤了。

跑模型的時候,我問我朋友,這麼關心小紅,難道你也跟大家一樣喜歡他嗎?

朋友大方承認了,還問我:“你呢?”

我跟這位朋友向來都是坦誠相待,我的回答在文章末尾。


故事還沒完,我們先聊點別的發散一下。

免模型方法很好理解,基於模型則有點抽象了。我們來看一個經典的基於模型方法:Dyna。

其迭代過程如下(Sutton’s Reinforcement Learning - An Introduction 2018, P164):

可以看到,每獲得一個數據,其都會進行 n 次自我模擬(基於自己的模型,產生 n 個仿真出來的數據)。

Talk is cheap, show me the codes.

案例的代碼可以閱讀我在這章的筆記:

https://github.com/PiperLiu/Reinforcement-Learning-practice-zh/blob/master/practice/07-01-Maze-Problem-with-DynaQ-and-Priority.ipynb

代碼使用的是 Shangtong Zhang 版的 python 解決方案。他的代碼很優美,並且不晦澀,我對其進行了一些中文標註:

歡迎交流。


在故事中,我儘量把案例描繪成一個簡單的、同軌策略的、馬爾科夫過程。

解釋一下我在故事中做的假設:

  • 小紅選哪個男票只與其選擇當時的狀態(心情、心智、性格本身)有關;(馬爾科夫過程)
  • 小紅的性格、心智、選擇原則一直沒怎麼發生過變化;(環境是穩定的,建模有其合理性)
  • 小紅每次都會盡力去選擇其認爲的,會帶來最好的結果的那個;(儘管我們不直接控制小紅,但小紅自己本身就在尋找最優策略,因此看作同軌策略控制)
  • 小紅分手後會根據心情立刻去找下一個男朋友;(狀態-動作是連續的)
  • 小紅每次“分手”後,都會發朋友圈,通過朋友圈文案,可以看出小紅對這個男友的滿意程度,也就是這個男友實際上到底處的值不值。(價值函數的依據)

最後貼一段昨天讀的文章[1]中提到的兩段話,更好地理解基於模型的方法(Model-based)與免模型的方法(Model-free):

RL 算法可以分爲基於模型的方法(Model-based)與免模型的方法(Model-free)。前者主要發展自最優控制領域。通常先通過高斯過程(GP)或貝葉斯網絡(BN)等工具針對具體問題建立模型,然後再通過機器學習的方法或最優控制的方法,如模型預測控制(MPC)、線性二次調節器(LQR)、線性二次高斯(LQG)、迭代學習控制(ICL)等進行求解。而後者更多地發展自機器學習領域,屬於數據驅動的方法。算法通過大量採樣,估計代理的狀態、動作的值函數或回報函數,從而優化動作策略。

基於模型的方法一般先從數據中學習模型,然後基於學到的模型對策略進行優化。學習模型的過程和控制論中的系統參數辨識類似。因爲模型的存在,基於模型的方法可以充分利用每一個樣本來逼近模型,數據利用率極大提高。基於模型的方法則在一些控制問題中,相比於免模型方法,通常有 10^2 級的採樣率提升。此外,學到的模型往往對環境的變化魯棒, 當遇到新環境時,算法可以依靠已學到的模型做推理,具有很好的泛化性能。


回來講故事,我是怎麼回答我朋友的呢?

我說,我不喜歡。畢竟,我對男的不感興趣。

References:
[1] 83篇文獻-萬字總結 || 強化學習之路 https://mp.weixin.qq.com/s/_OS2q7-9Y7HcsoSXx-YBIQ
[2] Sutton R S, Barto A G. Reinforcement learning: An introduction[M]. MIT press, 2018.

公衆號:Piper蛋窩

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