深度强化学习算法与实践:基于PyTorch的实现
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.3.2 价值迭代

根据前文所述,所谓策略迭代,应该是一系列交替的策略评估(P)和策略优化过程(I),即。最后收敛的结果即为最优的策略π和对应的最优状态价值函数V。由于每个策略迭代的步骤包含两个子步骤,特别是在策略评估的步骤中需要遍历所有的状态,并且让对应的状态价值函数迭代收敛,整个策略迭代的算法需要耗费大量的时间。在实际中,策略评估这一部分往往并不需要多次迭代,直到所有的状态价值函数的值收敛。在这种情况下,迭代的公式如式(2.11)所示。

其中,Vks)是第k步迭代时的状态价值函数。从式(2.11)中可以观察到,这里略去了根据某一固定的策略反复进行迭代来获取准确的状态价值函数的过程,直接从上一步的状态价值函数中获得下一步迭代的状态价值函数,对应的策略也是前面介绍的贪心策略,直接选取可能获得最大奖励的动作作为下一步的动作。可以证明,使用式(2.11)的情况下,最后状态价值函数也可以收敛,而且最终收敛的状态价值函数和贪心策略与前面的策略迭代算法收敛得到的最优状态价值函数和最优策略一致。

在价值迭代的计算过程中,因为只进行一次策略评估和策略优化,所以相对于策略迭代大大缩减了时间的开销,但是价值迭代算法本身也有一定的缺点。由于在价值迭代过程中策略评估只进行了一次,当前的价值函数和策略往往是不匹配的,这就会造成算法相对于策略迭代算法往往需要更多的策略优化步骤来收敛。不过因为每一步的计算策略都有提高,而且最后状态价值函数的不动点和策略迭代算法得到的不动点是一个不动点,价值迭代算法最终还是能够收敛的。这里的策略迭代算法和价值迭代算法可以看作两个极端,一个策略评估的目标是状态价值函数收敛,从而达到每一步迭代中状态价值函数和策略相互适配的结果;另一个则是每次只对状态价值函数做一个粗略的估计,让策略和状态价值函数在迭代中逐渐相互适配,最后算法收敛。

总的来说,就是策略评估(可以是单步迭代,对应价值迭代算法,也可以趋向于无穷,对应策略迭代算法)和策略优化之间的相互迭代。策略评估和策略优化代表两个方向,策略评估的方向是为了让状态价值函数尽可能适配当前的策略,但是对应的策略可能会因为状态价值函数的改变而变得不再是最优的策略;而策略优化的方向是为了让策略尽可能变得最优,这同样会反过来影响对应的状态价值函数,让状态价值函数的估计变得不准确。当然,最终的收敛结果是状态价值函数和策略相互适配,都达到最优的状态。事实上,所有的强化学习算法都可以放入这个框架中,一般来说,强化学习算法在迭代过程中都会对价值函数和策略进行迭代。在基于价值(Value-based)的算法中,隐含的策略一般是贪心策略或者ϵ-贪心策略,用一个模型来拟合状态价值函数或者动作-状态价值函数;而在基于策略(Policy-based)的算法中,一般会有两个模型,一个模型拟合状态价值函数或者动作-状态价值函数,另外一个模型可以作为当前的策略,预测给定状态下的动作。无论是哪种算法,都有对于状态价值函数的不断优化,同时在状态价值函数改变之后,对应的策略也会不断改变,最后到达平衡,从而算法收敛。