《深入淺出機器學習》之強化學習

機器學習中的強化學習:Q-learning學習指南

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

簡單來說就是給你一只小白鼠在迷宮里面武花,如果他走出了正確的步子漾橙,就會給它正反饋(糖),否則給出負反饋(點擊)桑阶,那么,當它走完所有的道路后熙尉。無論比把它放到哪兒联逻,它都能通過以往的學習找到最正確的道路。

下面直接上例子:

假設我們有5間房检痰,如下圖所示包归,這5間房有些房間是想通的,我們分別用0-4進行了標注铅歼,其中5代表了是是出口公壤。

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

在這個例子里椎椰,我們的目標是能夠走出房間厦幅,就是到達5的位置,為了能更好的達到這個目標慨飘,我們?yōu)槊恳粋€門設置一個獎勵确憨。比如如果能立即到達5,那么我們給予100的獎勵瓤的,其它沒法到5的我們不給予獎勵休弃,權(quán)重是0了,如下圖所示

5因為也可以到它自己圈膏,所以也是給100的獎勵塔猾,其它方向到5的也都是100的獎勵。 在Q-learning中稽坤,目標是權(quán)重值累加的最大化丈甸,所以一旦達到5糯俗,它將會一直保持在這兒。

想象下我們有一個虛擬的機器人睦擂,它對環(huán)境一無所知得湘,但它需要通過自我學習知道怎么樣到外面,就是到達5的位置祈匙。


好啦忽刽,現(xiàn)在可以引出Q-learning的概念了,“狀態(tài)”以及“動作”夺欲,我們可以將每個房間看成一個state跪帝,從一個房間到另外一個房間的動作叫做action,state是一個節(jié)點些阅,而action是用一個剪頭表示伞剑。

現(xiàn)在假設我們在狀態(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矩陣了,這個矩陣的列表表示的是當前狀態(tài)拗军,而行標表示的則是下一個狀態(tài)任洞,比如第三行的行標是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的當前值 + ?Gamma(系數(shù))* Q最大的action(看不懂不要緊齿梁,后面有例子)

我們的虛擬機器人將通過環(huán)境來學習催植,機器人會從一個狀態(tài)跳轉(zhuǎn)到另一個狀態(tài),直到我們到達最終狀態(tài)勺择。我們把從開始狀態(tài)開始一直達到最終狀態(tài)的這個過程稱之為一個場景创南,機器人會從一個隨機的開始場景出發(fā),直到到達最終狀態(tài)完成一個場景省核,然后立即重新初始化到一個開始狀態(tài)稿辙,從而進入下一個場景。

因此气忠,我們可以將算法歸納如下

Q-learning算法如下:

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

2 將Q矩陣初始化為全0

3 For each episode:

  設置隨機的初使狀態(tài)

  Do While 當沒有到達目標時?

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

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

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

   設置當前狀態(tài)為所到達的狀態(tài)

  End Do

End For

其中Gamma的值在0旧噪,1之間(0 <= Gamma <1)吨娜。如果Gramma接近0,對立即的獎勵更有效淘钟。如果接近1宦赠,整個系統(tǒng)會更考慮將來的獎勵。

以上就是整個算法了日月,并不是很難的袱瓮,下面來看個一段人肉算法操作,讓你徹底明白這個算法爱咬。

人肉算法步驟

首先將Q初始化一個全為0的矩陣尺借,Q是我們目標矩陣,我們希望能夠把這個矩陣填滿

然后初始化我們的R矩陣精拟,假設這個值我們都是知道的燎斩,如下圖所示

現(xiàn)在,假設我們的初始位置是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變成了當前狀態(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

然后,更新矩陣述召,矩陣變成了這個樣子


我們的當前狀態(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)過正則化處理,矩陣最終會變成這個樣子


強化學習到此結(jié)束坞笙。我們的機器人自動學習到了最優(yōu)的路徑岩饼,就是按照最大獎勵值的路徑就可以啦

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

這是一個級簡的算法薛夜,隱藏了很多細節(jié)籍茧,出去吹NB是夠了,實踐上實現(xiàn)起來還是有許多問題的梯澜。

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

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

我們選擇最大收益的那個值,比如在R矩陣中螟蝙,總是選擇值最大的那個

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

大家想一下這樣是否會存在問題呢?當然有民傻,如果有幾個最大值怎么處理呢胰默?,如果有幾個最大值的話我們就隨機的取一個唄

是不是這樣就可以了呢漓踢?大家想一下牵署,萬一在當前動作收益很小,小收益到達的狀態(tài)的后續(xù)action可能會更大喧半,所以奴迅,我們不能直接選取最大的收益,而是需要使用一個新的技術(shù)來探索挺据,在這里取具,我們使用了epsilon,首先我們用產(chǎn)生一個隨機值扁耐,如果這個隨機值小于epsilon暇检,那么下一個action會是隨機動作,否則采用組大值婉称,代碼如下

但實際上這種做法還是有問題的块仆,問題是即使我們已經(jīng)學習完畢了,已經(jīng)知道了最優(yōu)解王暗,當我們選擇一個動作時悔据,它還是會繼續(xù)采取隨機的動作。有許多方法可以克服這個俗壹,比較有名稱之為mouse learns: 沒循環(huán)一次就減少epsilon的值科汗,這樣隨著學習的進行,隨機越來越不容易觸發(fā)策肝,從而減少隨機對系統(tǒng)的影響肛捍,常用的減少方法有以下幾種,大家可以根據(jù)情況選用

(本文完)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末之众,一起剝皮案震驚了整個濱河市拙毫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌棺禾,老刑警劉巖缀蹄,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡缺前,警方通過查閱死者的電腦和手機蛀醉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來衅码,“玉大人拯刁,你說我怎么就攤上這事∈哦危” “怎么了垛玻?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長奶躯。 經(jīng)常有香客問我帚桩,道長,這世上最難降的妖魔是什么嘹黔? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任账嚎,我火速辦了婚禮,結(jié)果婚禮上儡蔓,老公的妹妹穿的比我還像新娘郭蕉。我一直安慰自己,他們只是感情好浙值,可當我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布恳不。 她就那樣靜靜地躺著,像睡著了一般开呐。 火紅的嫁衣襯著肌膚如雪烟勋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天筐付,我揣著相機與錄音卵惦,去河邊找鬼。 笑死瓦戚,一個胖子當著我的面吹牛沮尿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播较解,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼畜疾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了印衔?” 一聲冷哼從身側(cè)響起啡捶,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎奸焙,沒想到半個月后瞎暑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體彤敛,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年了赌,在試婚紗的時候發(fā)現(xiàn)自己被綠了墨榄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡勿她,死狀恐怖袄秩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情逢并,我是刑警寧澤播揪,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站筒狠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏箱沦。R本人自食惡果不足惜辩恼,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谓形。 院中可真熱鬧灶伊,春花似錦、人聲如沸寒跳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽童太。三九已至米辐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間书释,已是汗流浹背翘贮。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留爆惧,地道東北人狸页。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像扯再,于是被迫代替她去往敵國和親芍耘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,573評論 2 353

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