首页摘要:
基于值函数近似的方法,例如Deep Q-learning,存在无法处理连续动作的缺点。因此,策略梯度方法被提出来解决这个问题。本文主要从策略梯度的推导、策略梯度算法框架两个方面来进行介绍。
策略梯度的计算
Deep learning方法主要存在如下几点不足:
(1)无法处理连续动作。因为其样本目标$q$值的计算涉及到求取最大$q$值的动作,如果动作是连续的,则无法求取。
(2)无法处理随机策略问题,从而可能错过最优解。同样地,其样本目标$q$值的计算涉及到贪婪法$max$,无法应用$\epsilon -greedy$随机策略。
因此我们试图对策略求取梯度,找到最优策略,同时这样也能处理连续状态和连续动作。大概做法是采用神经网络(我们称这个网络为actor网络,表示选择动作的策略网络),输入为状态$S$,输出为策略$\pi$。假设该神经网络参数为$\theta$,那么策略可以表示成$\pi_{\theta}$。很自然的是,我们希望策略$\pi_{\theta}$下得到的回报(reward)越大越好,因此目标为:
对于上式的解释,可以用下图来进行解释。在策略$\pi_{\theta}$下(注意因为这是随机策略)一个可能的包含动作和状态的序列$\tau$中,所有时刻的奖励之和为:$r(\tau)=r_{1}+r_{2}+…+r_{T}$,其中$T$为序列长度,假设$p_{\theta}(a_{t}|s_{t})$为时刻t时在状态$s_{t}$采取动作$a_{t}$的概率,因此该序列的概率$\tau$是$p_{\theta}(\pi_{\tau})=p_{\theta}(s_{1})\prod_{t=1}^{T}p_{\theta}(a_{i}|s_{i})p_{\theta}(s_{i+1}|a_{i}s_{i})$。
那么,$\bar{r}_{\theta}$可以表示成:
为了使其最大化,可以利用梯度上升的方法进行优化,取其梯度得到:
根据公式$\nabla f(x)=f(x)\nabla log(f(x))$,上式可以转换为:
上式等价于:
在实际应用中,我们通过大量抽取$N$个样本来近似上式:
对状态动作序列$\tau$中每一步奖励求和得到:
在这个公式下我们知道,我们希望奖励越大的动作其概率的增加$\nabla log\ p_{\theta}(a_{t}^{n}|s_{t}^{n})$越大,但是当奖励都为正的情况下,如果一直没有采样到奖励最大的动作,那么其他动作的概率都上升了之后,由于所有动作之和为1,那么奖励最大的动作必然下降。因此,我们考虑对奖励项$r(\tau^{n})$减去一个基准(baseline),这个baseline取$r(\tau^{n})$的期望$E[r(\tau)]$,这样做的好处是使得奖励最小的动作概率会下降(因为算法总是希望$\bar{r}_{\theta}$大于0),也就是说,这样可以尽量避免采取奖励小的动作。那么,公式可以改写成:
进一步,对于每个样本而言,想象它是在线运行,当采取一个动作时,它的回报$r(\tau^{n})$和前面时刻动作无关,而后续时刻的奖励则应该打个折扣,因此$r(\tau^{n})$可以写成$G(\tau^{n})=\sum_{t^{\prime}=t}^{T_{n}} \gamma^{t^{\prime}-t} r_{t^{\prime}}^{n}$的形式,其实这个就是动作价值函数$Q^{\pi_{\theta}}\left(s_{t}^{n}, a_{t}^{n}\right)$,综上所述,回报的梯度可以表示成:
策略函数的设计
(1)考虑离散动作,可以将策略$p_{\theta}(a|s)=\pi_{\theta}(s,a)$设计为:
其中,$\phi(\cdot )$是神经网络表征的函数。那么可以求其梯度:
(2)考虑连续动作,可以将动作的概率分布视为高斯分布$\mathbb{N}\left(\phi(\mathrm{s})^{\mathrm{T}} \theta, \sigma^{2}\right)$那么策略概率的微分为:
蒙特卡洛方法下的策略梯度算法
本节为了理解策略梯度,利用最简单的蒙特卡洛方法来说明策略梯度算法是如何应用的。在这里,我们采用价值函数$V(s_{t}^{n})$来代替策略梯度公式中的动作价值函数$Q^{\pi_{\theta}}\left(s_{t}^{n}, a_{t}^{n}\right)$,详细流程如下:
输入:N个蒙特卡罗完整序列,训练步长$\alpha$
输出:策略函数的参数$\theta$
(1)用蒙特卡罗法计算每个序列每个时间位置$t$的状态价值$V(s_{t}^{n})$
(2)对每个序列每个时间位置$t$ ,使用梯度上升法,更新策略函数的参数$\theta$:
(3)返回策略函数的参数θ
结语
至此,我们介绍完了策略梯度方法。从它的算法流程可以看出,除了可以对连续状态、连续动作操作之外,完美地继承了蒙特卡洛方法的缺点——需要等序列采样结束才能进行计算。因此下一篇文章着重介绍如何融合基于值函数近似和策略梯度的方法来解决这个问题。