利用網(wǎng)上的一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明Q-learning算法奴曙。
假設(shè)在一個(gè)建筑物中我們有五個(gè)房間由驹,這五個(gè)房間通過(guò)門相連接募疮,如下圖所示:將房間從0-4編號(hào)炫惩,外面可以認(rèn)為是一個(gè)大房間,編號(hào)為5.注意到1阿浓、4房間和5是相通的他嚷。
每個(gè)節(jié)點(diǎn)代表一個(gè)房間,每個(gè)連接代表一個(gè)門。
對(duì)這個(gè)例子來(lái)說(shuō)筋蓖,我們可以把Agent放到任何一個(gè)房間中卸耘,然后從這個(gè)房間走出這個(gè)建筑物(這就是我們的目標(biāo)房間,即房間5)粘咖。為了把5號(hào)房間設(shè)成目標(biāo)房間蚣抗,我們?yōu)槊恳簧乳T(節(jié)點(diǎn)之間的連接線)分配一個(gè)回報(bào)值。直接通向目標(biāo)的門的回報(bào)值為100瓮下,沒(méi)有與目標(biāo)房間直接相連的其他門的回報(bào)值為0翰铡。因?yàn)殚T都是雙向的(0可以到4,4也可以到0),因此每個(gè)門由兩個(gè)箭頭來(lái)表示讽坏。每個(gè)箭頭都有有一個(gè)立即回報(bào)值锭魔,如下所示:
當(dāng)然,從房間5到房間5自身的回報(bào)值應(yīng)該是100路呜。而所有直接通向這個(gè)目標(biāo)房間的連接線的回報(bào)值為100赂毯。在Q-Learning中,目標(biāo)就是要到達(dá)有最高回報(bào)值的狀態(tài)拣宰。所以如果Agent到達(dá)了目標(biāo)党涕,它就會(huì)一直在那。這種類型的目標(biāo)被稱為吸收目標(biāo)(absorbing goal)巡社。
想象一下膛堤,我們的Agent是一個(gè)不會(huì)說(shuō)話的虛擬機(jī)器人,但是它可以從經(jīng)驗(yàn)中學(xué)習(xí)晌该。Agent可以從一個(gè)房間走到另一個(gè)房間但是對(duì)于周圍的環(huán)境沒(méi)有任何了解肥荔,不知道哪一種門的順序可以把它帶到外面。
假設(shè)我們要為一個(gè)Agent從這個(gè)建筑物中任何一個(gè)房間撤離出去來(lái)簡(jiǎn)單建模朝群,假設(shè)我們有一個(gè)Agent在房間2中燕耿,我們想讓這個(gè)Agent學(xué)著到達(dá)這個(gè)建筑物的外面。
Q-Learning中的術(shù)語(yǔ)包括狀態(tài)(state)和動(dòng)作(action)姜胖。
我們稱包括建筑物外面的所有房間為狀態(tài)誉帅,Agent從一個(gè)房間到另一個(gè)房間的移動(dòng)為動(dòng)作,在圖中右莱,一個(gè)狀態(tài)被畫成一個(gè)節(jié)點(diǎn)蚜锨,而一個(gè)動(dòng)作被箭頭表示出來(lái)。
假設(shè)Agent是在2號(hào)房間(狀態(tài)2)中慢蜓,那么它可以從2號(hào)房間走到3號(hào)房間亚再,因?yàn)樗麄兪窍嗤ǖ摹6鴱?號(hào)房間Agent不能直接走到1號(hào)房間晨抡,因?yàn)闆](méi)有一個(gè)門(所以沒(méi)有箭頭)直接把1號(hào)和2號(hào)房間連接起來(lái)氛悬。從狀態(tài)3.它可以走到狀態(tài)1,4则剃,或者回到2(注意看與狀態(tài)3相關(guān)的所有箭頭)。如果Agent是在狀態(tài)4如捅,那么它所有可能的動(dòng)作是走向狀態(tài)0,5或者3棍现。如果它在狀態(tài)1,那么它可以到達(dá)狀態(tài)3或者狀態(tài)5伪朽,從狀態(tài)0,它只可以回到狀態(tài)4汛蝙。
我們可以把狀態(tài)圖和即時(shí)回報(bào)值填入下面的回報(bào)表中烈涮,即R矩陣
上圖中-1代表空值,比如兩個(gè)狀態(tài)之間沒(méi)有箭頭窖剑。
現(xiàn)在我們添加一個(gè)相似的矩陣坚洽,“Q”,到我們Agent的大腦中西土,這個(gè)矩陣代表了Agent通過(guò)經(jīng)驗(yàn)所學(xué)到的讶舰,Q矩陣的行代表Agent的當(dāng)前狀態(tài),Q矩陣的列代表了可能到達(dá)下一狀態(tài)的動(dòng)作(即狀態(tài)之間的箭頭)需了。
Q-Learning的轉(zhuǎn)換規(guī)則方程:
γ值在0到1之間變化(0<=γ<1),如果γ值接近0跳昼,Agent傾向于只考慮立即回報(bào)值;如果γ值接近1肋乍,Agent將以更大的權(quán)重去考慮未來(lái)回報(bào)值鹅颊,愿意將回報(bào)延后。
Agent僅僅是跟蹤從起始狀態(tài)到目標(biāo)狀態(tài)的狀態(tài)序列來(lái)使用矩陣Q墓造。這個(gè)算法在矩陣Q中為當(dāng)前狀態(tài)找到有最高回報(bào)值的下一步動(dòng)作堪伍。
實(shí)例:
初始化Q矩陣為一個(gè)零矩陣,參數(shù)伽馬r=0.8觅闽,隨機(jī)初始狀態(tài)為房間1
從R矩陣可以看出有兩個(gè)非負(fù)值帝雇,即從房間(狀態(tài))1到房間(狀態(tài))3或者從房間(狀態(tài))1到房間(狀態(tài))5,隨機(jī)選取從1到5.
根據(jù)公式1.1
此時(shí)狀態(tài)5變?yōu)楫?dāng)前狀態(tài)蛉拙,因?yàn)闋顟B(tài)5就是目標(biāo)狀態(tài)尸闸,故以此episode結(jié)束,刷新Q表