![深度强化学习核心算法与应用](https://wfqqreader-1252317822.image.myqcloud.com/cover/223/40795223/b_40795223.jpg)
1.6 策略迭代与值迭代
那么通常用什么方法找到最优策略呢?从理论上来说,如果我们能够知道环境的运行规律,能够对环境建模,同时计算资源足够多,就可以用动态规划的方法来解决优化问题。其中最经典的就是策略迭代(Policy Iteration)和值迭代(Value Itereation)的方法。
策略迭代的方法很简单。假设随机找了一个策略,我们可以用这个策略来得到该策略对应的值函数,然后基于该值函数,可以去找到更好的策略;再通过一轮一轮的迭代,让最后的算法收敛。这两个过程分布就是策略评估(Policy Evaluation)和策略提升(Policy Improvement)。整个算法过程如下。
(1)初始化一个策略π和所有状态下的V值:v(s);
(2)在策略评估阶段,先基于现有的策略π给每个状态更新v(s),直到更新前后的v值不再改变。如式(1.15)所示,更新后的第i+1轮迭代的v i+1(s)和更新前的第i轮迭代的v i的值不再改变,就说明完成了策略评估;
![](https://epubservercos.yuewen.com/C90FAD/21190709108534506/epubprivate/OEBPS/Images/txt002_11.jpg?sign=1738882481-etg1utFS56mARshXruo0bDOV2ONcpHEj-0-97ea4cc4c37c924d30e4fe5d2e7f0373)
(3)在策略提升阶段,基于上一步得到的新的V值,更新我们的策略;
![](https://epubservercos.yuewen.com/C90FAD/21190709108534506/epubprivate/OEBPS/Images/txt002_12.jpg?sign=1738882481-4DV6HhECxsSztWnhF8upznATtrYw6OOD-0-e81d7ea21da9befb78ec0eedcf2b55f0)
(4)如果策略更新了,就继续执行第(2)步。如果策略不再更新,就得到了解答。
可以看到,策略迭代是依照贝尔曼方程来进行迭代的。另外一个思路就是直接根据贝尔曼最优方程来进行迭代,也就是值迭代的方法。
![](https://epubservercos.yuewen.com/C90FAD/21190709108534506/epubprivate/OEBPS/Images/txt002_13.jpg?sign=1738882481-VrhnyuFzdfuCaPXl0MNQ8kPsJAiL5psj-0-30332f694a5d0794cf485b59606dd8b9)
那么这个π*是怎么得到的呢?就是通过选取使上式中V值最大的动作得到,即
![](https://epubservercos.yuewen.com/C90FAD/21190709108534506/epubprivate/OEBPS/Images/txt002_14.jpg?sign=1738882481-CD3gJBEnodr6ocrPi73xR3VxU0AKirIX-0-f2f0ea5d86f64df8fbb659de2b0db7e1)
可以看到,值迭代在每一步计算值函数的时候,没有使用一个具体的策略去迭代更新,而是直接计算当前状态下每个动作的回报的期望。这两种方法的差异也一直贯穿整个强化学习的发展,后续不管是同策略还是异策略、值迭代还是策略迭代,都可以回溯到这里,或者更根本的贝尔曼方程。本质上,策略迭代和值迭代是一致的:策略迭代对于值函数的计算更加精确,一步一步逼近最优解;值迭代只是使用了值函数的一个期望,因此效率会更高一些。
但是,整体来说,这两种方法都依赖于状态转移概率p(s′|s,a),它在很多情况下都是不可知的。通常我们要能够对环境进行建模,才能得到这个概率。当然,现在也有很多人研究怎么从与环境的交互中学到模型,比如World Models的方法。现在大多数流行的方法如DQN、A3C、PPO等,都是无模型的(Model Free),我们在后续章节中会分别介绍。