官术网_书友最值得收藏!

5.4 價(jià)值迭代法

在剛剛的簡單示例中,為了計(jì)算狀態(tài)和動(dòng)作的價(jià)值,我們利用了環(huán)境的結(jié)構(gòu):在轉(zhuǎn)移中沒有循環(huán),因此可以從最終狀態(tài)開始,計(jì)算其價(jià)值,然后回到中心的狀態(tài)。但是,環(huán)境中只要有一個(gè)循環(huán)就會(huì)給這個(gè)方法造成障礙。我們來考慮具有兩個(gè)狀態(tài)的此類環(huán)境,如圖5.7所示。

103-01

圖5.7 轉(zhuǎn)移圖中包含循環(huán)的環(huán)境樣例

我們從狀態(tài)s1開始,唯一可以采取的行動(dòng)會(huì)使我們進(jìn)入狀態(tài)s2。我們得到獎(jiǎng)勵(lì)r=1,并且從s2的唯一個(gè)動(dòng)作會(huì)使我們回到s1。因此,智能體會(huì)進(jìn)入無限的狀態(tài)序列[s1, s2, s1, s2, s1, s2, s1, s2, …]。要處理這種無限循環(huán),可以使用折扣因子:γ=0.9。現(xiàn)在的問題是,兩個(gè)狀態(tài)的價(jià)值分別是什么?實(shí)際上,答案并不復(fù)雜。從s1s2的每次轉(zhuǎn)移的獎(jiǎng)勵(lì)為1,反向轉(zhuǎn)移的獎(jiǎng)勵(lì)為2。因此,獎(jiǎng)勵(lì)序列為[1, 2, 1, 2, 1, 1, 2, 1, 2, …]。由于在每個(gè)狀態(tài)下只有一個(gè)動(dòng)作,智能體沒有選擇余地,因此可以省略公式中的max運(yùn)算(只有一種選擇)。

狀態(tài)的價(jià)值如下:

103-02

嚴(yán)格來講,我們無法計(jì)算狀態(tài)的確切價(jià)值,但由于γ=0.9,隨著時(shí)間的推移,每次轉(zhuǎn)移的貢獻(xiàn)值在減小。例如,在10步以后,γ10=0.910=0.349,但是在100步以后,該折扣因子變成0.000 026 6。由于以上原因,我們在50次迭代后停止計(jì)算,也可以得到比較精確的估計(jì)值。

103-03

前面的示例有助于理解更通用的價(jià)值迭代算法。這使我們能夠以數(shù)值計(jì)算已知狀態(tài)轉(zhuǎn)移概率和獎(jiǎng)勵(lì)值的馬爾可夫決策過程(Markov Decision Process,MDP)的狀態(tài)價(jià)值和動(dòng)作價(jià)值。該過程(對于狀態(tài)價(jià)值)包括以下步驟:

1)將所有狀態(tài)的價(jià)值Vi初始化為某個(gè)值(通常為零)。

2)對MDP中的每個(gè)狀態(tài)s,執(zhí)行Bellman更新:

103-04

3)對許多步驟重復(fù)步驟2,或者直到更改變得很小為止。

對于動(dòng)作價(jià)值(即Q),只需要對前面的過程進(jìn)行較小的修改即可:

1)將每個(gè)Qs, a初始化為零。

2)對每個(gè)狀態(tài)s和動(dòng)作a執(zhí)行以下更新:

104-01

3)重復(fù)步驟2。

這只是理論。實(shí)際中,此方法有幾個(gè)明顯的局限性。首先,狀態(tài)空間應(yīng)該是離散的并且要足夠小,以便對所有狀態(tài)執(zhí)行多次迭代。對于FrozenLake-4x4甚至是FrozenLake-8x8(Gym中更具挑戰(zhàn)性的版本),這都不是問題,但是對于CartPole,并不完全清楚該怎么做。我們對CartPole的觀察結(jié)果是4個(gè)浮點(diǎn)值,它們代表系統(tǒng)的某些物理特征。這些值之間即使是很小的差異也會(huì)對狀態(tài)價(jià)值產(chǎn)生影響。一個(gè)可能的解決方案是離散化觀察值。例如,可以將CartPole的觀察空間劃分為多個(gè)箱體,并將每個(gè)箱體視為空間中的單個(gè)離散狀態(tài)。然而,這將產(chǎn)生很多實(shí)際問題,例如應(yīng)該用多大的間隔來劃分箱體,以及需要多少環(huán)境數(shù)據(jù)來估計(jì)價(jià)值。我將在后續(xù)章節(jié)中(在Q-learning中使用神經(jīng)網(wǎng)絡(luò)時(shí))解答該問題。

第二個(gè)實(shí)際局限問題是我們很少能知道動(dòng)作的轉(zhuǎn)移概率和獎(jiǎng)勵(lì)矩陣。記住Gym所提供給智能體的接口:觀察狀態(tài)、決定動(dòng)作,然后才能獲得下一個(gè)觀察結(jié)果以及轉(zhuǎn)移獎(jiǎng)勵(lì)。我們不知道(在不查看Gym的環(huán)境代碼時(shí))從狀態(tài)s0采取動(dòng)作a0進(jìn)入狀態(tài)s1的概率是多少。

我們所擁有的僅僅是智能體與環(huán)境互動(dòng)的歷史。然而,在Bellman更新中,既需要每個(gè)轉(zhuǎn)移的獎(jiǎng)勵(lì),也需要轉(zhuǎn)移概率。因此,顯然可以利用智能體的經(jīng)驗(yàn)來估計(jì)這兩個(gè)未知值。可以根據(jù)歷史數(shù)據(jù)來決定獎(jiǎng)勵(lì),我們只需要記住從s0采取動(dòng)作a轉(zhuǎn)移到s1所獲得的獎(jiǎng)勵(lì)即可,但是要估計(jì)概率,需要為每個(gè)元組(s0, s1, a)維護(hù)一個(gè)計(jì)數(shù)器并將其標(biāo)準(zhǔn)化。

好了,現(xiàn)在來看價(jià)值迭代方法是怎么作用于FrozenLake的。

主站蜘蛛池模板: 历史| 亚东县| 综艺| 茂名市| 集贤县| 基隆市| 陆河县| 乐亭县| 沁阳市| 阿克陶县| 公安县| 金平| 开封县| 黔西县| 甘孜| 永康市| 淮阳县| 钟山县| 镇宁| 佛学| 龙岩市| 东阳市| 兴国县| 资兴市| 万源市| 天柱县| 会理县| 宁乡县| 吉水县| 海林市| 普兰店市| 土默特左旗| 永吉县| 临沧市| 邵东县| 长春市| 德兴市| 云龙县| 尤溪县| 六盘水市| 望江县|