奧推網

選單
科技

策略產品經理必讀系列-第四講強化學習

編輯導語:強化學習是機器學習的一個分支,它能透過不斷與環境的互動、試錯,最終完成特定目的或者使得整體行動收益最大化。本文作者對強化學習進行了總結分析,一起來學習一下吧。

強化學習這個概念是2017年烏鎮圍棋峰會上Alpha Go戰勝了當時世界排名第一的柯潔而被普通大眾知道,後面隨著強化學習在各大遊戲比如王者榮耀中被應用,而被越來越多的人熟知。王者榮耀AI團隊,甚至在頂級期刊AAAI上發表過強化學習在王者榮耀中應用的論文。

那麼強化學習到底是什麼,如何應用的了?下面和大家分享我對於強化學習的整個過程,以及強化學習目前在工業界是如何應用的一些看法,歡迎溝通交流,沒有任何計算機基礎的也可以看的懂。

01 簡介強化學習

強化學習是機器學習的一個分支,關於機器學習我不再重複介紹,感興趣的讀者可以看我之前寫的機器學習文章:策略產品經理必讀系列—第一講機器學習

1. 什麼是強化學習

強化學習是一種機器學習的學習方式(四種主要的機器學習方式解釋見上圖)。

上圖沒有提到深度學習,是因為從學習方式層面上來說,深度學習屬於上述四種方式的子集。而強化學習是獨立存在的,所以上圖單獨列出強化學習,而沒有列出深度學習。

強化學習和其他三種學習方式主要不同點在於:強化學習訓練時,需要環境給予反饋,以及對應具體的反饋值。它不是一個分類的任務,不是金融反欺詐場景中如何分辨欺詐客戶和正常客戶。強化學習主要是指導訓練物件每一步如何決策,採用什麼樣的行動可以完成特定的目的或者使收益最大化。

1. 什麼是強化學習

,AlphaGo就是強化學習的訓練物件,AlphaGo走的每一步不存在對錯之分,但是存在“好壞”之分。當前這個棋面下,下的“好”,這是一步好棋。下的“壞”,這是一步臭棋。

強化學習的訓練基礎在於AlphaGo的每一步行動環境都能給予明確的反饋,是“好”是“壞”?“好”“壞”具體是多少,可以量化。強化學習在AlphaGo這個場景中最終訓練目的就是讓棋子佔領棋面上更多的區域,贏得最後的勝利。

打一個不是很恰當的比喻,有點像馬戲團訓猴一樣。

馴獸師敲鑼,訓練猴站立敬禮,猴是我們的訓練物件。如果猴完成了站立敬禮的動作,就會獲得一定的食物獎勵,如果沒有完成或者完成的不對,就沒有食物獎勵甚至是鞭子抽打。時間久了,每當馴獸師敲鑼,猴子自然而然地就知道要站立敬禮,因為這個動作是當前環境下獲得收益最大的動作,其他動作就不會有食物,甚至還要被鞭子抽打。

強化學習的靈感來源於心理學裡的

比如AlphaGo下圍棋

一切學習都是透過條件作用,在刺激和反應之間建立直接聯結的過程。

強化在刺激一反應之間的建立過程中起著重要的作用。在刺激一反應聯結中,個體學到的是習慣,而習慣是反覆練習與強化的結果。

習慣一旦形成,只要原來的或類似的刺激情境出現,習得的習慣性反應就會自動出現。

那基於上述理論,強化學習就是訓練物件如何在環境給予的獎勵或懲罰的刺激下,逐步形成對刺激的預期,產生能獲得最大利益的習慣性行為。

行為主義理論

2. 強化學習的主要特點

強化學習需要訓練物件不停地和環境進行互動,透過試錯的方式去總結出每一步的最佳行為決策,整個過程沒有任何的指導,只有冰冷的反饋。所有的學習基於環境反饋,訓練物件去調整自己的行為決策。

2. 強化學習的主要特點

強化學習訓練過程中,訓練物件的“試錯”行為獲得環境的反饋,有時候可能需要等到整個訓練結束以後才會得到一個反饋,比如Game Over或者是Win。當然這種情況,我們在訓練時候一般都是進行拆解的,儘量將反饋分解到每一步。

1)試錯學習

強化學習的一系列環境狀態的變化和環境反饋等都是和時間強掛鉤,整個強化學習的訓練過程是一個隨著時間變化,而狀態&反饋也在不停變化的,所以時間是強化學習的一個重要因素。

2)延遲反饋

為什麼單獨把該特點提出來,也是為了和監督學習&半監督學習進行區分。在監督學習&半監督學習中,每條訓練資料都是獨立的,相互之間沒有任何關聯。但是強化學習中並不是這樣,當前狀態以及採取的行動,將會影響下一步接收到的狀態。資料與資料之間存在一定的關聯性。

02 詳解強化學習

下面我們對強化學習進行詳細的介紹:

3)時間是強化學習的一個重要因素

本文使用一個小遊戲叫做Pacman(吃豆人)的遊戲介紹強化學習(Reinforcement Learning)的基本組成部分。遊戲目標很簡單,就是Agent要把螢幕裡面所有的豆子全部吃完,同時又不能被幽靈碰到,被幽靈碰到則遊戲結束,幽靈也是在不停移動的。

Agent每走一步、每吃一個豆子或者被幽靈碰到,螢幕左上方這分數都會發生變化,圖例中當前分數是435分。這款小遊戲,也是加州大學伯克利分校在上強化學習這門課程時使用的cousrwork(http://ai。berkeley。edu/project_overview。html),後續文章也會使用這個小遊戲進行強化學習實戰講解。

4)當前的行為影響後續接收到的資料

強化學習訓練的主體就是Agent,有時候翻譯為“代理”,這裡統稱為“智慧體”。Pacman中就是這個張開大嘴的黃色扇形移動體。

1. 基本組成部分

整個遊戲的大背景就是環境;Pacman中Agent、Ghost、豆子以及裡面各個隔離板塊組成了整個環境。

1. 基本組成部分

當前 Environment和Agent所處的狀態,因為Ghost一直在移動,豆子數目也在不停變化,Agent的位置也在不停變化,所以整個State處於變化中;這裡特別強調一點,State包含了Agent和Environment的狀態。

1)Agent(智慧體)

基於當前的State,Agent可以採取哪些action,比如向左or右,向上or下;Action是和State強掛鉤的,比如上圖中很多位置都是有隔板的,很明顯Agent在此State下是不能往左或者往右的,只能上下。

2)Environment(環境)

Agent在當前State下,採取了某個特定的action後,會獲得環境的一定反饋就是Reward。這裡面用Reward進行統稱,雖然Reward翻譯成中文是“獎勵”的意思,但其實強化學習中Reward只是代表環境給予的“反饋”,可能是獎勵也可能是懲罰。比如Pacman遊戲中,Agent碰見了Ghost那環境給予的就是懲罰。

以上是強化學習的五個基本組成部分。

3)State(狀態)

下面我們需要介紹一下強化學習的訓練過程。整個訓練過程都基於一個前提,我們認為整個過程都是符合馬爾可夫決策過程的。

4)Action(行動)

Markov是一個俄國的數學家,為了紀念他在馬爾可夫鏈所做的研究,所以以他命名了“Markov Decision Process”,以下用MDP代替。

MDP核心思想就是下一步的State只和當前的狀態State以及當前狀態將要採取的Action有關,只回溯一步。比如上圖State3只和State2以及Action2有關,和State1以及Action1無關。我們已知當前的State和將要採取的Action,就可以推出下一步的State是什麼,而不需要繼續回溯上上步的State以及Action是什麼,再結合當前的(State,Action)才能得出下一步State。

實際應用中基本場景都是馬爾可夫決策過程,比如AlphaGo下圍棋,當前棋面是什麼,當前棋子準備落在哪裡,我們就可以清晰地知道下一步的棋面是什麼了。

為什麼我們要先定義好整個訓練過程符合MDP了,因為只有符合MDP,我們才方便根據當前的State,以及要採取的Action,推理出下一步的State。方便在訓練過程中清晰地推理出每一步的State變更,如果在訓練過程中我們連每一步的State變化都推理不出,那麼也無從訓練。

接下來我們使用強化學習來指導Agent如何行動了。

5)Reward(獎勵)

我們選擇什麼樣的演算法來指導Agent行動了?本身強化學習演算法有很多種,關於強化學習演算法如何分類,有很多種分類方式,這裡我選擇三種比較常見的分類方式。

2. 強化學習訓練過程

2. 強化學習訓練過程

基於每個State下可以採取的所有Action,這些Action對應的Value, 來選擇當前State如何行動。強調一點這裡面的Value並不是從當前State進入下一個Stae,環境給的Reward,Reward是Value組成的一部分。

但我們實際訓練時既要關注當前的收益,也要關注長遠的收益,所以這裡面的Value是透過一個計算公式得出來的,而不僅僅是狀態變更環境立即反饋的Reward。因為Value的計算較為複雜,通常使用貝爾曼方程,在此不再細述。

1)馬爾可夫決策過程(Markov Decision Process)

:簡單來說,選擇當前State下對應Value最大的Action。選擇能夠帶來最大Value加成的Action。比如下圖StateA狀態下,可以採取的Action有3個,但是Action2帶來的Value最大,所以最終Agent進入StateA狀態時,就會選擇Action2。

3. 強化學習演算法歸類

這裡面的Value值,在強化學習訓練開始時都是不知道的,我們一般都是設定為0。然後讓Agent不斷去嘗試各類Action,不斷與環境互動,不斷獲得Reward,然後根據我們計算Value的公式,不停地去更新Value,最終在訓練N多輪以後,Value值會趨於一個穩定的數字,才能得出具體的State下,採取特定Action,對應的Value是多少。

代表性演算法:Q-Learning、SARSA(State-

3. 強化學習演算法歸類

ction-

1)Value Based

eward-

說明:

tate-

如何選擇Action

ction

強調一點

A

Action空間是離散的,比如Pacman裡面的動作空間基本是“上下左右”,但有些Agent的動作空間是一個連續的過程,比如機械臂的控制,整個運動是連續的。如果強行要將連續的Action拆解為離散的也是可以的,但是得到的維度太大,往往是指數級的,不適宜訓練。

同時在Value-Based場景中,最終學習完每個State對應的最佳Action基本固定。但有些場景即使最終學習完每個State對應的最佳Action也是隨機的,比如剪刀石頭布遊戲,最佳策略就是各1/3的機率出剪刀/石頭/布。

R

Policy Based策略就是對Value Based的一個補充

S

基於每個State可以採取的Action策略,針對Action策略進行建模,學習出具體State下可以採取的Action對應的機率,然後根據機率來選擇Action。如何利用Reward去計算每個Action對應的機率裡面涉及到大量的求導計算,對具體過程感興趣的可以參考這篇文章:https://zhuanlan。zhihu。com/p/54825295

A

基於得出的策略函式,輸入State得到Action。

Policy Gradients

適用場景:

Action空間是連續的&每個State對應的最佳Action並不一定是固定的,基本上Policy Based適用場景是對Value Based適用場景的補充。對於Action空間是連續的,我們通常會先假設動作空間符合高斯分佈,然後再進行下一步的計算。

2)Policy Based

AC分類就是將Value-Based和Policy-Based結合在一起,裡面的演算法結合了2。3。1和2。3。2。

上述就是三大類常見的強化學習演算法,而在Pacman這個遊戲中,我們就可以適用Value-Based演算法來訓練。因為每個State下最終對應的最優Action是比較固定的,同時Reward函式也容易設定。

說明:

上述三種分類是常見的分類方法,有時候我們還會透過其他角度進行分類,以下分類方法和上述的分類存在一定的重疊:

如何選擇Action:

指的是,agent已經學習出整個環境是如何執行的,當agent已知任何狀態下執行任何動作獲得的回報和到達的下一個狀態都可以透過模型得出時,此時總的問題就變成了一個動態規劃的問題,直接利用貪心演算法即可了。這種採取對環境進行建模的強化學習方法就是Model-based方法。

代表性演算法:

指的是,有時候並不需要對環境進行建模也能找到最優的策略。雖然我們無法知道確切的環境回報,但我們可以對它進行估計。Q-learning中的Q(s,a)就是對在狀態s下,執行動作a後獲得的未來收益總和進行的估計,經過很多輪訓練後,Q(s,a)的估計值會越來越準,這時候同樣利用貪心演算法來決定agent在某個具體狀態下采取什麼行動。

如何判斷該強化學習演算法是Model-based or Model-free, 我們是否在agent在狀態s下執行它的動作a之前,就已經可以準確對下一步的狀態和回報做出預測,如果可以,那麼就是Model-based,如果不能,即為Model-free。

適用場景:

3裡面介紹了各種強化學習演算法:Value-Based、Policy-Based、Actor-Critic。但實際我們在進行強化學習訓練過程中,會遇到一個“EE”問題。這裡的Double E不是“Electronic Engineering”,而是“Explore & Exploit”,“探索&利用”。

比如在Value-Based中,如下圖StateA的狀態下,最開始Action1&2&3對應的Value都是0,因為訓練前我們根本不知道,初始值均為0。如果第一次隨機選擇了Action1,這時候StateA轉化為了StateB,得到了Value=2,系統記錄在StateA下選擇Action1對應的Value=2。

如果下一次Agent又一次回到了StateA,此時如果我們選擇可以返回最大Value的action,那麼一定還是選擇Action1。因為此時StateA下Action2&3對應的Value仍然為0。Agent根本沒有嘗試過Action2&3會帶來怎樣的Value。

所以在強化學習訓練的時候,一開始會讓Agent更偏向於探索Explore,並不是哪一個Action帶來的Value最大就執行該Action,選擇Action時具有一定的隨機性,目的是為了覆蓋更多的Action,嘗試每一種可能性。

等訓練很多輪以後各種State下的各種Action基本嘗試完以後,我們這時候會大幅降低探索的比例,儘量讓Agent更偏向於利用Exploit,哪一個Action返回的Value最大,就選擇哪一個Action。

Explore&Exploit是一個在機器學習領域經常遇到的問題,並不僅僅只是強化學習中會遇到,在推薦系統中也會遇到,比如使用者對某個商品 or 內容感興趣,系統是否應該一直為使用者推送,是不是也要適當搭配隨機一些其他商品 or 內容。

3)Actor-Critic

我們實際在應用強化學習去訓練時,經常會遇到各類問題。雖然強化學習很強大,但是有時候很多問題很棘手無從下手。

4)其他分類

如何去設定Reward函式,如何將環境的反饋量化是一個非常棘手的問題。比如在AlphaGo裡面,如何去衡量每一步棋下的“好”與“壞”,並且最終量化,這是一個非常棘手的問題。有些場景下的Reward函式是很難設定的。

根據是否學習出環境Model分類:Model-based

強化學習需要對每一個State下的每一個Action都要儘量探索到,然後進行學習。實際應用時,部分場景這是一個十分龐大的數字,對於訓練時長,算力開銷是十分龐大的。很多時候使用其他的演算法也會獲得同樣的效果,而訓練時長,算力開銷節約很多。強化學習的上限很高,但如果訓練不到位,很多時候下限特別低。

Model-free

部分場景中Agent採取的行動可能是當前區域性最優,而不是全域性最優。網上經常有人截圖爆出打遊戲碰到了王者榮耀AI,明明此時推塔或者推水晶是最合理的行為,但是AI卻去打小兵,因為AI採取的是一個區域性最優的行為。再合理的Reward函式設定都可能陷入區域性最優中。

03 強化學習的實際應用

雖然強化學習目前還有各種各樣的棘手問題,但目前工業界也開始嘗試應用強化學習到實際場景中了,除了AlphaGo還有哪些應用了:

4. EE(Explore & Exploit)

目前國內百度在自動駕駛領域中就使用了一定的強化學習演算法,但是因為強化學習需要和環境互動試錯,現實世界中這個成本太高,所以真實訓練時都需要加入安全員進行干預,及時糾正Agent採取的錯誤行為。

4. EE(Explore & Exploit)

遊戲可以說是目前強化學習應用最廣闊的,目前市場上的一些MOBA遊戲基本都有了強化學習版的AI在裡面,最出名的就是王者榮耀AI。遊戲環境下可以隨便互動,隨便試錯,沒有任何真實成本。同時Reward也相對比較容易設定,存在明顯的獎勵機制。

目前一些網際網路大廠也在推薦系統中嘗試加入強化學習來進行推薦,比如百度&美團。使用強化學習去提高推薦結果的多樣性,和傳統的協同過濾&CTR預估模型等進行互補。

總之強化學習是目前機器學習領域的一個十分熱門的研究方向,應用前景非常廣闊。下一篇會介紹如何使用Q-Learning演算法來訓練Pacman吃豆子的Python實戰講解,歡迎大家繼續關注。

本文由 @King James 原創釋出於人人都是產品經理。未經許可,禁止轉載。

題圖來自 Unsplash,基於 CC0 協議