利用網(wǎng)上的一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明Q-learning算法。
假設(shè)在一個(gè)建筑物中我們有五個(gè)房間,這五個(gè)房間通過(guò)門(mén)相連接,如下圖所示:將房間從0-4編號(hào),外面可以認(rèn)為是一個(gè)大房間,編號(hào)為5.注意到1、4房間和5是相通的。

每個(gè)節(jié)點(diǎn)代表一個(gè)房間,每個(gè)連接代表一個(gè)門(mén)。

對(duì)這個(gè)例子來(lái)說(shuō),我們可以把Agent放到任何一個(gè)房間中,然后從這個(gè)房間走出這個(gè)建筑物(這就是我們的目標(biāo)房間,即房間5)。為了把5號(hào)房間設(shè)成目標(biāo)房間,我們?yōu)槊恳簧乳T(mén)(節(jié)點(diǎn)之間的連接線)分配一個(gè)回報(bào)值。直接通向目標(biāo)的門(mén)的回報(bào)值為100,沒(méi)有與目標(biāo)房間直接相連的其他門(mén)的回報(bào)值為0。因?yàn)殚T(mén)都是雙向的(0可以到4,4也可以到0),因此每個(gè)門(mén)由兩個(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)有任何了解,不知道哪一種門(mén)的順序可以把它帶到外面。
假設(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)被畫(huà)成一個(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)樗麄兪窍嗤ǖ?。而?號(hào)房間Agent不能直接走到1號(hào)房間,因?yàn)闆](méi)有一個(gè)門(mén)(所以沒(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表




