treeselect 多选 值回显_4.4 值迭代

上一节中我们讲了策略迭代。它有两个循环,一个是在策略估计的时候,为了求当前策略的值函数需要迭代很多次。另外一个是外面的大循环,就是策略评估,策略提升这个循环。我们不禁要问:真的需要这么多次迭代吗?我们真的需要求得值函数的精确解吗?为了回答这个问题,我们先看一个例子。

这个例子就是网格世界问题。我们只看其中一次的策略评估过程。利用策略评估中值函数的更新公式,我们得到每次迭代后的值函数和对应的策略如下所示:

49ab253a-f917-eb11-8da9-e4434bdf6706.png

很大时,值函数收敛了,如最后一行所示。但是你们有没有发现,当
之后,策略就保持不变了(图中箭头分布完全一样)。换句话说,
迭代3轮后执行策略提升和迭代
轮后得到的策略是一样的(
出现这种情况的原因可以简单的理解为:决策的时候只关注状态值的相对大小,而不是绝对值 。注意这里每迭代一轮表示所有的状态
的“值”都更新一次。书中用sweep一词,可以理解为所有状态扫一遍。这也是我们用迭代多少“轮”而不是多少“次”的原因。因为说迭代多少次容易误解为有多少个状态被更新了。

值迭代算法

上面的例子启发我们可以缩减策略评估过程中迭代的次数。那么一个特殊的情况就是我们只执行一次迭代(所有状态更新一次)。这就是值迭代算法。在值迭代中,我们只更新值函数,而没有中间策略提升的环节。它的值函数更新公式如下:

这个公式直接一看,我们就发现这不就是贝尔曼最优方程的迭代形式吗?根据前面的内容,这个迭代一定收敛到最优的值函数

,对应的我们就得到了最优策略。

另一种理解这个表达式的思路是(自己的理解):它结合策略提升和策略评估两个过程。为什么这么说呢?因为(4.10)与正常策略评估的区别是多了在动作

上的最大化操作。你可以假想有一个确定性策略,它每次选择贪婪的选择动作。所以
其实代表了策略提升,
代表了只执行一轮迭代的策略评估。这样不就是综合两个过程了嘛。受到这个启发,我们还可以在一轮值迭代中执行多轮策略评估。表现出来就是执行若干轮
更新,然后执行一轮
更新。往往这种更新方式收敛更快。我们把所有这类方法叫做
截断策略迭代算法(truncated policy iteration)。从名字就可以看出它和策略迭代很像,只是缩减策略评估的迭代轮数。并且把两个过程融合成了一个更新表达式。

伪代码

4dab253a-f917-eb11-8da9-e4434bdf6706.png

过程很简单,核心就是根据(4.10)求最优值函数,然后最优策略就是针对最优值函数的贪婪策略。

关于值迭代算法和策略迭代算法的深入比较,什么时候用值迭代,什么时候用策略迭代?本人目前也没有深入研究。但是貌似是有说道的,后续看到了再补充。也欢迎大家赐教。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值