我正在尝试为“3×4有风的网格世界”MDP实现值迭代,并且在理解Bellman方程及其实现方面遇到了困难。
我正在使用的Bellman方程形式如下
假设这是我正在处理的网格世界,我想找到标记为X的瓷砖的值(U(s)
)。
(图片快照来自这个视频)
除了终止瓷砖外,所有瓷砖的奖励都被定义为零,并且还假设如果一个人试图朝某个方向移动,实际移动可能会以小概率发生在与预定移动成直角的方向上。(如果您试图从x向下移动,您将以0.8的概率向下移动,但以0.1的概率向左或向右移动)
现在,当您尝试为位置x解开Bellman方程时,对于“向上”动作,有三个邻居(U(s')
)。原始位置本身(因为它无法向上移动)以0.8的概率,它右侧的+1状态以0.1的概率,以及它左侧的瓷砖也以0.1的概率。这些构成了s'
状态。
因此,一个查找状态X值的函数将递归调用所有s'
状态。+1状态不是问题,因为它是一个终止瓷砖,这将构成基础情况。但其中一个状态是原始状态X本身,我不明白这种情况在递归调用中如何终止。同样的问题也适用于第三个瓷砖;在调用了它的所有邻居之后,它是否会终止?
回答:
值迭代本身不会终止;只要γ < 1 且奖励不是无限的,它就会渐进地收敛到正确的值。
在实践中,您可以在折扣项(在每次递归级别上以γ指数增长)变得如此之小时终止,继续计算下一个U(s')
将不会对您已经累积的值产生影响。