背景

強化學習是甚麼?

強化學習是機器學習的其中一個分支。和深度學習一樣,皆是啟發於生物界(深度學習啟發於生物界的神經系統),強化學習的靈感來自於心理學中的"操作制約"。操作制約中經典例子:Skinner Box(如下圖)

一開始老鼠會隨意地在箱子裡移動,如果他不小心拉下桿子,則會有食物從管子排出,很快地老鼠就會學到拉下桿子就會有食物。

而強化學習也是用同樣的原理,一個主體(Agent)在環境中(Environment)基於其狀態(State)透過策略(Policy)做出行動(Action, or Step)並獲得回饋(Reward),而整個活動(Task)的目的在於有效率、有方法的優化策略(Policy)以最大化未來的回饋(Reward)(如下圖)



(圖片來源: https://www.google.com.tw/url?sa=i&url=https%3A%2F%2Feasyai.tech%2Fen%2Fai-definition%2Fq-learning%2F&psig=AOvVaw13zN_o2O4KOhFIm7QqI6YM&ust=1582625200082000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCKj41sH46ecCFQAAAAAdAAAAABAJ)
EX: 機器人(Agent)需要走到終點,再行動之前會先觀察自己的位置座標與周圍的八格(State, or Observation),選擇上下左右其中一個方向(Action),如果碰到炸彈或雷電就會減分(Nagetive Reward),到達終點就會加分(Positive Reward)。

為什麼要用強化學習?

首先,先討論強化學習與監督式機器學習的差別。

主動 v.s. 被動


在監督式學習中,輸入是一個是先定義好的資料集,並使用不同的演算法產生輸出,整個過程中完全沒有修改輸入值。此外,在這個情境的輸入值之間是完全獨立、互不影響(數學裡的IID-Independent and Indentically Distributed)。

EX: 如上圖,每個類別之間、單個類別裡不同圖片之間,是完全獨立的。

另一方面,在強化學習中,主體會觀察輸入(環境與自身狀態),本身的行動會修改環境與自身造的狀態,影響未來的輸入,這也意味著每次的輸入之間並不是完全獨立的。
以上述的機器人走迷宮為例,每一步的行動都基於自己的座標與周圍八格的觀察,也會直接影響座標與周圍觀察。

這樣特性造成強化學習相對監督式學習省去了Data Labeling的時間,相對地只需要定義並設計好Task和Reward的模型。

Generality

give a man a fish and he’ll eat for a day
teach a man to fish and he’ll eat for a lifetime
give a man a taste for fish and he’ll figure out how to get fish, even if the details

這句名言很好的詮釋了強化學習的特性,強化學習學的不是固有的知識,也不是如何去學,而是評判好壞的能力與或的好的獎賞的慾望。

資訊量

If intelligence was a cake, unsupervised learning would be the cake, supervised learning would be the icing on the cake, and reinforcement learning would be the cherry on the cake.

(Yann LeCun在NIPS論壇上的比喻)

雖然強化學習能解決非常廣的問題,但是每次迭代獲得的資訊量非常的少(非常低的Sample Rate,這意味著強化學習需要非常大的資料量。

為什麼要用強化學習?

討論了許多強化學習與監督式學習之間的差異,可發現強化學習有廣度和不需要Data Labeling的優勢,其他各方面都比不上監督是學習。

然而,隨著新的強化學習演算法的發表(如Deep Reinforcement Learning, LSTM, Imitating Learning, 這些會在之後的文章陸續發表),強化學習的效能漸漸跟上了監督式學習,而有許多驚人的成果與應用,最知名的莫過於2016年打敗李世乭的Alpha Go。

另外,強化學習非常適合應用在模擬器的環境,例如遊戲(https://www.youtube.com/watch?v=L4KBBAwF_bE)這種完全虛擬的環境,或是部分模擬的環境(在電腦模擬部分現實中的環境變數),例如無人飛行器、無人車。

總結

這篇文章用較抽象的觀點介紹強化學習,並用定性的方式說明強化學習的特性,包括高廣度與低資訊量。在下一篇文章會介紹強化學習的理論基礎與一些不同的強化學習演算法。

參考文獻

[1] Coursera: Fundamentals of Reinforcement Learning https://www.coursera.org/learn/fundamentals-of-reinforcement-learning/

#強化學習 #人工智慧







你可能感興趣的文章

Tally String Times with Reduce

Tally String Times with Reduce

教你朋友 CLI (Command Line)

教你朋友 CLI (Command Line)

執行緒與同步、非同步概念

執行緒與同步、非同步概念






留言討論