[强化学习-2] DP-值估计和策略控制

版权声明:本文为博主原创文章,如若转载,请注明出处! https://blog.csdn.net/u013010889/article/details/81943628

上一篇博客讲了强化学习中的几个基本概念,其中推导的贝尔曼方程是一个很重要的部分。在上一篇博客里也说过MRP里的贝尔曼方程可以通过求解矩阵直接得到收敛后的state-value function,但是计算复杂度高,我们这节采用动态规划的方式求解

值估计

值估计就是预测问题,策略估计就是给定该策略后,估计所有状态的价值即估计状态值函数v(s)
定义:MRP或者给定策略π的MDP,求出状态价值函数 v ( s ) / v π ( s )
例子:出界返回原位置reward为-1,AB两点特殊对待,其他位置移动reward为0,γ为0.9,策略给定: 每个位置(状态)上下左右随机
这里写图片描述
解答:
1. 根据贝尔曼方程,求解矩阵,时间复杂度太高了
2. 动态规划: 比如初始V都设为0,然后根据下面公式进行迭代,知道V收敛不变
这里写图片描述
检验: 3.3: 1/4(-1+3.3*0.9)*2 + 1/4(8.8*0.9) + 1/4(1.5*0.9) = 3.3 确实已经收敛了

策略控制问题

定义:MDP中,求出最优状态价值函数 v ( s ) 和最优动作价值函数 π ( s )

策略迭代

  1. 初始化: 随机初始化状态价值函数 v ( s ) 和动作价值函数 π ( s )
  2. 策略估计: 利用贝尔曼公式 v π ( s ) ,迭代直到 v π ( s ) 收敛
  3. 策略提升: 根据贪心原则选取使 v ( s ) 最大的策略
  4. 直至动作价值函数 π ( s ) 收敛,不发生改变

例子:
这个例子表明策略估值未收敛时(第3轮、第10轮)和最后收敛时(无穷轮),所对应的贪心策略是一样的,所以说可以提前结束策略估值进行策略提升,没必要到收敛后再进行策略提升选取最优策略

注意:这6个表格都是给定随机选取4个动作的策略下,进行策略估值的迭代,比如第2轮的-1.7=((0+-1+-1+-1)+-4) / 4,还是随机动作,没有按照右边的贪心策略算,我之前就理解错了

One drawback to policy iteration is that each of its iterations involves policy evaluation, which may itself be a protracted iterative computation requiring multiple sweeps through the state set. If policy evaluation is done iteratively, then convergence exactly to vπ occurs only in the limit. Must we wait for exact convergence, or can we stop short of that? The example in Figure 4.1 certainly suggests that it may be possible to truncate policy evaluation. In that example,

这里写图片描述

值迭代

  1. 初始化: 随机初始化状态价值函数 v ( s )
  2. 直接选取使当前状态值函数 v ( s ) 最大的动作更新 v ( s )
  3. 直至状态价值函数 v ( s ) 收敛,不发生改变
  4. 根据收敛的 v ( s ) 得到 π ( s )

它简化了策略迭代中策略估计的步骤,不需要收敛而只迭代了一步,在当前某个状态下,只需要对每个可能的动作a都计算一下采取这个动作后到达的下一个状态的期望价值,然后直接选择其中一个最大的值作为当前状态的估值

没有了显式的策略更新,其实在更新当前某个状态值函数时已经更新了策略

区别

In fact, the policy evaluation step of policy iteration can be truncated in several ways without losing the convergence guarantees of policy iteration. One important special case is when policy evaluation is stopped after just one sweep (one update of each state). This algorithm is called value iteration.

这里写图片描述

策略迭代分为两步:策略估值和策略提升,策略估值时必须使得状态值函数迭代到收敛才能进入下一步进行策略提升,
而值迭代时,其实也是策略估值和策略提升,只是由于策略估值简化了才使得两步合并起来了,具体就是在策略估值时状态值函数只迭代一次,不需要收敛,因此在当前某个状态下,只需要对每个可能的动作a都计算一下采取这个动作后到达的下一个状态的期望价值,然后直接选择其中一个最大的值作为当前状态的估值。

所以策略迭代的收敛速度更快一些,在状态空间较小时,最好选用策略迭代方法(先让状态值函数收敛,再更新策略)。当状态空间较大时,值迭代的计算量更小一些(状态空间太大了,如果采用策略迭代,策略估值时每次都要迭代到收敛太慢了)。

总结

这里写图片描述

  1. 动态规划方法只不过是把贝尔曼方程转变为更新规则: 四个贝尔曼方程对应着四个更新规则 ( v π , v , q π , q )
  2. 动态规划方法是一种“自举”(bootstrapping)方法: 当前函数的更新依赖于已知的其他函数
  3. 优势:动态规划方法计算效率高
  4. 缺点:动态规划方法需要知道关于环境的完整模型

猜你喜欢

转载自blog.csdn.net/u013010889/article/details/81943628