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