機器學習 | 強化學習,解決決策問題的行家(上)
本文筆者將與大家講述:強化學習的基本原理、兩個基本類型,以及基于這兩個類型下的相關算法。
一般地,我們認為,機器學習領域最基本的三個方向就是“監督學習”“無監督學習”和“強化學習”,而深度學習、半監督學習、元學習都是由它們在某些方面迭代衍生出來的優化后的模型。
經過前兩篇的筆記,我們已經對監督學習和無監督學習有了一個基本的了解,這次我們就來了解一下:神秘而強大的強化學習(Reinforcement Learning)是什么?
與一些新興的算法流派相比,強化學習算是有著悠久的歷史,早在幾十年前就有相關的算法誕生。
我們都知道了,監督學習基于給定的數據和相應的標注,能夠完成一系列的分類、回歸問題;無監督學習基于無標注的數據,能夠以比較低的人力成本解決聚類問題。而強化學習,則主要解決決策問題(Decision-Making),尤其是對于連續決策問題很是拿手。
這個圖簡單地展示了強化學習的基本模型,里面的五個單詞也就是強化學習的幾個基本元素,他們分別是:
- 學習主體(Agent)——強化學習體系中的“學習者”。
- 環境(Environment)——主體的行為在環境中產生、環境對主體產生影響。
- 狀態(State)——環境反饋給主體的狀態的集合。
- 獎賞(Reward)——環境對主體行為的反饋的集合。
- 行為(Action)——主體在環境中的行動的集合。
怎么去理解這幾個詞呢,又到了舉栗子時間。
在上圖的情境里,小陳就是我們的學習主體,他的“行為”是一個集合,這個集合里有兩個元素“運動”和“偷懶”,運動將獲得表揚,偷懶將遭受批評。
小本是小陳行為的監督者和見證人,在這個情境里小陳的“狀態”由小本說了算,所以小本即是“環境”。
小本對小陳的“獎賞”也是一個集合,集合中也是兩個元素“表揚”和“批評”,而這兩個元素對應著小本對小陳的評價——“狀態”,胖了就批評,瘦了就表揚。
那小陳如何對小本的評價做出反應呢?
在文章的開頭我們就提到了,強化學習主要解決決策問題,這里的決策比較簡單,只有“運動”和“偷懶”,而小本對小陳的獎賞則決定了小陳會做出什么決策。
在一個強化學習的系統里,一般會根據最終目的來制定獎賞的機制,比如:在上面的系統里,我們希望最終的結果是小陳能夠減肥,那么我們就會給小本的“獎賞”賦值,表揚是+1,批評是-1,而系統的整體目標則是獲得更高的分數。這樣一來,小陳就會在每一次的獎賞中明白,“運動”是更好的選擇,也就慢慢地減下了肥~
在上面的栗子里,我們了解了強化學習的基本原理,接下來我們一起簡單地了解一下它的兩個基本類型和基于這兩個類型下的相關算法:
- 基于模型的強化學習(Model-based RL)
- 無模型的強化學習(Model-free RL)
“Model-based 嘗試model這個環境,最終基于這個環境選擇最優的策略。 Model-free 則一直在每一步中去嘗試學習最優的策略,在多次迭代后就得到了整個環境最優的策略(e.g:Q-learning)?!?/p>
這段話引用自quora的一個回答,可能看起來還是不太容易理解,那么又到了栗子時間。
現在小曹要學習打乒乓球,他花了大量時間觀看乒乓球教學視頻,通過看書研究了乒乓球拍的各種不同的握持發力方式,在網上學習了各種類型的發球方式,還了解了空氣動力學、人體解刨學等知識,力求將每一個球打得完。然后終于有一天小曹叫上朋友走到了乒乓球桌前,發現自己一個球也接不到。
這種學習方式就是Model-based,核心是:通過學習先驗知識對現有的環境有了一個大概的了解,能夠對未來的狀態和回報做出預測。
但顯然,小曹學習乒乓球這個過程,更好的方法是直接拿其球拍進行實踐,也就是通過Model-free的方式來學習乒乓球。
那什么時候該使用model-based呢?
現在小曹終于通過model-free的方式學會了乒乓球,他發現這個方法真好,所以小曹在去打球的路上決定使用model-free的方法來找到去乒乓球室的路。
半天過去了,小曹在某不知名小巷里認識到了model-free不是萬能的,于是他掏出了手機打開了高達導航,找到了他現在的位置和乒乓球室所在的位置,并規劃好了路線,model-based最終幫助小曹找到了正確的路線。
在z我們講到了Model-free和Model-based,這其實只是強化學習方法中針對學習主題理不理解環境所做的一種分類。而實際上強化學習的應用環境更加復雜,這一種分類方法可能不足以幫助我們對所有的情況進行判斷,我們還需要更加深入地了解強化學習的更多分類和算法以及相關栗子。
按照不同的判斷標準,強化學習的方法可以按如下幾種方式來分類:
- Model-free & Model-based:基于模型和 不基于模型
- Policy-based & Value-based:基于策略(概率) 和 基于價值
- Monte-carlo update & Temporal-Difference update:回合更新和 單步更新
- On-Policy & off-Policy:在線學習和 離線學習
第一個在上面已經說過了,我們就從第二個,Policy-based & Value-based開始。
好了,又到了栗子時間。
我們把上次小陳跑步的系統里的一部分拿出來,上圖就是說小陳正在使用Policy-based的方式選擇策略,看起來很好理解,也就是根據做出某項行為的概率來選擇下一步行為。
那么,按照一樣的邏輯,基于價值也就很好理解啦:
這就是一個最簡單的value-based的決策模型,小陳會毫不猶豫地根據每項行為的價值來決定選擇怎么做,不帶一點主觀色彩~
除了判斷方式以外,兩種方法的區別,以及相應的優劣勢是什么呢?
就讓我們用它們所對應的兩種標志性的算法:大名鼎鼎的Q-learning和Policy Gradients
來做講解吧~
先從有名的Q-learning說起:它是value-based模型下的一個經典算法,上面已經有提到,value-based的核心思想是根絕每項行為的價值來選擇下一步行為,那么Q-learning也是如此,讓我們再次祭出小陳作栗子。
可以看到,小陳在這個圖里有兩個選擇,跑步或是偷懶。我們和小陳在之前的栗子中都已經知道了,小陳如果選擇偷懶,就會受到來自小本的批評,反之,則受到表揚。
在Q-learning的模型中,這個情境變成了“連續的”。小陳選擇一個行為之后將獲得一個行為對應的狀態,然后在新的狀態下繼續做選擇。
如圖所示,在S1時,小陳通過之前積累的經驗知道了跑步將會獲得小本的表揚,偷懶則會受到批評,所以小陳選擇了跑步(a1),小陳的狀態也就從S1變化為了S2。
那么每一步的行為具體是怎么選取呢?小陳是如何判斷每一個選擇的價值的呢?
這里就需要引入Q-table,也可以叫做Q表,Q-table的內容實際上就是每一個狀態和選擇對應的值,也就是在每一個狀態下對不同行為的反饋期望。
小陳通過Q-table就可以知道:在S2的時候,選擇a1,也就是跑步,將獲得更大的收益,這是不需要通過實際行動就可以得知的。
是不是覺得這個表述很熟悉?
沒錯,Q-learning除了是value-based的代表性算法以外,它也同樣屬于model-based下的一種算法,小陳通過先驗知識得知了他該如何做出選擇,這是model-free做不到的。
總結一下,Q-learning的步驟如下:
我們已經了解了前面四個步驟,但我們還不知道最后一步,Q表中的值是如何更新的,現在讓我們看看Q-learning 的核心方程(這是一個貝爾曼方程,也叫動態規劃方程)。
Q(s,a)代表的是算法對某一個狀態的行為的估計值,比如Q(S1,a1)就是1。
后面括號里的東西代表我們估計出來的值與實際值之間的誤差,R(s,a)指的是某個狀態下做出某個行為得到的獎勵(注意這個獎勵是實際執行后從環境得到的一個反饋,而Q(s,a)只是通過想象得到的一個值,一個是實際值,一個是想象值),γ是一個衰減系數,γmaxQ’(s’,a’)就是未來某個狀態行為獎勵的衰減值。
括號外的α指的是學習率,也就是這次的誤差有多少要被學習,它是一個小于1的數。
其實Q-learning本質就是一種動作值函數的算法,輸入“狀態”和“行為”,得到一個“獎勵”,也就是一個具體的值。agent根據最大的值對應的行為做出選擇,而選擇得到的結果又會反向傳遞,對Q-table的值進行更新。
希望大家看到這里還沒有進入懵逼狀態,因為我們接下來就要了解Policy Gradients是怎么一回事了。不過別擔心,理解了Q-learning再來看Policy Gradients就很簡單啦!
在上面的學習中,我們知道了value-based方法是計算不同動作的值來判斷更好的選擇,那么現在讓我們來看看如果情境變成了這樣:
小陳在操場跑步,并且小陳可以選擇360°任意一個方向作為前進的方向。
操場上可能撿到錢(矩形),也可能踩到狗屎(三角形),小陳該如何針對這個情況制訂合適的行動方案呢?
相較于value-based中的栗子,小陳的選擇從有限的(跑步和偷懶),變成了無限的(任意一個方向)。在這個時候,value-based就變得無力了,Q-learning可以通過動作值函數計算出某個狀態下某個動作的期望值,但它無法在無窮多個選擇中求解。
而policy-based方法也就在這種情況下應運而生啦!
Policy-based不同于value-based先得出值再選擇動作,它根據對狀態的觀測直接給出一個具體的策略。
與value-based的相比,policy-based主要有三個優點:
- 更容易收斂
- 可以在高維&連續的動作空間工作
- 可以學習出帶有隨機性的策略
Policy Gradients(策略梯度算法)是Policy-based中的一類經典算法,其核心思想也包含在了它的名字中——基于策略來做梯度下降。
什么叫梯度下降(Gradient descent)呢?
這是一個簡單的一元二次方程y=x2+1,途中的兩個梯度方向實際上就是在這兩個點時y=x2+1的導數方向。而梯度下降法是一個求解最小值的方法,比如在上圖中,梯度方向一個向左上,一個向右上。我們可以確定這兩個點中間一定有更小的值,而不斷地對這個區間內的函數求導,最終就可以將我們的結果收斂到最小值。
那么,Policy Gradients是如何做梯度下降的呢?
再看回這張圖,假設小陳在一開始通過觀測得出的概率進行了這樣的行動,得到了錢,我們就給他一個相應的獎勵。而策略梯度算法的核心,就是將根據這個獎勵/懲罰進行一個反向傳遞,讓這個方向(得到獎勵的策略)在下一次被選中的概率提升。反之,則讓這個方向在下一次被選中的概率降低。
Policy Gradients的思想就是這樣,很簡單吧!
公式的推導和參數的更新如果感興趣的話可以在下面的參考資料中自行學習,這里再贅述可能反而會影響大家對它的理解,這一期的強化學習就到這里啦。下一次讓我們了解一下集成了兩種方法的Actor-critic算法和一些其他沒有提到的分類方式~
參考資料
作者:小曹,公眾號:小曹的AI學習筆記
本文由 @小曹 原創發布于人人都是產品經理。未經許可,禁止轉載
題圖來自Unsplash,基于CC0協議
“沒錯,Q-learning除了是value-based的代表性算法以外,它也同樣屬于model-based下的一種算法,小陳通過先驗知識得知了他該如何做出選擇,這是model-free做不到的?!?/p>
Q學習是免模型的