【强化学习】MOVE37-Introduction(导论)/马尔科夫链/马尔科夫决策过程
寫在前面的話:從今日起,我會(huì)邊跟著硅谷大牛Siraj的MOVE 37系列課程學(xué)習(xí)Reinforcement Learning(強(qiáng)化學(xué)習(xí)算法),邊更新這個(gè)系列。課程包含視頻和文字,課堂筆記會(huì)按視頻為單位進(jìn)行整理。
課程表地址:https://github.com/llSourcell/Move_37_Syllabus
帶字幕課程視頻地址:https://www.bilibili.com/video/av31518766
?
本課作為導(dǎo)論,大致普及了一下機(jī)器學(xué)習(xí)和強(qiáng)化學(xué)習(xí)的概念和用途。其次,捎帶介紹了一下最常見的監(jiān)督學(xué)習(xí)和非監(jiān)督學(xué)習(xí)。對(duì)機(jī)器學(xué)習(xí)稍有了解的同學(xué)們,對(duì)這兩個(gè)概念應(yīng)該不陌生。如果對(duì)此毫無概念的同學(xué)們,可以看我下面的簡單說明。
?
機(jī)器學(xué)習(xí)(Machine Learning)
首先,我們要明白,所謂的機(jī)器學(xué)習(xí)就是試圖找出輸入輸出量之間的一個(gè)固定關(guān)系,以期對(duì)以后所有的輸入量都能相應(yīng)地去預(yù)測(cè)一個(gè)輸出量。用數(shù)學(xué)語言來說,就是從一堆已知的x和y之間找出映射f。打個(gè)比方,如果我們發(fā)現(xiàn)每次穿裙子(x)就一定會(huì)下雨(y),那么這個(gè)因果關(guān)系就是f;由此,我們就可以根據(jù)f這個(gè)關(guān)系,也就是某天穿沒穿裙子,來推斷會(huì)不會(huì)下雨。
?
監(jiān)督學(xué)習(xí) (Supervised Learning)
這里舉一個(gè)水果分類的例子。這里機(jī)器學(xué)習(xí)算法所要完成的工作,就是要得到水果和水果名稱之間的關(guān)系。
?
?
第一步是訓(xùn)練算法,第二步是用測(cè)試數(shù)據(jù)來檢驗(yàn)算法的完善度。圖中可以看到,這里訓(xùn)練算法時(shí)輸入的數(shù)據(jù)是預(yù)先分過類的(即打過標(biāo)簽的),所以事先需要人工參與,把未分類的原始數(shù)據(jù)進(jìn)行分類。此即是“監(jiān)督”二字的要義所在,需要人工“監(jiān)督”才能完成算法的訓(xùn)練。
?
非監(jiān)督學(xué)習(xí) (Unsupervised Learning)
同樣是以水果舉例。
?
?
同樣分為兩步,區(qū)別在于,這里輸入的數(shù)據(jù)是未分類過的(也未打標(biāo)簽)。機(jī)器學(xué)習(xí)算法需要自己完成分類的工作,并從中找出數(shù)據(jù)中的模式(往往是我們無法解釋和說明的)。非監(jiān)督學(xué)習(xí)通常可以用于聚類——識(shí)別各個(gè)類別之下數(shù)據(jù)的相似性并由此分類,也可以用于異常識(shí)別——例如排除數(shù)據(jù)集中的異常值(視頻中的例子是欺詐性交易)。
?
?
這里,一句話總結(jié):監(jiān)督學(xué)習(xí)適用于事后對(duì)數(shù)據(jù)闡釋性分析和對(duì)未來的預(yù)測(cè),非監(jiān)督學(xué)習(xí)則更適合發(fā)現(xiàn)數(shù)據(jù)的內(nèi)在規(guī)律和結(jié)構(gòu)。
然而,實(shí)際情況中的影響因素往往更復(fù)雜,要解決的問題也往往不止是確定既有的固定關(guān)系。有時(shí),需要我們?cè)跊]有訓(xùn)練數(shù)據(jù)的情況根據(jù)實(shí)際情況去不斷優(yōu)化策略(有點(diǎn)類似于我們?nèi)祟惖氖炷苌?#xff09;。因此,這里引進(jìn)了另一個(gè)概念:“強(qiáng)化學(xué)習(xí)”。
?
強(qiáng)化學(xué)習(xí) (Reinforcement Learning)
這里以選擇最優(yōu)運(yùn)輸路線為例。
?
?
可知影響運(yùn)輸結(jié)果的因素有很多,包括天氣、道路擁堵、交通工具、食品保存等等。同時(shí),我們也沒有先驗(yàn)數(shù)據(jù)來訓(xùn)練算法和檢驗(yàn)算法的優(yōu)越性。那么這里的強(qiáng)化學(xué)習(xí)算法,就引入了一個(gè)新的維度:時(shí)間,來幫助我們?cè)趯?shí)際情況中通過不斷迭代來優(yōu)化算法。
?
?
強(qiáng)化學(xué)習(xí)算法可以說是介于監(jiān)督算法和非監(jiān)督算法之間。它既不像非監(jiān)督算法一樣完全不使用標(biāo)簽,也不像監(jiān)督算法一樣預(yù)先打好標(biāo)簽,這里的標(biāo)簽是延時(shí)(delayed)打上的。就像圖中所標(biāo)出的那樣,每個(gè)環(huán)節(jié)的標(biāo)簽T(也可以稱為反饋)由下一個(gè)環(huán)節(jié)來標(biāo)記。
我個(gè)人的理解是,所謂的強(qiáng)化學(xué)習(xí)算法的核心,就是一個(gè)環(huán)環(huán)相扣的負(fù)反饋系統(tǒng)。學(xué)過生物的同學(xué)大概能理解的意思,生物內(nèi)部環(huán)境的穩(wěn)態(tài)就是通過負(fù)反饋機(jī)制來實(shí)現(xiàn)的。
?
?
而當(dāng)模式識(shí)別網(wǎng)絡(luò)(神經(jīng)網(wǎng)絡(luò))和基于強(qiáng)化學(xué)習(xí)框架的實(shí)時(shí)環(huán)境結(jié)合在一起,就是所謂深度強(qiáng)化學(xué)習(xí)。我的理解是,和非監(jiān)督學(xué)習(xí)算法類似,前者相當(dāng)于Step1的模式識(shí)別部分,而后者相當(dāng)于Step2——不斷提供反饋來優(yōu)化算法。
至于這一算法有多牛逼嘛,看阿爾法狗就知道了。
-----------------------------------------------------?
介紹完這些基本概念后,下面就進(jìn)入正題了。有一些數(shù)學(xué)知識(shí)必須了解。
?
馬爾科夫鏈 (Markov Chain)
對(duì)于強(qiáng)化學(xué)習(xí)來說,馬爾科夫鏈?zhǔn)莻€(gè)很重要的概念。正是基于這個(gè)概念,才發(fā)展出算法和外界之間溝通和反饋的方式。
馬爾科夫鏈究竟是什么呢?簡單來說,就是用來描述一連串相互關(guān)聯(lián)的事件(狀態(tài))的一種抽象模型。其中每個(gè)事件(狀態(tài))已經(jīng)發(fā)生的前提下,接著會(huì)發(fā)生哪個(gè)事件(切換到哪個(gè)狀態(tài))的概率分布是已知的。
?
?
好吧,如果概率統(tǒng)計(jì)里沒學(xué)過這一課的同學(xué),估計(jì)此時(shí)已經(jīng)百分百暈了。拿現(xiàn)實(shí)中的例子來舉例,就比方說,天氣預(yù)報(bào)吧。首先我們假定只有兩種天氣:晴天和雨天,并且前一天下雨后第二天放晴的概率是0.2,繼續(xù)下雨的概率是0.8;前一天晴天第二天下雨的概率是0.4,繼續(xù)放晴是0.6。那么,根據(jù)今天的天氣,我們是不是能把未來七天每天放晴和下雨的概率都算出來了?OK,這未來七天的天氣狀態(tài),就是一條簡單的馬爾科夫鏈。
必須注意兩點(diǎn),一、我們計(jì)算出來的只是概率分布,依舊無法確定給出每天的天氣;二、每天的天氣概率情況只取決于前一天的天氣。
現(xiàn)在可以結(jié)合一下視頻里的示意圖來看了,這里的轉(zhuǎn)移矩陣(Transition Matrix)給出了狀態(tài)間互相轉(zhuǎn)移的概率分布,右下角則展示了每多走一步后我們來到A、B、C三個(gè)節(jié)點(diǎn)的可能性。
?
馬爾科夫決策過程(Markov Decision Process)
馬爾科夫決策過程是馬爾科夫鏈的擴(kuò)展,在原基礎(chǔ)上加入了行動(dòng)(Action)和獎(jiǎng)勵(lì)/反饋(Reward)。相應(yīng)的轉(zhuǎn)移矩陣也產(chǎn)生了變化,下一個(gè)狀態(tài)的概率分布 不僅取決于上一個(gè)狀態(tài)還取決于采取的行動(dòng)。而從環(huán)境得到的反饋則告訴我們這一步到底是好(正向反饋)還是壞(負(fù)向反饋)——所謂趨利避害,下次就可以避免在同一狀態(tài)下采取同樣的行動(dòng)。那么最終在不斷最大化獎(jiǎng)勵(lì)的過程中,我們就獲取了最優(yōu)策略。
?
?
關(guān)于馬爾科夫決策過程的具體闡述
(摘自文章:一文讀懂AlphaGo背后的強(qiáng)化學(xué)習(xí):它的背景知識(shí)與貝爾曼方程的原理)
假定我們知道狀態(tài) s,如果未來的狀態(tài)條件獨(dú)立于過去的狀態(tài),那么狀態(tài) s 就具有馬爾科夫性質(zhì)。這意味著s描述了所有過去的狀態(tài)直到現(xiàn)在的狀態(tài)。如果這很難理解,那我們就用一個(gè)例子來解釋,讓這個(gè)問題顯得更簡單一點(diǎn)。假設(shè)一個(gè)球飛過空中,如果它的狀態(tài)是由它的位置和速度決定,并足以描述它當(dāng)前的位置和接下來的位置(不考慮物理模型和外界影響)。因此,這一狀態(tài)就具備馬爾科夫性質(zhì)。但是,如果我們只知道這個(gè)球的位置不知道它的速度,它的狀態(tài)就不再是馬爾科夫。因?yàn)楝F(xiàn)在的狀態(tài)并不是所有以前狀態(tài)的歸納,我們需要以前的時(shí)間點(diǎn)所得到的信息去構(gòu)建合適的球的模型。
強(qiáng)化學(xué)習(xí)通常可以建模為一個(gè)馬爾科夫決策過程,即MDP(Markov Decision Process)。MDP是一個(gè)有向圖,它有節(jié)點(diǎn)和邊的狀態(tài),可以描述馬爾科夫狀態(tài)之間的轉(zhuǎn)變,下面是一個(gè)簡單的例子:
一個(gè)簡單的馬爾科夫決策過程
這個(gè)MDP展示了學(xué)習(xí)馬爾科夫決策的過程。在最開始你在一個(gè)“不理解”的狀態(tài)中,接下來,你有兩個(gè)可能的動(dòng)作,學(xué)習(xí)或者不學(xué)習(xí)。如果你選擇不學(xué)習(xí),則有100%的可能性返回到不理解的狀態(tài)里。但是,如果你選擇學(xué)習(xí),只有20%的可能性讓你回到最開始的地方,即80%的可能性變成理解的狀態(tài)。
實(shí)際上,我確定轉(zhuǎn)換到理解狀態(tài)的可能性超過80%,MDP的核心其實(shí)很簡單,在一個(gè)狀態(tài)你可以采取一系列的動(dòng)作,在你采取行動(dòng)之后,這里有一些你能轉(zhuǎn)化去什么狀態(tài)的分布。在采取不學(xué)習(xí)動(dòng)作的例子中,這個(gè)轉(zhuǎn)化也能被很好的確定。
強(qiáng)化學(xué)習(xí)的目標(biāo)是去學(xué)習(xí)怎么花更多的時(shí)間在更有價(jià)值的狀態(tài)上,為了有一個(gè)更有價(jià)值的狀態(tài),我們需要MDP提供更多的信息。
你不需要一個(gè)MDP來告訴自己餓了要吃飯,但是強(qiáng)化學(xué)習(xí)的機(jī)制是需要它的
這個(gè)MDP增加了獎(jiǎng)勵(lì)機(jī)制,你每轉(zhuǎn)化到一個(gè)狀態(tài),就會(huì)獲得一次獎(jiǎng)勵(lì)。在這個(gè)例子中,由于接下來狀態(tài)是饑餓,你會(huì)得到一個(gè)負(fù)面的獎(jiǎng)勵(lì),如果接下來狀態(tài)是餓死,那會(huì)得到一個(gè)更負(fù)面的獎(jiǎng)勵(lì)。如果你吃飽了,就會(huì)獲得一個(gè)正面的獎(jiǎng)勵(lì)。現(xiàn)在我們的MDP已經(jīng)完全成型,我們可以開始思考如何采取行動(dòng)去獲取能獲得的最高獎(jiǎng)勵(lì)。
由于這個(gè)MDP是十分簡單的,我們很容易發(fā)現(xiàn)待在一個(gè)更高獎(jiǎng)勵(lì)的區(qū)域的方式,即當(dāng)我們饑餓的時(shí)候就吃。在這個(gè)模型中,當(dāng)我們處于吃飽狀態(tài)的時(shí)候沒有太多其它的選擇,但是我們將會(huì)不可避免的再次饑餓,然后立馬選擇進(jìn)食。強(qiáng)化學(xué)習(xí)感興趣的問題其實(shí)具有更大更復(fù)雜的馬爾科夫決策過程,并且在我們開始實(shí)際探索前,我們通常不知道這些策略。
?
OK,以上就是導(dǎo)論課的所有內(nèi)容。
有理解不當(dāng)或闡述的錯(cuò)誤的地方,還望大牛們不吝指正。
感謝閱讀~
轉(zhuǎn)載于:https://www.cnblogs.com/mandylu2018/p/9694533.html
總結(jié)
以上是生活随笔為你收集整理的【强化学习】MOVE37-Introduction(导论)/马尔科夫链/马尔科夫决策过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring基础系列-参数校验
- 下一篇: OpenSUSE下支持托盘的邮件客户端S