深度强化学习核心算法与应用
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.3 值函数估计和策略搜索

在前面所述的蒙特卡罗方法和时间差分方法中,乃至动态规划方法中,我们都默认值函数是一个索引表。我们可以用s状态去获取对应的Q值。但是如果状态空间的维数很大,乃至状态空间为连续空间,那么值函数无法用列表法的方式来表示。这时,需要使用一些值函数估计的方法。

2.3.1 值函数估计

值函数估计通常是指用一个函数来估计值函数,这个函数的输入就是状态s,输出就是状态s对应的值。通常这个函数可以使用线性组合,神经网络以及其他方法。有了值函数,不仅可以解决列表法的问题,还同时可以估计出未知状态对应的V值。那么估计这个值函数也就是要找到该函数的一组参数θ,使得

同样,对于Q值也有

我们可以把sa都看成一个向量,然后把基于蒙特卡罗方法或者时间差分方法估计出来的Q值和V值作为真实的值,从而得到有标记的学习样本(s,a,v),就可以基于监督学习的方法来学习值函数fθ了。通常可以使用梯度下降(Gradient Descent)的方法来训练得到θ。具体的梯度下降方法不在这里赘述,后面讲述深度Q学习算法(DQN)的时候会更详细地说明。

2.3.2 策略搜索

基于价值函数的方法是先估计得到价值函数,然后直接依赖价值函数找到对应的最优策略。但是当实际的问题动作空间很大或者是连续的动作空间时,就很难根据价值函数得到下一步要做的动作。甚至更进一步,如果目标策略是一个随机策略,我们更加无法根据值函数来选取最优的动作。例如在石头剪刀布的例子中,最优策略应该是随机出任意一个动作,如果使用基于值函数的方法,可能就没办法收敛。因此,通常会使用基于策略的方法,直接搜索最优的策略。

策略搜索通常是用一个参数化的函数来表示策略πs,a|θ),然后寻找一个最优的参数θ,使基于该策略的累计回报的期望最大。通常我们会使用策略梯度类方法(policy gradient method)求解这个最优的参数。首先,优化目标是最大化累计回报:

其中ρπs)是策略π的状态密度函数,表示在策略π下出现状态s的期望。当我们使用策略梯度的方法来求解式(2.22)的时候,需要对Jθ)进行求导:

可以看到,Jθ)的梯度是和ρπs)无关的,具体的推导过程不再赘述。这时候利用公式img,可以将式(2.23)写成以下的形式:

这里还需要估计Qπs,a),可以用前述的蒙特卡罗或者时间差分的方法进行估计,然后便可以更新θ值:

可以看到,策略梯度的方法仍然涉及价值函数的估计。而基于策略的和基于值函数的方法最大的区别其实在于:最后的策略是基于参数的,还是直接从值函数中得到的。如果用时间差分的方法来估计价值函数,就可以得到一类应用得很广泛的强化学习算法:演员和批评家算法(Actor-Critic)。在本书后面的章节中会详细讲述该类算法。