2.3.1 策略迭代

前面介绍了强化学习中的相关策略,以及这些策略的简单应用。下面讨论一下在实际的强化学习算法中,策略和对应的状态价值函数如何进行迭代,并且最终收敛到最优的策略上。在前面介绍的算法过程中,因为对应的策略是贪心(或者ϵ-贪心)策略,而这个策略是依赖于对应环境的状态价值函数的,因此在整个迭代过程中,策略迭代和价值迭代是一起进行的。现在把策略推广到任意策略,从而给出策略迭代(Policy Iteration)的概念。在式(2.3)中已经看到,所谓策略,其实就是一个条件概率πa|s),代表当智能体处于状态s的情况下,采取动作a的概率。固定了策略π,即代表πa|s)的概率不变。当然在实际的算法中,为了能够让智能体获取尽可能多的奖励,需要考虑对策略进行逐步迭代,让策略在每一步上有提高,最后达到让策略收敛到最优策略的目的。这个过程被称为策略迭代。

为了能够对策略进行优化,要做的第一件事情是评估一个策略的好坏,即所谓的策略评估(Policy Evaluation)。一个直观评价策略好坏的方法就是计算给定策略下的价值函数。这个可以通过迭代使用式(2.3)完成。通过计算在策略πa|s)下状态价值函数的期望,让两次迭代的价值函数最大差值小于给定的标准,就可以得到在策略πa|s)下的价值函数Vs)。

这里简单介绍一下算法的细节,在算法的初始化过程中,首先会给定一个初始的状态价值函数。这个状态价值函数在状态比较少的情况下可以用一个数组来穷举所有的状态价值函数,我们称之为表格法(Tabular Method),在初始状态下所有的状态价值函数的值可以设置为0。在状态比较多,甚至连续状态的情况下可以使用深度强化学习算法(使用深度强化学习算法对应估计状态价值函数的神经网络可以初始化为随机权重的神经网络),这样神经网络输出的值也是随机值,并且会在优化迭代过程中逐步逼近准确的价值函数。在这个初始状态价值函数的基础上,可以通过式(2.3)逐步修正状态价值函数的值,即使用蒙特卡洛算法反复利用条件概率策略πa|s)进行决策,并估算得到下一轮迭代的状态函数,直到最后的算法收敛,即可得到策略πa|s)下的状态价值函数Vs)。这个过程就相当于使用策略πa|s)来进行预测,因此也被称为预测(Prediction)过程。

在对策略进行估计以后,就可以使用估计的状态价值函数Vs)对策略进行优化了,这个过程被称为策略提高(Policy Improvement)。为了定义策略是如何提高的,需要有一个关于策略“好坏”的定义。为了有一个定量的概念衡量策略的好坏,首先需要定义策略的排序(Order)。根据2.1.2节所述的内容,我们称一个策略π优于另一个策略π,如果对于所有的状态s,都有状态价值函数Vπ′s)≥Vπs)成立。这个定义在直观上很好理解,因为状态价值函数在数学意义即为在某个状态下,未来可能获得回报的期望。在前面已经介绍过,回报的定义是带了折扣系数的奖励,因此状态价值函数越高,意味着智能体能够在未来获得的奖励越高。显然,一个策略优于另一个策略,当且仅当一个策略的状态价值函数在所有情况下都优于另一个策略的状态价值函数。策略排序的意义不仅在于给定了判断策略优劣的方法,也给出了策略提高的方向。假如智能体当前的决策并非最优,我们就会发现,对于所有的状态s,总存在某一个动作a′,相比于当前策略做出的决策a是动作-状态价值函数的值Qsa)>Qsa)。在这种情况下就可以修改智能体的策略,使得πa|s)>πa′|s),可以证明,使用这样的算法总可以提高当前的策略,直到最后的策略收敛,即对于策略提高的前后两个策略ππ′,对于所有的状态s,有状态价值函数Vπs)=Vπs)。在算法的实际实现过程中,可以简单地让策略选择具有最高奖励的动作,即式(2.10)。

如果使用的是深度强化学习的策略网络,则应该对网络进行梯度下降优化,增加获取较高奖励的动作的概率,同时减少获取较低奖励的动作的概率。需要注意的一点是,在更新了新的策略之后,因为状态价值函数和策略绑定,所以需要根据新的策略来估计新的状态价值函数,即进行新一轮的策略评估。