強化學習是機器學習大家族中的一大類, 使用強化學習能夠讓機器學着如何在環境中拿到高分, 表現出優秀的成績. 而這些成績背后卻是他所付出的辛苦勞動, 不斷的試錯, 不斷地嘗試, 累積經驗, 學習經驗.
從無到有
強化學習是一類算法, 是讓計算機實現從一開始什么都不懂, 腦袋里沒有一點想法, 通過不斷地嘗試, 從錯誤中學習, 最后找到規律, 學會了達到目的的方法. 這就是一個完整的強化學習過程. 實際中的強化學習例子有很多. 比如近期最有名的 Alpha go, 機器頭一次在圍棋場上戰勝人類高手, 讓計算機自己學着玩經典游戲 Atari, 這些都是讓計算機在不斷的嘗試中更新自己的行為准則, 從而一步步學會如何下好圍棋, 如何操控游戲得到高分. 既然要讓計算機自己學, 那計算機通過什么來學習呢?
虛擬老師
原來計算機也需要一位虛擬的老師, 這個老師比較吝嗇, 他不會告訴你如何移動, 如何做決定, 他為你做的事只有給你的行為打分, 那我們應該以什么形式學習這些現有的資源, 或者說怎么樣只從分數中學習到我應該怎樣做決定呢? 很簡單, 我只需要記住那些高分, 低分對應的行為, 下次用同樣的行為拿高分, 並避免低分的行為.
比如老師會根據我的開心程度來打分, 我開心時, 可以得到高分, 我不開心時得到低分. 有了這些被打分的經驗, 我就能判斷為了拿到高分, 我應該選擇一張開心的臉, 避免選到傷心的臉. 這也是強化學習的核心思想. 可以看出在強化學習中, 一種行為的分數是十分重要的. 所以強化學習具有分數導向性. 我們換一個角度來思考.這種分數導向性好比我們在監督學習中的正確標簽.
對比監督學習
我們知道監督學習, 是已經有了數據和數據對應的正確標簽, 比如這樣. 監督學習就能學習出那些臉對應哪種標簽. 不過強化學習還要更進一步, 一開始它並沒有數據和標簽.
他要通過一次次在環境中的嘗試, 獲取這些數據和標簽, 然后再學習通過哪些數據能夠對應哪些標簽, 通過學習到的這些規律, 竟可能地選擇帶來高分的行為 (比如這里的開心臉). 這也就證明了在強化學習中, 分數標簽就是他的老師, 他和監督學習中的老師也差不多.
RL 算法們
強化學習是一個大家族, 他包含了很多種算法, 我們也會一一提到之中一些比較有名的算法, 比如有通過行為的價值來選取特定行為的方法, 包括使用表格學習的 q learning, sarsa, 使用神經網絡學習的 deep q network, 還有直接輸出行為的 policy gradients, 又或者了解所處的環境, 想象出一個虛擬的環境並從虛擬的環境中學習 等等.
強化學習方法匯總
了解強化學習中常用到的幾種方法,以及他們的區別, 對我們根據特定問題選擇方法時很有幫助. 強化學習是一個大家族, 發展歷史也不短, 具有很多種不同方法. 比如說比較知名的控制方法 Q learning, Policy Gradients, 還有基於對環境的理解的 model-based RL 等等. 接下來我們通過分類的方式來了解他們的區別.
Model-free 和 Model-based
我們可以將所有強化學習的方法分為理不理解所處環境,如果我們不嘗試去理解環境, 環境給了我們什么就是什么. 我們就把這種方法叫做 model-free, 這里的 model 就是用模型來表示環境, 那理解了環境也就是學會了用一個模型來代表環境, 所以這種就是 model-based 方法. 我們想象. 現在環境就是我們的世界, 我們的機器人正在這個世界里玩耍, 他不理解這個世界是怎樣構成的, 也不理解世界對於他的行為會怎么樣反饋. 舉個例子, 他決定丟顆原子彈去真實的世界, 結果把自己給炸死了, 所有結果都是那么現實. 不過如果采取的是 model-based RL, 機器人會通過過往的經驗, 先理解真實世界是怎樣的, 並建立一個模型來模擬現實世界的反饋, 最后他不僅可以在現實世界中玩耍, 也能在模擬的世界中玩耍 , 這樣就沒必要去炸真實世界, 連自己也炸死了, 他可以像玩游戲一樣炸炸游戲里的世界, 也保住了自己的小命. 那我們就來說說這兩種方式的強化學習各用那些方法吧.
Model-free 的方法有很多, 像 Q learning, Sarsa, Policy Gradients 都是從環境中得到反饋然后從中學習. 而 model-based RL 只是多了一道程序, 為真實世界建模, 也可以說他們都是 model-free 的強化學習, 只是 model-based 多出了一個虛擬環境, 我們不僅可以像 model-free 那樣在現實中玩耍,還能在游戲中玩耍, 而玩耍的方式也都是 model-free 中那些玩耍方式, 最終 model-based 還有一個殺手鐧是 model-free 超級羡慕的. 那就是想象力.
Model-free 中, 機器人只能按部就班, 一步一步等待真實世界的反饋, 再根據反饋采取下一步行動. 而 model-based, 他能通過想象來預判斷接下來將要發生的所有情況. 然后選擇這些想象情況中最好的那種. 並依據這種情況來采取下一步的策略, 這也就是 圍棋場上 AlphaGo 能夠超越人類的原因. 接下來, 我們再來用另外一種分類方法將 強化學習分為基於概率和基於價值.
基於概率 和 基於價值
基於概率是強化學習中最直接的一種, 他能通過感官分析所處的環境, 直接輸出下一步要采取的各種動作的概率, 然后根據概率采取行動, 所以每種動作都有可能被選中, 只是可能性不同. 而基於價值的方法輸出則是所有動作的價值, 我們會根據最高價值來選着動作, 相比基於概率的方法, 基於價值的決策部分更為鐵定, 毫不留情, 就選價值最高的, 而基於概率的, 即使某個動作的概率最高, 但是還是不一定會選到他.
我們現在說的動作都是一個一個不連續的動作, 而對於選取連續的動作, 基於價值的方法是無能為力的. 我們卻能用一個概率分布在連續動作中選取特定動作, 這也是基於概率的方法的優點之一. 那么這兩類使用的方法又有哪些呢?
比如在基於概率這邊, 有 Policy Gradients, 在基於價值這邊有 Q learning, Sarsa 等. 而且我們還能結合這兩類方法的優勢之處, 創造更牛逼的一種方法, 叫做 Actor-Critic, actor 會基於概率做出動作, 而 critic 會對做出的動作給出動作的價值, 這樣就在原有的 policy gradients 上加速了學習過程.
回合更新 和 單步更新
強化學習還能用另外一種方式分類, 回合更新和單步更新, 想象強化學習就是在玩游戲, 游戲回合有開始和結束. 回合更新指的是游戲開始后, 我們要等待游戲結束, 然后再總結這一回合中的所有轉折點, 再更新我們的行為准則. 而單步更新則是在游戲進行中每一步都在更新, 不用等待游戲的結束, 這樣我們就能邊玩邊學習了.
再來說說方法, Monte-carlo learning 和基礎版的 policy gradients 等 都是回合更新制, Qlearning, Sarsa, 升級版的 policy gradients 等都是單步更新制. 因為單步更新更有效率, 所以現在大多方法都是基於單步更新. 比如有的強化學習問題並不屬於回合問題.
在線學習 和 離線學習
這個視頻的最后一種分類方式是 在線學習和離線學習, 所謂在線學習, 就是指我必須本人在場, 並且一定是本人邊玩邊學習, 而離線學習是你可以選擇自己玩, 也可以選擇看着別人玩, 通過看別人玩來學習別人的行為准則, 離線學習 同樣是從過往的經驗中學習, 但是這些過往的經歷沒必要是自己的經歷, 任何人的經歷都能被學習. 或者我也不必要邊玩邊學習, 我可以白天先存儲下來玩耍時的記憶, 然后晚上通過離線學習來學習白天的記憶.那么每種學習的方法又有哪些呢?
最典型的在線學習就是 Sarsa 了, 還有一種優化 Sarsa 的算法, 叫做 Sarsa lambda, 最典型的離線學習就是 Q learning, 后來人也根據離線學習的屬性, 開發了更強大的算法, 比如讓計算機學會玩電動的 Deep-Q-Network.
這就是我們從各種不同的角度來對比了強化學習中的多種算法.