treeselect 多选 值回显_策略迭代(Policy Iteration)和值迭代(Value Iteration)

本文是对Reinforcement Learning An Introduction (2nd edition) 第4.3和4.4小节的总结。

主要内容:

  • 什么是策略迭代
  • 什么是值迭代
  • 策略迭代与值迭代之间的关系
  • 策略迭代与值迭代的对比

什么是策略迭代

策略迭代包括策略评估(policy evaluation)和策略提升(policy improvement)。

策略评估本身也是迭代运算。每次进行策略评估时,值函数(value function)的初始值是上一个策略(policy)的值函数。这通常会显著提高策略评估的收敛速度(猜测可能因为相邻两个策略的值函数改变很小)。

54aa253a-f917-eb11-8da9-e4434bdf6706.png

说明:

  • 使用迭代策略评估
  • 第2步第6行值函数更新时没有
    ​,因为这里的策略是确定性策略(deterministic policy),每个状态与动作是一一对应的,所以​
  • 第2步第7行保存所有状态对应的
    ​的最大值,如果​
    满足条件,那么所有状态的值函数都满足该条件
  • 第3步第5行也说明策略​
    是确定性策略
  • 策略评估时根据策略
    选择动作,策略提升时基于收敛的值函数根据
    选择动作,策略提升得到的策略与之前的策略不一定相同

令人惊讶的是策略迭代通常只需要很少的几次迭代即可收敛!

什么是值迭代

策略迭代存在一个问题:每次迭代都需要进行策略评估,而策略评估本身可能需要多次迭代才能收敛。

是否可以提前结束策略评估呢?

先看一下gridworld的例子(参考原书Example 4.1和Figure 4.1):

55aa253a-f917-eb11-8da9-e4434bdf6706.png

左边的表格为等概率随机策略的值函数,右边的表格为值函数对应的贪婪策略(greedy policy)。

从上图可以看出,第三步开始已经得到了最优策略(optimal policy),虽然值函数还没有收敛!

实际上,策略评估中迭代过程的提前终止,不会影响策略迭代的收敛!有多种方法实现策略评估的提前终止,其中最重要的一种就是值迭代算法。

值迭代算法是策略评估过程只进行一次迭代的策略迭代算法。

57aa253a-f917-eb11-8da9-e4434bdf6706.png

下面从策略迭代的角度分析值迭代,上图中内层Loop循环的值函数更新可以拆分为两步:

  1. 策略提升:根据更新前的值函数进行策略提升,得到贪婪策略
  2. 策略评估:根据贪婪策略选择状态s下的贪婪动作(greedy action)a对应的值(value),更新s对应的值函数

值迭代方法将上述两个过程在一个公式中实现了。

如果从另一个角度理解值迭代,第5行的公式其实就是贝尔曼最优公式(Bellman Optimality Equation),值迭代算法将其作为了值函数更新公式。

策略迭代与值迭代之间的关系

值迭代算法是策略评估过程只进行一次迭代的策略迭代算法。

策略迭代与值迭代的对比

从运算量角度看,值迭代方法中策略评估只需要一次迭代,需要的运算量更小,应该比策略迭代更快收敛。

但是,通常在策略提升中间插入需要多次迭代的策略评估的算法,收敛的更快!

我认为这可能与值迭代算法的终止条件有关。值迭代算法的终止条件对象为值函数,策略迭代算法的终止条件对象为策略,结合之前gridworld中观察的现象(策略可能比值函数收敛的更快),所以策略迭代可能比值迭代更快收敛。

那么问题来了:是否可以修改值迭代的终止条件对象也为策略,从而加快值迭代的收敛速度呢?

我认为不能。原因:对于值迭代,如果终止条件对象为策略,当策略满足终止条件时,可能无法保证策略是最优的(不确定该结论是否正确)!而对于策略迭代,当策略满足终止条件时,因为策略对应的值函数已经收敛,可以保证策略是最优的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值