天天看點

什麼是強化學習?

摘要:本文嘗試以一種通俗易懂的形式對強化學習進行說明,将不會包含一個公式。

本文分享自華為雲社群《強化學習淺述》,作者: yanghuaili 人。

機器學習可以大緻分為三個研究領域:監督學習,無監督學習和強化學習(Reinforcement Learning,RL)。監督學習是大家最為熟知的一種機器學習方式,我們經常遇到的圖檔分類、人臉識别、回歸預測等任務都屬于監督學習。簡而言之,監督學習處理的任務是根據給定的輸入-标簽對,構模組化型,實作對新輸入的标簽進行預測。無監督學習,顧名思義,在模型學習階段不需要标簽(往往是因為标簽标注成本高或标簽劃分标準模糊等原因無法得到輸入的标簽),最典型的場景就是聚類。而強化學習與上述兩種學習方式有較大的差别,它通過智能體與環境的互動,學習得到一個政策,使得使用該政策與環境進行互動,可以得到最大化的期望收益。相信大家看了上面這一句話對強化學習還是沒有建立明晰的概念,本篇部落格将會在接下來的篇幅裡嘗試以一種通俗易懂的形式對強化學習進行說明,本文将不會包含一個公式。

假設你穿越到了戰火紛飛的三國時代,成為蜀國諸葛武侯手下的一員将領,丞相給你一支1萬人的軍隊,給你定下目标:到魏國攻城拔寨,取得盡可能多的城池,最好能攻下魏國都城。這時你想,自己從來沒有真正地打過仗,怎麼才能赢呢?使用監督學習?那就得有足夠多而豐富的實戰案例供自己學習,以及看兵書,但戰場形勢瞬息萬變,兵書又怎能覆寫所有?如果再遇上不按套路出牌的敵将,兵書豈不是也不管用?那使用無監督學習?想到這你苦笑了一下,還不如看兵書呢。于是你愁眉苦臉,抓耳撓腮,無限報國志無法實施。這時你想,隻能上強化學習了!于是,你鋪開一頁紙,開始整理自己的思路……

  • 環境(Environment):也就是你在戰場上面臨的場景了,比如周圍地形,敵方位置,敵方軍隊規模,敵軍主帥,我方位置等資訊。也就是你做決策所依據的資訊;另一方面,你的決策也會改變環境,如你做出前行1公裡的決定,敵軍會根據你的決策采取行動改變位置等;你決策燒掉前方阻礙視野的樹林,那地形資訊也會發生改變等;
  • 智能體(Agent):也就是你自己了;
  • 動作(Action):也就是你根據環境情況所采取的決策動作,如上所述的前行、燒掉阻礙視野的樹林等;
  • 動作空間(Action Space):是指你可以采取的所有動作所組成的空間,它可以是連續的、離散的或兩者共存。連續動作包括前行多少距離,向什麼方向前行等,離散動作包括是進攻、安營紮寨、防守還是撤退、軍隊分成幾股、是正面沖擊、兩面包抄還是打埋伏等。總而言之,動作空間就是你可以根據環境做出的所有可能的決策動作;
  • 政策(Policy):是指對指定的環境,你會采取何種動作的機率。這個可能稍微難了解些。舉個例子,司馬懿打仗所采取的政策和張飛就很不一樣,丞相的空城計之是以能成功,就是因為司馬懿采取的政策偏穩重;但如果是張飛面臨空城計,有可能就直接打進城去活捉丞相了,這就是政策的不同;另一個例子就是,張三學的是孫子兵法,李四學的是武穆遺書,那他們在戰場上面臨相同環境所采取的動作也會不同,一般用π來表示;
  • 狀态(State):在某一時刻或某一個階段所面臨環境具體情況。還以空城計為例,丞相當時面臨的狀态是敵将司馬懿率領15萬大軍奔襲自己而來,而自己在一座城裡,但僅有2500軍人。丞相就是在這種狀态下做出空城計的動作的,一把用S來表示;
  • 狀态轉移機率(State Transition Probability):針對特定的狀态采取動作後,目前狀态向其他狀态轉移的機率。丞相針對司馬懿的進攻狀态,采取了空城計的動作,在這種情況下環境做出何種反應(即轉向何種狀态)主要取決于敵将司馬懿(該設定下他是環境的一部分),接下來司馬懿可能采取的動作包括進攻、派人偵查、圍而不攻、撤退等,最終司馬懿采取了撤退的動作,狀态變成了司馬懿撤軍;這是司馬懿謹慎的性格決定他采取撤退的機率較大,并不代表他不會采取其他動作,如果他采取圍而不攻,那丞相面對的就是另一種狀态;
  • 回報(Reward):對某種狀态采取某種動作會獲得的收益的一個量化名額,在空城計中,由于敵衆我寡,我方人員儲存越多收益越大,丞相可能采取的動作包括緊閉城門拒敵、出城迎敵、空城計等,出城迎敵則可能全軍覆沒,收益為零,緊閉城門拒敵最終還是會被攻破,但稍微可以撐一段時間,收益稍高,而空城計則可能保全全軍且機率很高,是以丞相采取了空城計的動作;
  • 序列決策問題(Sequential Decision Problems):這種問題關心的是多輪決策的最終收益大小,而淡化單次回報的大小。空城計是一個特例,一輪決策就完成了,但真實的戰場上是要實時根據敵軍的動态進行決策的,以實作打敗敵軍的最終目标。淡化單次回報而最大化長期收益的例子就是以一部分軍隊為誘餌,犧牲該部以獲得全殲敵人的最終收益。以及中國工農紅軍的十六字訣“敵退我進,敵駐我擾,敵疲我打,敵退我追”,也是指導戰争中的序列決策的;

當你總結完這些強化學習的概念後,覺得打仗這門學問就應該用強化學習來解決,倍感興奮,但這隻是強化學習相關的一些概念,怎麼去做強化學習呢?這就引出下面兩個重要的概念:Q值和V值

  • V值是智能體在某個狀态下,一直到最終狀态的回報總和的期望。比如戰争中總會去争奪一些進可攻退可守的戰略要地,占據了這些戰略要地,己方就處于一種對整個戰争形勢有利的狀态,我方到戰争結束所獲得的累積回報越大,也就是當我方處于戰略要地這種狀态下的V值較大,而處于其他狀态的V值相對較小。為什麼敵我雙方都知道處于這種狀态最終的回報總和期望較大呢?遊戲中我們可以一直重複這個場景,嘗試從該狀态出發采取無數次重複試驗,每次以不同的機率采取不同的動作,直到戰争結束,就可以計算出該狀态的V值。但真實情況下是不允許進行這種試驗的,敵我雙發都知道,是因為曆史上已經有太多的這種案例,不需要再做試驗了;當然V值是與智能體相關的,在同一個狀态出發,不同的智能體采取的政策不同,V值也會不同(對此你深以為然,自己與丞相相比,從相同的狀态出發,得到的最終結果肯定會大相徑庭)
  • Q值是智能體在某個狀态下,采取某一行動後,直到最終狀态的回報總和的期望。如在空城計中,丞相面臨當時的狀态采取了空城計,其Q值就是從丞相采取空城計直到戰争結束的回報總和的期望。

Q值與V值的是可以互相計算的,如已知各個狀态的V值,那為了計算在S狀态下采取a動作的Q值,我們還需要知道狀态轉移機率,如丞相采取空城計,下一步的狀态及機率分别為:(1)司馬懿進攻,機率為0.1;(2)司馬懿圍而不攻,機率為0.2;(3)司馬懿撤退,機率為0.7。那麼丞相采取空城計的Q值即為采取空城計的回報加上三種狀态的V值的機率權重和。如果已知各個狀态和動作下的Q值,要計算V值,我們還需要知道政策在該狀态下采取不同行動的機率,如要計算空城計之前狀态的V值,而丞相可以采取的動作有三種:(1)出城迎敵,機率0.1;(2)守城拒敵,機率0.4;(3)空城計,機率0.5.由于我們已經知道Q值,那麼V值就是這三種動作的Q值的機率權重和。

本篇部落格簡述了強化學習的一些相關概念,如有錯誤,歡迎在評論區批評指正。

(2021華為雲 AI 實戰營——華為雲員工都在學的AI實戰營,快來報名免費學習吧~)

點選關注,第一時間了解華為雲新鮮技術~

繼續閱讀