我将在这里向您展示一个示例来解释这个想法。希望能帮助到你。有关详细信息,请参阅幻灯片。
问题:
这是一个经典的问题,称为Tile World
.
- 二维网格世界,其中我们有一个代理、瓷砖、障碍物和洞。
- 代理可以在四个方向(上、下、左、右)移动,如果它位于瓷砖旁边,它可以将其推向适当的方向。
- 孔必须由代理填充瓷砖。
- 目的是用瓷砖填充所有孔。
环境状态
可以使用以下变量来描述环境的状态:
- 代理当前位置
(a_x, a_y)
- 四个瓦片的当前位置
(t1_x, t1_y)
, (t2_x, t2_y)
, (t3_x, t3_y)
,(t4_x, t4_y)
状态转移
假设在当前状态下,如果代理将其下方的图块向下推,则系统状态转移到下一个状态,在该状态下,除了代理的当前位置和被推动的图块的位置之外,每个变量都保持不变。
实用功能
我们的效用函数可以定义为被填充的孔的百分比,即
# of holes filled
u = -------------------------
# of total holes
很明显:
- 如果代理填补了所有漏洞,效用 = 1
- 如果代理填充零个孔,效用 = 0
关联效用函数
现在看看下面的两种状态。
很容易看出:
- 两种状态具有相同的效用值,即
1/3
(因为填充了 3 个孔中的 1 个)
- 左侧(状态
s1
)是死角,您无法将所有瓷砖移入孔中
- 右侧(状态
s2
)是一个很好的位置,您可以选择将剩余的两个瓷砖移动到孔中。
所以结论是:
如果您只将效用函数与本地状态相关联,例如u(s1)
或u(s2)
,您实际上无法区分效用方面的差异。u(s1)=u(s2)=1/3
.
您需要对可以用run表示的状态的全局或长期视图,这是一系列交错的环境状态和代理采取的操作。
您可以不将实用程序分配给单个状态,而是分配给运行。这种方法具有固有的长远眼光。
u: 运行 -> 实际值
在此设置中,代理的最佳策略是最大化预期效用,这并不意味着它会是最好的,但平均而言我们可以期望它做得最好。
预期效用 = ( u(r) x Prob(r) ) 的总和
请参阅您提到的书或相应的幻灯片以获取更多详细信息。