1. 程式人生 > >強化學習——入門

強化學習——入門

強化學習:

強化學習作為一門靈感來源於心理學中的行為主義理論的學科,其內容涉及 概率論、統計學、逼近論、凸分析、計算複雜性理論、運籌學 等多學科知識,難度之大,門檻之高,導致其發展速度特別緩慢。

一種解釋:

人的一生其實都是不斷在強化學習,當你有個動作(action)在某個狀態(state)執行,然後你得到反饋(reward),嘗試各種狀態下各種動作無數次後,這幾點構成腦中的馬爾可夫模型,使你知道之後的行為什麼為最優。

另一種解釋:

強化學習最重要的幾個概念:agent,environment,reward,policy,action。environment 通常利用馬爾可夫過程來描述,agent 通過採取某種 policy 來產生action,和 environment 互動,產生一個 reward。之後 agent 根據 reward 來調整優化當前的 policy。


強化學習和有監督學習的區別

  1. 有監督學習的訓練樣本是有標籤的,而強化學習沒有標籤,它是通過環境給的獎懲來進行學習;我們會發現,強化學習和監督學習以及無監督學習最大的不同就是不需要大量的資料來“餵養”,而是通過自己不停的嘗試來學會某些技能;

  2. 有監督學習的學習過程是靜態的,而強化學習的學習過程是動態的;這裡的動態和靜態指的是:是否和環境進行互動;有監督學習中給什麼樣本就學什麼,而強化學習要與環境進行互動,再根據互動所給出的獎懲來學習;

  3. 有監督學習解決的更多是感知問題,比如深度學習,而強化學習解決的主要是決策問題;因此有監督學習像是五官,而強化學習更像是大腦;舉個栗子:面對一隻老虎的時候,如果只有監督學習就會反映出老虎兩個字,如果有了強化學習,我們就可以決定是逃跑還是戰鬥。

    只要問題中包含了決策和控制,就可以使用強化學習!


強化學習的主流演算法

免模型學習(Model-Free) VS 有模型學習(Model-Base)

主要差異:智慧體是否能完整了解或學習到所在環境的模型

  • 有模型學習:優點是對環境有提前認知,可以提前考慮和規劃;缺點是如果模型和真實世界不一致,那麼在實際使用場景下不會有太好的表現;

  • 免模型學習:缺點是放棄了模型學習,使得效率不如前者;優點是這種方式更容易實現,也容易在真實場景下調整到很好的狀態。

    因此,免模型學習更受歡迎,得到更加廣泛的支援和研究。


為什麼強化學習會很慢?

  • 增量式的引數更新: 最初的演算法,從輸入的周圍環境,到輸出的AI動作之間,是靠梯度下降來完成對映的。在這個過程中,每個增量都需要非常小,才不至於讓新學到的資訊,把之前學到的經驗覆蓋了 (這叫做“災難性干擾”) 。如此一來,學習過程便十分緩慢。

    解決方法: 情節性深度強化學習 (Episodic DRL)

  • 弱歸納偏置: 任何學習過程,都要面臨“偏見-方差權衡”。所謂偏見,就是一開始限定好一些可能的結果,AI從裡面找出自己想要的那一種。限定越窄,AI就可以只考慮為數不多的可能性,更快地得出結果。弱歸納偏置,就需要考慮更多的可能性,學習也就慢一些。

    解決方法: 首先限定好一個狹窄的範圍,再讓AI去探索。可怎麼知道應該限定在哪裡?答案是,借鑑過去的經驗。

    Note:具體講解參考引用中量子位的回答


強化學習與深度學習的結合(DRL,Deep Reinforcement Learning)

強化學習從根本上打破了以前利用處理資料、選取演算法模型、訓練與測試來解決問題的這種思維,而是從 策略、值函式、模型等角度 進行解決問題。為了能夠利用數學進行通用表達,以序列決策問題為典型的馬爾科夫決策過程被廣泛的使用。此外,動態規劃、蒙特卡羅、時序控制三種方法作為探索馬爾科夫序列最佳策略的重要方法而被廣泛使用,並從控制的角度教智慧體如何在有限的狀態下進行探索和利用。

在以上的基礎上,策略梯度及神經網路被廣泛的應用於策略和值函式的逼近過程中。使用神經網路逼近一定程度上避免了表格儲存序列空間大,查詢慢等令人窒息的詬病,成為了強化學習發展的新的方向。

通常情況下,人類的學習是在真實環境下,但強化學習目前還不能普及到高複雜、具有邏輯推理與情感分析的階段,所以擁有一個模擬環境是強化學習學習的重要基礎,這也是DRL區別於其他AI演算法的獨特點。可以說強化學習的成功來自於其在遊戲領域的成功,因為遊戲只涉及策略的決策,而不需要複雜的邏輯推理 (圍棋計算落子概率) 以及情感分析。

  • 深度學習的學習基礎是:資料,演算法模型,計算力;
  • 深度強化學習的學習基礎是:模擬模擬環境,演算法模型和計算力

在強化學習原理與基礎、強化學習的模擬模擬環境以及深度強化學習演算法基礎上,真正的深度強化學習演算法是什麼樣的?它是如何訓練地?如何確定模型以及如何調整超引數等一系列的問題接踵而來。 DQN (Deep Q Network) 是里程碑式的一個 DRL 演算法。


References:

​ [1] 強化學習的主流演算法

​ [2] 強化學習是什麼? - 量子位的回答 - 知乎

​ [3] 強化學習是什麼? - 海晨威的回答 - 知乎

​ [4] 深度強化學習(DRL)探索 - DRLearner的文章 - 知乎