《深入淺出機器學(xué)習(xí)》之強化學(xué)習(xí)

機器學(xué)習(xí)中的強化學(xué)習(xí):Q-learning學(xué)習(xí)指南

所謂強化學(xué)習(xí)就是智能系統(tǒng)從環(huán)境到行為映射的學(xué)習(xí)惧辈,以使獎勵信號(強化信號)函數(shù)值最大章蚣。如果Agent的某個行為策略導(dǎo)致環(huán)境正的獎賞(強化信號)宇植,那么Agent以后產(chǎn)生這個行為策略的趨勢便會加強 -《百科》

簡單來說就是給你一只小白鼠在迷宮里面,如果他走出了正確的步子宴偿,就會給它正反饋(糖)祖灰,否則給出負(fù)反饋(點擊),那么券腔,當(dāng)它走完所有的道路后伏穆。無論比把它放到哪兒,它都能通過以往的學(xué)習(xí)找到最正確的道路纷纫。

下面直接上例子:

假設(shè)我們有5間房枕扫,如下圖所示,這5間房有些房間是想通的涛酗,我們分別用0-4進行了標(biāo)注铡原,其中5代表了是是出口。

我們使用一副圖來表示商叹,就是下面這個樣子

在這個例子里燕刻,我們的目標(biāo)是能夠走出房間,就是到達5的位置剖笙,為了能更好的達到這個目標(biāo)卵洗,我們?yōu)槊恳粋€門設(shè)置一個獎勵。比如如果能立即到達5,那么我們給予100的獎勵过蹂,其它沒法到5的我們不給予獎勵十绑,權(quán)重是0了,如下圖所示

5因為也可以到它自己酷勺,所以也是給100的獎勵本橙,其它方向到5的也都是100的獎勵。 在Q-learning中脆诉,目標(biāo)是權(quán)重值累加的最大化镰踏,所以一旦達到5柱告,它將會一直保持在這兒简烘。

想象下我們有一個虛擬的機器人桦沉,它對環(huán)境一無所知,但它需要通過自我學(xué)習(xí)知道怎么樣到外面偶摔,就是到達5的位置暇唾。

好啦,現(xiàn)在可以引出Q-learning的概念了辰斋,“狀態(tài)”以及“動作”策州,我們可以將每個房間看成一個state,從一個房間到另外一個房間的動作叫做action宫仗,state是一個節(jié)點抽活,而action是用一個剪頭表示。

現(xiàn)在假設(shè)我們在狀態(tài)2锰什,從狀態(tài)2可以到狀態(tài)3下硕,而無法到狀態(tài)0、1汁胆、4梭姓,因為2沒法直接到0、1嫩码、4誉尖;從狀態(tài)3,可以到1铸题、4或者2铡恕;而4可以到0、3丢间、5探熔;其它依次類推。

所以我們能夠把這些用一個矩陣來表示:

這個矩陣就是傳說中的Q矩陣了烘挫,這個矩陣的列表表示的是當(dāng)前狀態(tài)诀艰,而行標(biāo)表示的則是下一個狀態(tài),比如第三行的行標(biāo)是2,如果取第四列其垄,比如說2苛蒲,4就表示了從2->4的收益是0,而-1就表示了沒法從一個狀態(tài)到另外一個狀態(tài)绿满。

Q矩陣初始化的時候全為0臂外,因為它的狀態(tài)我們已經(jīng)全部知道了,所以我們知道總的狀態(tài)是6喇颁。如果我們并不知道有多少個狀態(tài)寄月,那么請從1個狀態(tài)開始,一旦發(fā)現(xiàn)新的狀態(tài)无牵,那么為這個矩陣添加上新的行和列。

于是我們就得出了如下的公式:

Q(state, action) = R(state, action) + Gamma * Max[Q(next state, all actions)]

根據(jù)這個公式厂抖,Q矩陣值 = R的當(dāng)前值 + ?Gamma(系數(shù))* Q最大的action(看不懂不要緊茎毁,后面有例子)

我們的虛擬機器人將通過環(huán)境來學(xué)習(xí),機器人會從一個狀態(tài)跳轉(zhuǎn)到另一個狀態(tài)忱辅,直到我們到達最終狀態(tài)七蜘。我們把從開始狀態(tài)開始一直達到最終狀態(tài)的這個過程稱之為一個場景,機器人會從一個隨機的開始場景出發(fā)墙懂,直到到達最終狀態(tài)完成一個場景橡卤,然后立即重新初始化到一個開始狀態(tài),從而進入下一個場景损搬。

因此碧库,我們可以將算法歸納如下

Q-learning算法如下:

1 設(shè)置gamma相關(guān)系數(shù),以及獎勵矩陣R

2 將Q矩陣初始化為全0

3 For each episode:

  設(shè)置隨機的初使?fàn)顟B(tài)

  Do While 當(dāng)沒有到達目標(biāo)時?

選擇一個最大可能性的action(action的選擇用一個算法來做巧勤,后面再講)

   根據(jù)這個action到達下一個狀態(tài)

   根據(jù)計算公式:Q(state, action) = R(state, action) + Gamma * Max[Q(next state, all actions)]計算這個狀態(tài)Q的值

   設(shè)置當(dāng)前狀態(tài)為所到達的狀態(tài)

  End Do

End For

其中Gamma的值在0嵌灰,1之間(0 <= Gamma <1)。如果Gramma接近0颅悉,對立即的獎勵更有效沽瞭。如果接近1,整個系統(tǒng)會更考慮將來的獎勵剩瓶。

以上就是整個算法了驹溃,并不是很難的,下面來看個一段人肉算法操作延曙,讓你徹底明白這個算法豌鹤。

人肉算法步驟

首先將Q初始化一個全為0的矩陣,Q是我們目標(biāo)矩陣枝缔,我們希望能夠把這個矩陣填滿

然后初始化我們的R矩陣傍药,假設(shè)這個值我們都是知道的,如下圖所示

現(xiàn)在,假設(shè)我們的初始位置是state1拐辽,首先檢查一下我們的R矩陣拣挪,在R矩陣中發(fā)現(xiàn)從state1可以到2個位置:state3、state5俱诸,我們隨機選擇一個方向菠劝,比如我們現(xiàn)在從1到5,我們可以用公式

Q(state, action) = R(state, action) + Gamma * Max[Q(next state, all actions)]

Q(1, 5) = R(1, 5) + 0.8 * Max[Q(5, 1), Q(5, 4), Q(5, 5)]= 100 + 0.8 * 0 = 100

來計算出Q(1,5)睁搭, 因為Q矩陣是初始化為0赶诊,所以 Q(5,1), Q(5,4),Q(5,5)都是0,所以Q(1,5)的值為100园骆,現(xiàn)在5變成了當(dāng)前狀態(tài)舔痪,因為5已經(jīng)是最終狀態(tài)了,所以锌唾,這個場景就結(jié)束鳥锄码,Q矩陣變成如下

然后我們再隨機的選擇一個狀態(tài),比如現(xiàn)在選了狀態(tài)3為我們的初始狀態(tài)晌涕,好啦滋捶,來看我們R矩陣;有3個可能性的1余黎、2重窟、4我們隨機的選擇1,繼續(xù)用公式計算:

Q(state, action) = R(state, action) + Gamma * Max[Q(next state, all actions)]

Q(3, 1) = R(3, 1) + 0.8 * Max[Q(1, 2), Q(1, 5)]= 0 + 0.8 * Max(0, 100) = 80

然后惧财,更新矩陣巡扇,矩陣變成了這個樣子

我們的當(dāng)前狀態(tài)變成了1,1并不是最終狀態(tài)垮衷,所以算法還是要往下執(zhí)行霎迫,此時,觀察R矩陣帘靡,1有1->3, 1->5兩個選擇知给,子這里我們選擇 1->5這個action有著較高回報,所以我們選擇了1->5, 重新計算Q(1,5)的值

Q(state, action) = R(state, action) + Gamma * Max[Q(next state, all actions)]

Q(1, 5) = R(1, 5) + 0.8 * Max[Q(1, 2), Q(1, 5)]= 0 + 0.8 * Max(0, 100) = 80

為什么要重新計算呢描姚?因為某些值可能會發(fā)生變化涩赢,計算完后更新矩陣

因為5已經(jīng)是最終狀態(tài)了,所以結(jié)束我們本次場景迭代轩勘。

經(jīng)過循環(huán)迭代筒扒,我們得出了最終結(jié)果,是這個樣子的

經(jīng)過正則化處理绊寻,矩陣最終會變成這個樣子

強化學(xué)習(xí)到此結(jié)束花墩。我們的機器人自動學(xué)習(xí)到了最優(yōu)的路徑悬秉,就是按照最大獎勵值的路徑就可以啦

如圖紅線所示,代表了各個點到達終點的最優(yōu)路徑

這是一個級簡的算法冰蘑,隱藏了很多細(xì)節(jié)和泌,出去吹NB是夠了,實踐上實現(xiàn)起來還是有許多問題的祠肥。

下面就是細(xì)節(jié)代碼了武氓,對實現(xiàn)剛興趣的繼續(xù)往下看。

我們之前說了仇箱,選擇動作的依據(jù)是“選擇一個最大可能性的action”县恕,那么這個動作要怎么選呢?

我們選擇最大收益的那個值剂桥,比如在R矩陣中忠烛,總是選擇值最大的那個

算法我們可以通過代碼來表示就是這樣

大家想一下這樣是否會存在問題呢?當(dāng)然有权逗,如果有幾個最大值怎么處理呢美尸?,如果有幾個最大值的話我們就隨機的取一個唄

是不是這樣就可以了呢旬迹?大家想一下,萬一在當(dāng)前動作收益很小求类,小收益到達的狀態(tài)的后續(xù)action可能會更大奔垦,所以,我們不能直接選取最大的收益尸疆,而是需要使用一個新的技術(shù)來探索椿猎,在這里,我們使用了epsilon寿弱,首先我們用產(chǎn)生一個隨機值犯眠,如果這個隨機值小于epsilon,那么下一個action會是隨機動作症革,否則采用組大值筐咧,代碼如下

但實際上這種做法還是有問題的,問題是即使我們已經(jīng)學(xué)習(xí)完畢了噪矛,已經(jīng)知道了最優(yōu)解量蕊,當(dāng)我們選擇一個動作時,它還是會繼續(xù)采取隨機的動作艇挨。有許多方法可以克服這個残炮,比較有名稱之為mouse learns: 沒循環(huán)一次就減少epsilon的值,這樣隨著學(xué)習(xí)的進行缩滨,隨機越來越不容易觸發(fā)势就,從而減少隨機對系統(tǒng)的影響泉瞻,常用的減少方法有以下幾種,大家可以根據(jù)情況選用

(本文完)

作者:方老司

鏈接:http://www.reibang.com/p/cfab6ff434cd

來源:簡書

簡書著作權(quán)歸作者所有苞冯,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處袖牙。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市抱完,隨后出現(xiàn)的幾起案子贼陶,更是在濱河造成了極大的恐慌,老刑警劉巖巧娱,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碉怔,死亡現(xiàn)場離奇詭異,居然都是意外死亡禁添,警方通過查閱死者的電腦和手機撮胧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來老翘,“玉大人芹啥,你說我怎么就攤上這事∑糖停” “怎么了墓怀?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長卫键。 經(jīng)常有香客問我傀履,道長,這世上最難降的妖魔是什么莉炉? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任钓账,我火速辦了婚禮,結(jié)果婚禮上絮宁,老公的妹妹穿的比我還像新娘梆暮。我一直安慰自己,他們只是感情好绍昂,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布啦粹。 她就那樣靜靜地躺著,像睡著了一般窘游。 火紅的嫁衣襯著肌膚如雪卖陵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天张峰,我揣著相機與錄音泪蔫,去河邊找鬼。 笑死喘批,一個胖子當(dāng)著我的面吹牛撩荣,可吹牛的內(nèi)容都是我干的铣揉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼餐曹,長吁一口氣:“原來是場噩夢啊……” “哼逛拱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起台猴,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤朽合,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后饱狂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體曹步,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年休讳,在試婚紗的時候發(fā)現(xiàn)自己被綠了讲婚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡俊柔,死狀恐怖筹麸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情雏婶,我是刑警寧澤物赶,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站留晚,受9級特大地震影響酵紫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜倔丈,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一憨闰、第九天 我趴在偏房一處隱蔽的房頂上張望状蜗。 院中可真熱鬧需五,春花似錦、人聲如沸轧坎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缸血。三九已至蜜氨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間捎泻,已是汗流浹背飒炎。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留笆豁,地道東北人郎汪。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓赤赊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親煞赢。 傳聞我的和親對象是個殘疾皇子抛计,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容