机器学习(二十八)——Monte-Carlo
動(dòng)態(tài)規(guī)劃(續(xù))
Value Iteration
vk+1(s)=maxa∈A(Ras+γ∑s′∈SPass′vk(s′))vk+1(s)=maxa∈A(Rsa+γ∑s′∈SPss′avk(s′))
state-value function迭代的復(fù)雜度是O(mn2)O(mn2),其中m為action的數(shù)量,n為state的數(shù)量。而action-value function迭代的復(fù)雜度是O(m2n2)O(m2n2)
動(dòng)態(tài)規(guī)劃的主要局限在于:
1.它依賴于概率模型。
2.計(jì)算復(fù)雜度太高,只適合規(guī)模中等(<1M的狀態(tài)數(shù))的情況。
DP的一些擴(kuò)展
異步動(dòng)態(tài)規(guī)劃(Asynchronous Dynamic Programming)
采樣更新(Sample Backups)
近似動(dòng)態(tài)規(guī)劃(Approximate Dynamic Programming)
參考
http://www.cppblog.com/Fox/archive/2008/05/07/Dynamic_programming.html
動(dòng)態(tài)規(guī)劃算法(Wikipedia中文翻譯版)
https://www.zhihu.com/question/23995189
什么是動(dòng)態(tài)規(guī)劃?動(dòng)態(tài)規(guī)劃的意義是什么?
http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741374.html
動(dòng)態(tài)規(guī)劃算法
http://www.cppblog.com/menjitianya/archive/2015/10/23/212084.html
動(dòng)態(tài)規(guī)劃
https://segmentfault.com/a/1190000004454832
動(dòng)態(tài)規(guī)劃
http://www.cnblogs.com/jmzz/archive/2011/06/26/2090702.html
動(dòng)態(tài)規(guī)劃
http://www.cnblogs.com/jmzz/archive/2011/07/01/2095158.html
DP之Warshall算法和Floyd算法
http://www.cnblogs.com/jmzz/archive/2011/07/02/2096050.html
DP之最優(yōu)二叉查找樹(shù)
http://www.cnblogs.com/jmzz/archive/2011/07/02/2096188.html
DP之矩陣連乘問(wèn)題
http://www.cnblogs.com/jmzz/archive/2011/07/05/2098630.html
DP之背包問(wèn)題+記憶遞歸
http://www.cs.upc.edu/~mmartin/Ag4-4x.pdf
Bellman equations and optimal policies
https://mp.weixin.qq.com/s/a1C1ezL59azNfdM3TFGaGw
遞推與儲(chǔ)存,是動(dòng)態(tài)規(guī)劃的關(guān)鍵
Monte-Carlo
概率算法
概率算法是和確定性算法相對(duì)的概念。概率算法的一個(gè)基本特征是對(duì)所求解問(wèn)題的同一實(shí)例用同一概率算法求解兩次,可能得到完全不同的效果。這兩次求解問(wèn)題所需的時(shí)間甚至所得到的結(jié)果,可能會(huì)有相當(dāng)大的差別。
常見(jiàn)的概率算法主要有:數(shù)值概率算法,舍伍德(Sherwood)算法,蒙特卡羅(Monte Carlo)算法和拉斯維加斯(Las Vegas)算法。
在《數(shù)學(xué)狂想曲(三)》中我們已經(jīng)提到了“統(tǒng)計(jì)模擬”的概念,這實(shí)際上就是數(shù)值概率算法的應(yīng)用,它主要利用了大數(shù)定律與強(qiáng)大數(shù)定律。
這里有兩個(gè)容易混淆的概念:Monte Carlo method和Monte Carlo algorithm。
Monte Carlo method這個(gè)概念的范圍非常廣,它實(shí)際上就是概率算法的別名。諸如用隨機(jī)投針計(jì)算圓周率之類的算法,都可以看作是Monte Carlo method。
Monte Carlo algorithm就要狹義的多了,詳情見(jiàn)下文。
舍伍德(Sherwood)算法
設(shè)A是一個(gè)確定算法,f(x)f(x)是解某個(gè)實(shí)例x的執(zhí)行時(shí)間,設(shè)n是一整數(shù),XnXn是大小為n的實(shí)例的集合.假定XnXn中每一個(gè)實(shí)例是等可能出現(xiàn)的,則算法A解XnXn中一個(gè)實(shí)例的平均執(zhí)行時(shí)間是:
f(x)ˉˉˉˉˉˉˉˉˉˉ=∑x∈Xnf(x)/nf(x)ˉ=∑x∈Xnf(x)/n
假如存在一個(gè)實(shí)例x0x0使得f(x0)?f(x)ˉˉˉˉˉˉˉˉˉˉf(x0)?f(x)ˉ,比如快速排序在最壞情況下的復(fù)雜度O(n)?O(nlogn)O(n)?O(nlog?n)。這時(shí)使用sherwood對(duì)原始算法進(jìn)行改進(jìn)是有價(jià)值的。
Sherwood算法通過(guò)增加一個(gè)較小的額外開(kāi)銷從而使得算法的復(fù)雜度與具體實(shí)例x無(wú)關(guān)。例如,在快速排序中,我們是以第一個(gè)元素為基準(zhǔn)開(kāi)始排序時(shí),為了避免這樣的情況,可以用舍伍德算法解決,也就是使第一個(gè)基準(zhǔn)元素是隨機(jī)的。
蒙特卡羅(Monte Carlo)算法
舉個(gè)例子,假如筐里有100個(gè)蘋(píng)果,讓我每次閉眼拿1個(gè),挑出最大的。于是我隨機(jī)拿1個(gè),再隨機(jī)拿1個(gè)跟它比,留下大的,再隨機(jī)拿1個(gè)……我每拿一次,留下的蘋(píng)果都至少不比上次的小。拿的次數(shù)越多,挑出的蘋(píng)果就越大,但我除非拿100次,否則無(wú)法肯定挑出了最大的。這個(gè)挑蘋(píng)果的算法,就屬于蒙特卡羅算法——盡量找好的,但不保證是最好的。
拉斯維加斯(Las Vegas)算法
假如有一把鎖,給我100把鑰匙,只有1把是對(duì)的。于是我每次隨機(jī)拿1把鑰匙去試,打不開(kāi)就再換1把。我試的次數(shù)越多,打開(kāi)(最優(yōu)解)的機(jī)會(huì)就越大,但在打開(kāi)之前,那些錯(cuò)的鑰匙都是沒(méi)有用的。這個(gè)試鑰匙的算法,就是拉斯維加斯算法——盡量找最好的,但不保證能找到。
比如N皇后的排列問(wèn)題,除了順序枚舉法之外,隨機(jī)枚舉也是一種策略。
Monte Carlo method與RL
MDP的缺點(diǎn)在于model是已知的,但在實(shí)際應(yīng)用中,更多的是Model未知(或部分未知)或者建模困難的情況,這種情況下就需要使用MC method來(lái)生成相應(yīng)的Model。
MC method在RL中主要有兩種使用方式:
model-free:完全不依賴Model。
Simulated:簡(jiǎn)單的模擬,而不需要完整的Model。
MC method用experience替代了MDP中的transitions/rewards(也可以說(shuō)是用empirical mean替代了expected),但需要注意這些experience不能是重復(fù)采樣的,而且它只適用于周期性的MDP。
Monte Carlo Policy Evaluation
Monte Carlo Policy Evaluation的目標(biāo)是對(duì)狀態(tài)s進(jìn)行估值。它的步驟是:
當(dāng)s被訪問(wèn)到(visited)時(shí):
增加計(jì)數(shù):
N(s)←N(s)+1N(s)←N(s)+1增加總獎(jiǎng)勵(lì):S(s)←S(s)+GtS(s)←S(s)+Gt
V(s)=S(s)/N(s)V(s)=S(s)/N(s)
反復(fù)多次:N(s)→∞,V(s)→vπ(s)N(s)→∞,V(s)→vπ(s)
根據(jù)Visit的策略不同,Monte Carlo Policy Evaluation又可分為:First-visit MC和Every-Visit MC。
兩者的差別在于:First-visit MC的每次探索,一旦抵達(dá)狀態(tài)s,就結(jié)束了,Every-Visit MC到達(dá)狀態(tài)s之后還可以繼續(xù)探索。
Incremental Monte-Carlo Updates
借用《機(jī)器學(xué)習(xí)(二十六)》中,求均值的小技巧,我們可以得到Incremental Mean。
用Incremental Mean進(jìn)行更新,被稱作Incremental Monte-Carlo Updates:
V(St)←V(St)+1N(St)(Gt?V(St))V(St)←V(St)+1N(St)(Gt?V(St))
對(duì)于非平穩(wěn)(non-stationary)問(wèn)題,我們也可采用如下公式更新:
V(St)←V(St)+α(Gt?V(St))V(St)←V(St)+α(Gt?V(St))
參考
https://mp.weixin.qq.com/s/F9VlxVV4nXELyKxdRo9RPA
強(qiáng)化學(xué)習(xí)——蒙特卡洛
https://www.zhihu.com/question/20254139
蒙特卡羅算法是什么?
http://www.cnblogs.com/2010Freeze/archive/2011/09/19/2181016.html
概率算法-sherwood算法
http://www.cnblogs.com/chinazhangjie/archive/2010/11/11/1874924.html
概率算法
https://mp.weixin.qq.com/s/wfCyii6bS-GxMZPg2TPaLA
蒙特卡洛樹(shù)搜索是什么?如何將其用于規(guī)劃星際飛行?
https://mp.weixin.qq.com/s/tqhPGG2Djl4gnd09RdHsUA
一個(gè)徹底改變世界的思想
https://mp.weixin.qq.com/s/vKVX-aJ7n7VVDXOpoTo1GQ
通過(guò)Python實(shí)現(xiàn)馬爾科夫鏈蒙特卡羅方法的入門級(jí)應(yīng)用
https://mp.weixin.qq.com/s/TMHaIRFdgJxG__1oqRq70Q
蒙特卡羅樹(shù)搜索之初學(xué)者指南
Temporal-Difference Learning
TD
時(shí)序差分學(xué)習(xí)和蒙特卡洛學(xué)習(xí)一樣,它也從Episode學(xué)習(xí),不需要了解模型本身;但是它可以學(xué)習(xí)不完整的Episode,通過(guò)bootstrapping,猜測(cè)Episode的結(jié)果,同時(shí)持續(xù)更新這個(gè)猜測(cè)。
最簡(jiǎn)單的TD算法——TD(0)的更新公式如下:
V(St)←V(St)+α(Rt+1+γV(St+1)?V(St))V(St)←V(St)+α(Rt+1+γV(St+1)?V(St))
其中,Rt+1+γV(St+1)Rt+1+γV(St+1)被稱作TD target,而δt=Rt+1+γV(St+1)?V(St)δt=Rt+1+γV(St+1)?V(St)被稱作TD error。
下面用駕車返家的例子直觀解釋蒙特卡洛策略評(píng)估和TD策略評(píng)估的差別。
想象一下你下班后開(kāi)車回家,需要預(yù)估整個(gè)行程花費(fèi)的時(shí)間。假如一個(gè)人在駕車回家的路上突然碰到險(xiǎn)情:對(duì)面迎來(lái)一輛車感覺(jué)要和你相撞,嚴(yán)重的話他可能面臨死亡威脅,但是最后雙方都采取了措施沒(méi)有實(shí)際發(fā)生碰撞。如果使用蒙特卡洛學(xué)習(xí),路上發(fā)生的這一險(xiǎn)情可能引發(fā)的負(fù)向獎(jiǎng)勵(lì)不會(huì)被考慮進(jìn)去,不會(huì)影響總的預(yù)測(cè)耗時(shí);但是在TD學(xué)習(xí)時(shí),碰到這樣的險(xiǎn)情,這個(gè)人會(huì)立即更新這個(gè)狀態(tài)的價(jià)值,隨后會(huì)發(fā)現(xiàn)這比之前的狀態(tài)要糟糕,會(huì)立即考慮決策降低速度贏得時(shí)間,也就是說(shuō)你不必像蒙特卡洛學(xué)習(xí)那樣直到他死亡后才更新?tīng)顟B(tài)價(jià)值,那種情況下也無(wú)法更新?tīng)顟B(tài)價(jià)值。
TD算法相當(dāng)于在整個(gè)返家的過(guò)程中(一個(gè)Episode),根據(jù)已經(jīng)消耗的時(shí)間和預(yù)期還需要的時(shí)間來(lái)不斷更新最終回家需要消耗的時(shí)間。
| 離開(kāi)辦公室 | 0 | 30 | 30 |
| 取車,發(fā)現(xiàn)下雨 | 5 | 35 | 40 |
| 離開(kāi)高速公路 | 20 | 15 | 35 |
| 被迫跟在卡車后面 | 30 | 10 | 40 |
| 到達(dá)家所在街區(qū) | 40 | 3 | 43 |
| 到家 | 43 | 0 | 43 |
基于上表所示的數(shù)據(jù),下圖展示了蒙特卡洛學(xué)習(xí)和TD學(xué)習(xí)兩種不同的學(xué)習(xí)策略來(lái)更新價(jià)值函數(shù)(各個(gè)狀態(tài)的價(jià)值)。這里使用的是從某個(gè)狀態(tài)預(yù)估的到家還需耗時(shí)來(lái)間接反映某狀態(tài)的價(jià)值:某位置預(yù)估的到家時(shí)間越長(zhǎng),該位置價(jià)值越低,在優(yōu)化決策時(shí)需要避免進(jìn)入該狀態(tài)。對(duì)于蒙特卡洛學(xué)習(xí)過(guò)程,駕駛員在路面上碰到各種情況時(shí),他不會(huì)更新對(duì)于回家的預(yù)估時(shí)間,等他回到家得到了真實(shí)回家耗時(shí)后,他會(huì)重新估計(jì)在返家的路上著每一個(gè)主要節(jié)點(diǎn)狀態(tài)到家的時(shí)間,在下一次返家的時(shí)候用新估計(jì)的時(shí)間來(lái)幫助決策。
而對(duì)于TD學(xué)習(xí),在一開(kāi)始離開(kāi)辦公室的時(shí)候你可能會(huì)預(yù)估總耗時(shí)30分鐘,但是當(dāng)你取到車發(fā)現(xiàn)下雨的時(shí)候,你會(huì)立刻想到原來(lái)的預(yù)計(jì)過(guò)于樂(lè)觀,因?yàn)榧韧慕?jīng)驗(yàn)告訴你下雨會(huì)延長(zhǎng)你的返家總時(shí)間,此時(shí)你會(huì)更新目前的狀態(tài)價(jià)值估計(jì),從原來(lái)的30分鐘提高到40分鐘。同樣當(dāng)你駕車離開(kāi)高速公路時(shí),會(huì)一路根據(jù)當(dāng)前的狀態(tài)(位置、路況等)對(duì)應(yīng)的預(yù)估返家剩余時(shí)間,直到返回家門得到實(shí)際的返家總耗時(shí)。這一過(guò)程中,你會(huì)根據(jù)狀態(tài)的變化實(shí)時(shí)更新該狀態(tài)的價(jià)值。
TD vs. MC—1
通過(guò)這個(gè)例子,我們可以直觀的了解到:
1.TD在知道結(jié)果之前可以學(xué)習(xí),MC必須等到最后結(jié)果才能學(xué)習(xí);
2.TD可以在沒(méi)有結(jié)果時(shí)學(xué)習(xí),可以在持續(xù)進(jìn)行的環(huán)境里學(xué)習(xí)。
TD vs. MC—2
Gt=Rt+1+γRt+2+?+γT?1RTGt=Rt+1+γRt+2+?+γT?1RT是Vπ(St)Vπ(St)的無(wú)偏估計(jì)值。
True TD target:Rt+1+γVπ(St+1)Rt+1+γVπ(St+1),也是Vπ(St)Vπ(St)的無(wú)偏估計(jì)值。
TD target:Rt+1+γV(St+1)Rt+1+γV(St+1),是Vπ(St)Vπ(St)的有偏估計(jì)值。
MC沒(méi)有bias,但有著較高的Variance,且對(duì)初始值不敏感;
TD低variance, 但有一定程度的bias,對(duì)初始值較敏感,通常比MC更高效;
總結(jié)
以上是生活随笔為你收集整理的机器学习(二十八)——Monte-Carlo的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 深度学习(二十三)——Fast Imag
- 下一篇: 机器学习(二十九)——Temporal-