强化学习中,值迭代(value iteration)和策略迭代(policy iteration),Truncated policy iteration区别的理解

在B站上看到教程里面说值迭代和策略迭代是Truncated policy iteration的两个特殊情况,这里我想说下我的理解。

首先是概念:

  • action value,是state value v(s)、状态s、动作a的函数,表示了从state s出发,采取动作a可以获得多少return。action value的表现形式:

    • 第一项表示了在状态s,采取动作a以后获得的reward的期望,这个是s和a的函数,和策略无关
    • gamma是discounted rate是一个常数
    • v(s’) 表示的是状态s’ 的state value
  • state value: v(s)指的是从状态s出发可以获得的return,可以使用action value和策略pi表示。
    在这里插入图片描述

总结就是:

  1. action value只需要前一个状态的state value就可以算出来
  2. state value可以用action value和策略pi 算出来。

在这里插入图片描述

对于值迭代:

  1. 根据v(s)计算出了所有的action 对应的action value q(s)
  2. 根据q(s’)更新了一个v(s)
  3. 根据q(s’)选择了pi,直接选择q(s’)最大的那个action
  4. 继续1

下面是书上的算法:
在这里插入图片描述
可以看出书上省略了更新pi的步骤,而Loop中关键的一步:在这里插入图片描述

其实可以看成两步:

  1. 先根据v算出了action value q, 就是r+gammaV(s’)
  2. 使用q更新了v,而这正是上面图中的1,2两步

下面是策略迭代:

  1. 第一步分为2小步
    1. 根据v计算出一个q
    2. 根据q和pi更新了v
    3. 返回1.1,直到v不变
  2. 根据q更新pi
  3. 返回1

看下书上的:

在这里插入图片描述
第二步的loop里面就是上面的第一步里面不断迭代更新v,第3步就是根据q更新pi,和上面的第二步相同。

总结:

  • 值迭代的过程是: v->q->pi->v->q->pi->v->q->…,
  • 策略迭代的过程是:v->q->v->q->v->q->pi->v->q->v->q->pi->…

也就是说:

  • 值迭代是一次v->q就更新了策略pi,
  • 策略迭代是v->q->v->q这样迭代了若干次,直到v收敛才更新pi,理论上需要迭代无数次,
  • Truncated policy iteration指的是不需要更新到v收敛,v->q迭代若干次就更新pi。

猜你喜欢

转载自blog.csdn.net/HGGshiwo/article/details/129000291