如何零基礎入門增強學習?看這篇就對了

如何零基礎入門增強學習?看這篇就對了

來自專欄景略集智

增強學習(也叫強化學習)是機器學習的一個重要類型,在增強學習中,Agent 會通過執行一系列的行為和觀察結果來學習如何在一定的環境下做出行動。

最近幾年,我們看到增強學習領域的研究取得一系列重要進展。比如 2014 年 DeepMind 提出的深度 Q 學習架構;2016 年打敗了人類世界圍棋冠軍的 AlphaGo;2017 年 OpenAI公布的 PPO 演算法等等。

不少人是在這次比賽之後,投入了人工智慧的行業

在本文,你會了解:

  • 什麼是增強學習,為何說「回饋」(rewards)是增強學習的核心理念
  • 增強學習的三種方法
  • 深度增強學習中的「深度」指的是什麼

在深入研究增強學習之前掌握這三點知識,真的非常重要。

增強學習背後的理念就是指 Agent 會與周圍環境互動並從做出的行為中收到回饋,從中進行學習。

從與環境的互動中學習源自我們人類的自然經驗。想像一下,你還是個小孩,正在房間里晃悠,看到閃著火光的壁爐後,你慢慢的靠近它。

壁爐很暖和,很舒服,你摸著它感覺好好(正面回饋+1),於是你覺得火是個好東西。

但是接下來你嘗試摸一下火苗,結果悲劇了,火苗燙到了你的手指(負面回饋+1)。這時,你終於明白當你和火保持足夠的距離時,它就是個好東西,因為能為你帶來溫暖。但是如果靠的太近,它就會把你燒傷。

這就是我們人類的學習方式,通過和周圍的環境互動進行學習。增強學習無非就是以計算方法模擬了這種從行為中學習的方式。

增強學習的過程

我們假設有個 Agent 學習玩《超級馬里奧》遊戲,以此為例,那麼增強學習過程就可以模擬為如下循環狀態:

  • Agent 從環境中得到了 S0 狀態(在這個例子中,我們從《超級馬里奧》(環境)中收到遊戲(S)的第一個畫面幀)
  • 根據得到的狀態 S0,agent 採取行動 A0(比如 agent 向右移動)
  • 環境變為新的狀態 S1(也就是新的畫面幀)
  • 環境向 agent 給出新的回饋 R1(沒死:+1)
  • 這個增強學習輸出一系列的狀態、行動、回饋

Agent 的目標就是將預期累積回饋最大化。

回饋假說的核心理念

為什麼 agent 的目標是將預期累積回饋最大化?

增強學習正是基於回饋假說的核心理念。所有的目標都能描述為預期累積回饋的最大化。

這就是為何增強學習中,為了能做出最好最合適的行為,我們需要將預期累積回饋最大化。

每個時步的累積回饋可以寫為:

它等於:

然而,在實際情況中,我們不能僅僅像這樣把回饋相加。更早一些到來的回饋(遊戲開頭部分)會更容易發生,因為它們相比長遠的未來回饋會更有預測性。

比如說你的 agent 是個小老鼠,你的對手是只貓。你的目標是讓小老鼠在被貓吃掉前儘力偷吃到最大量的乳酪。

我們在圖中可以看到,相比吃掉離貓很近的乳酪,吃掉離我們較近的乳酪的可能性更大(離貓越近,就越危險)。

結果就是,靠近貓的回饋,即便更大(即更多的乳酪)也要大打折扣。我們真的無法確定小老鼠能吃到這部分的乳酪。

對於這部分要打折扣的回饋,我們這樣:

  • 我們首先定義一個叫「γ」的折扣率,必須在0到1之間。
  • γ 的值越大,折扣就越小。這意味著正在學習的 agent 會更加在意長遠回饋。
  • 相反,γ 的值越小,折扣就越大。這意味著正在學習的 agent 更在乎短期回饋(也就是最近的乳酪)。

那麼我們打折後的累積預期回饋為:

簡單來說,這些時步的回饋都會以 γ 值進行打折。隨著時步增加,貓咪離小老鼠越來越近,因此未來回饋發生的可能性會越來越低。

情節性任務與連續性任務

任務類型也是增強學習中的一個問題。我們基本有兩種任務類型:情節性任務和連續性任務。

情節性任務

在這種任務中,我們有一個起始點和一個結束點(終結狀態)。這樣會創建一個情節:一系列的狀態、行為、回饋和新狀態。

比如在我們舉的玩《超級馬里奧》的例子中,一個情節以啟動新的馬里奧開始,以一種狀態結束:死掉了或通關了。

連續性任務

這種類型的任務就是永遠持續下去(沒有終止狀態)。在這種任務中,agent 必須學習如何選擇最佳行為,並且同時還要和環境進行互動。

例如,有個從事自動股票交易的 agent。在連續性任務中,並無起始點和結束點,因此 agent會一直運行,直到我們決定將其終止

蒙特卡羅方法 vs 時序差分學習方法

我們有兩種學習方法:

  • 在情節結束時收集回饋,然後計算最大預期未來回饋:這是蒙特卡羅方法,也叫統計模擬方法。
  • 在每一步結束時預估回饋:這是時序差分學習方法(Temporal Difference Learning)。

蒙特卡羅方法

當情節結束時(agent 達到一個「終止狀態」),agent 會查看全部累積回饋,確認所做行為的效果。在蒙特卡羅方法中,僅僅在遊戲結束時才接收回饋。

然後我們藉助累積的回饋,開始新遊戲。Agent 會在每次迭代後作出更好的決定

我們舉個例子:

如果我們深處一個迷宮環境中:

  • 我們會一直在相同的起始點開始。
  • 如果貓咪吃掉了 agent 或 agent 移動了超過 20 步,我們就終止這個情節。
  • 在情節結束時,我們會收集一系列的狀態、行為、回饋和新狀態。
  • Agent 會相加全部回饋 Gt(看看自己做的怎樣)。
  • Agent 然後會根據上面的公式更新 V(狀態)。
  • 接著以獲得的新知識,開始新遊戲。

通過運行越來越多的情節,agent 會學習玩得越來越好。

時序差分學習方法:在每個時步學習

和蒙特卡羅方法不同,時序差分學習方法不會等到情節結束時再更新最大預期未來回饋,而是更新與當前非終止狀態 St 相對的預估值 V。

這種方法稱為時序差分(0)或一步時序差分(在任意一步後就更新值函數)。

時序差分法只會等到下個時步開始就會更新預估值。在時間 t+1 處 agent 就會立刻用觀測到的回饋 Rt+1 和當前預估 V(St+1)形成時序差分(TD)目標。

時序差分目標是一種預估:實際上你是將前一個預估 V(St)更新達到下一步目標,通過這種方式將其更新。

Exploration 和 Exploitation 之間的權衡

在查看解決增強學習問題的不同策略之前,我們必須談談一個非常重要的話題:Exploration 和 Exploitation 之間的權衡。也就是探索和利用問題的困境。

  • Exploration(探索)是指發現關於環境的更多信息。
  • Exploitation(利用)是指深入利用已知信息來將回饋最大化。

記住,增強學習 agent 的目標是將預期累積回饋最大化,然而我們也會掉入一個常見的陷阱中。

在我們舉的小老鼠 agent 的例子中,我們的小老鼠會有無限量的小塊乳酪(每一步+1),但是在迷宮的頂端,會有巨量的乳酪(+1000)。

然而,如果我們只關注回饋,我們的 agent 會永遠無法獲取那些巨量的乳酪。相反,它只會利用最近的回饋源,哪怕這些資源很小(也就是 exploitation 問題)。

但是如果 agent 稍微做些探索(也就是 exploration),它就能發現很大回饋。

這就是我們所說的增強學習中 Exploration 和 Exploitation 之間的權衡問題。我們必須定義一個規則,幫助 agent 解決這個權衡問題。將來我們會針對這個問題,詳細討論。

增強學習的三種方法

現在我們已經了解了增強學習的基礎部分,接著看看解決增強學習問題的 3 種方法。它們分別為基於價值(value-based)、基於策略(policy-based)和基於模型(model-based)的方法。

1 基於價值的方法

在基於價值的增強學習中,目標是優化價值函數V(s)。

價值函數是一種函數,能夠告訴我們agent在每個狀態中獲得的最大預期未來回饋。

每個狀態的值就是agent從當前狀態開始預期在未來累積的回饋的總量。

Agent會用價值函數去挑選每一步中所選的狀態,最終會選取值最大的狀態。

在迷宮的例子中,每一步我們會選最大值:-7,然後-6,然和-5(等等),以此來達到目標。

2 基於策略的方法

在基於策略的增強學習中,我們想在不用價值函數的情況下直接優化策略函數π(s)。

所謂策略就是指在給定時間中定義agent行為的東西。

我們會學習一個策略函數,這能讓我們將每個狀態映射到對應的最佳行為。

我們有兩種策略:

決定性策略:它是指在給定狀態內會始終返回相同行為的策略。

隨機性策略:它是指隨著行為變化輸出一個分布概率。

我們在這裡可以看到,策略會每一步直接指明最佳行為。

3 基於模型的方法

在基於模型的增強學習中,我們會為環境建模。這意味著我們會為環境的行為創建一個模型。

問題是每個環境需要不同的模型表示,所以這種方法相當複雜,我們會在將來詳細講述。

深度增強學習

深度增強學習應用了深度神經網路來解決增強學習問題——所以稱之為「深度」。

在後面的文章中我們會介紹Q學習演算法(一種經典的增強學習演算法)和深度Q學習演算法。你會看到在Q學習演算法中,我們使用傳統演算法創建一個Q圖表幫我們找到每個狀態採取的行為。在深度Q學習演算法中,我們會使用神經網路完成這項任務。

結語

本文我們主要分享了何為增強學習以及增強學習的幾種方法。在後面的文章中會分享Q學習演算法、深度Q學習演算法和策略梯度等。歡迎關注集智,不錯過精彩內容。


參考資料:

medium.freecodecamp.org


推薦閱讀:

TAG:機器學習 | 強化學習ReinforcementLearning | 集智sjizhiim |