什麼是強化學習?

語言: CN / TW / HK

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

本文分享自華為雲社群《強化學習淺述》,作者: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 實戰營,快來報名免費學習吧~

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