- 深度強(qiáng)化學(xué)習(xí)實(shí)踐(原書第2版)
- (俄)馬克西姆·拉潘
- 1280字
- 2021-08-18 17:39:26
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所示。

圖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ù)雜。從s1到s2的每次轉(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à)值如下:

嚴(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ì)值。

前面的示例有助于理解更通用的價(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更新:

3)對許多步驟重復(fù)步驟2,或者直到更改變得很小為止。
對于動(dòng)作價(jià)值(即Q),只需要對前面的過程進(jìn)行較小的修改即可:
1)將每個(gè)Qs, a初始化為零。
2)對每個(gè)狀態(tài)s和動(dòng)作a執(zhí)行以下更新:

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的。
- 智能制造系統(tǒng)中的建模與仿真:系統(tǒng)工程與仿真的融合
- 智能制造時(shí)代的研發(fā)智慧:知識工程2.0
- 大模型浪潮:商業(yè)機(jī)遇、產(chǎn)業(yè)變革與未來趨勢
- 空間計(jì)算:人工智能驅(qū)動(dòng)的新商業(yè)革命
- Python金融大數(shù)據(jù)風(fēng)控建模實(shí)戰(zhàn):基于機(jī)器學(xué)習(xí)
- 強(qiáng)化學(xué)習(xí):原理與Python實(shí)現(xiàn)
- 機(jī)器學(xué)習(xí)與數(shù)據(jù)科學(xué)(基于R的統(tǒng)計(jì)學(xué)習(xí)方法)
- 里武林的沉淪囈語:AI人工智能游戲概念設(shè)定集
- Unity虛擬現(xiàn)實(shí)開發(fā)實(shí)戰(zhàn)
- 人工智能初學(xué)者指南
- 輕松玩轉(zhuǎn)DeepSeek:入門 實(shí)操 精通 變現(xiàn)
- 計(jì)算機(jī)應(yīng)用與數(shù)據(jù)分析+人工智能
- 搜索:開啟智能時(shí)代的新引擎
- TensorFlow機(jī)器學(xué)習(xí)
- 人工智能的神話或悲歌