你好,我是郭震(zhenguo)
前幾天我們學(xué)習(xí)強(qiáng)化學(xué)習(xí)策略迭代,今天,強(qiáng)化學(xué)習(xí)第8篇:強(qiáng)化學(xué)習(xí)值迭代
值迭代是強(qiáng)化學(xué)習(xí)另一種求解方法,用于找到馬爾可夫決策過(guò)程(MDP)中的最優(yōu)值函數(shù)。
值迭代
值迭代可以總結(jié)為如下幾點(diǎn):
值迭代通過(guò)不斷迭代更新值函數(shù)來(lái)逼近最優(yōu)值函數(shù),從而確定最優(yōu)策略。
值迭代的關(guān)鍵是在每次迭代中更新值函數(shù)。
對(duì)于每個(gè)狀態(tài),通過(guò)考慮所有可能的動(dòng)作和下一個(gè)狀態(tài),選擇能夠使值最大化的動(dòng)作,并計(jì)算更新后的值函數(shù)。
迭代更新值函數(shù),更新公式也是貝爾曼方程,和策略迭代值函數(shù)更新公式一樣。
值迭代需要進(jìn)行多次迭代,直到值函數(shù)收斂為止。收斂時(shí),值函數(shù)不再發(fā)生顯著變化。
可以看到:值迭代是比策略迭代更為簡(jiǎn)單的一種迭代方法。
代碼實(shí)現(xiàn)
值迭代,求迷宮問(wèn)題,完整代碼。
只使用numpy
包
import?numpy?as?np
定義迷宮地圖,在迷宮地圖中,不同的數(shù)字代表不同的含義:
0:表示可以通過(guò)的空格,即可行走的路徑。
-1:表示墻壁或障礙物,表示不能通過(guò)的障礙物區(qū)域。
1:表示目標(biāo)位置,即終點(diǎn)位置。
其中,0代表可行走的路徑,-1代表障礙物或墻壁,1代表迷宮的終點(diǎn)位置。這些數(shù)值用于描述迷宮的不同區(qū)域,以幫助算法進(jìn)行路徑搜索和價(jià)值計(jì)算。如下所示:

#?定義迷宮地圖
maze?=?np.array([
????[0,?0,?0,?0],
????[0,?-1,?0,?-1],
????[0,?0,?0,?0],
????[-1,?0,?-1,?1]
])
定義參數(shù)
#?定義參數(shù)
gamma?=?0.9??#?折扣因子
epsilon?=?1e-6??#?收斂閾值
初始值函數(shù)
#?初始化值函數(shù)
V?=?np.zeros(maze.shape)
進(jìn)行值迭代
#?進(jìn)行值迭代
while?True:
????delta?=?0
????for?i?in?range(maze.shape[0]):
????????for?j?in?range(maze.shape[1]):
????????????if?maze[i,?j]?==?-1?or?maze[i,?j]?==?1:
????????????????continue
????????????#?計(jì)算當(dāng)前狀態(tài)的最大價(jià)值
????????????max_value?=?float("-inf")
????????????for?action?in?[(0,?1),?(0,?-1),?(1,?0),?(-1,?0)]:
????????????????ni,?nj?=?i?+?action[0],?j?+?action[1]
????????????????if?ni?>=?0?and?ni?<?maze.shape[0]?and?nj?>=?0?and?nj?<?maze.shape[1]?and?maze[ni,?nj]?!=?-1:
????????????????????max_value?=?max(max_value,?gamma?*?V[ni,?nj])
????????????#?更新值函數(shù)
????????????new_value?=?maze[i,?j]?+?max_value
????????????delta?=?max(delta,?abs(new_value?-?V[i,?j]))
????????????V[i,?j]?=?new_value
????if?delta?<?epsilon:
????????break
#?打印最優(yōu)值函數(shù)
print("最優(yōu)值函數(shù):")
print(V)
這里面的核心代碼就是求解貝爾曼方程:
其中,?表示狀態(tài)??的值函數(shù),即按照某個(gè)策略獲得的預(yù)期回報(bào)。?表示選擇能夠使得值最大化的動(dòng)作?。?表示對(duì)所有可能的下一個(gè)狀態(tài)??和獎(jiǎng)勵(lì)??進(jìn)行求和。?表示在狀態(tài)??下執(zhí)行動(dòng)作??后轉(zhuǎn)移到狀態(tài)??且獲得獎(jiǎng)勵(lì)??的概率。?是折扣因子,用于平衡當(dāng)前和未來(lái)的獎(jiǎng)勵(lì)。
在上述代碼中,首先定義了迷宮地圖,并設(shè)置了折扣因子和收斂閾值。然后,通過(guò)值迭代算法逐步更新值函數(shù),直到值函數(shù)的變化小于收斂閾值為止。最后,打印出最優(yōu)的值函數(shù)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-472958.html
感謝你的點(diǎn)贊和轉(zhuǎn)發(fā),讓我更新更有動(dòng)力文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-472958.html
到了這里,關(guān)于第八篇:強(qiáng)化學(xué)習(xí)值迭代及代碼實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!