前置知识:强化学习入门、Deep Q-Learning
策略梯度算法
策略梯度(Policy Gradient)
基于价值(Value Based)方法的局限性:
- 离散动作空间,难以处理连续或高维的动作空间
- 受限状态下的问题,可能不存在基于价值的最优解
- 基于最大价值的策略为确定性策略,不适合随机策略问题
基于策略的方法能在一定程度上解决以上三个问题
策略函数与目标
定义策略 $\pi$ 是一个包含参数 $\theta$ 的函数: $$ \pi_{\theta}(s,a) = P(a|s,\theta)\approx \pi(a|s) $$
对策略进行参数化后,再设计策略函数的优化目标;即可使用梯度下降等方法更新策略的参数,从而根据策略函数找到特定状态下的最佳动作
策略函数的优化目标设计思路
- 当初始状态确定时,可以最大化初始状态下的期望回报
- 当初始状态不确定时,可以最大化不同状态下的平均期望回报
- 也可以从动作的角度出发,最大化每一个时间步下的平均奖励
假设目标函数为 $J$,则策略参数 $\theta$ 的梯度计算可表示为: $$ \nabla_{\theta} J(\theta) = \mathbb{E}_{\pi_{\theta}}[\nabla_{\theta}log \pi_{\theta}(s,a) Q_{\pi}(s,a)] $$
- 其中 $\nabla_{\theta}log \pi_{\theta}(s,a)$ 取决于具体策略函数形式
- $Q_{\pi}(s,a)$ 则表示策略价值,也可以近似为状态价值 $v(s)$
$\nabla_{\theta}log \pi_{\theta}(s,a)$ 一般被称为分值函数(score function)
策略函数的一般形式
对于离散策略,策略函数的形式一般为 softmax 函数: $$ \pi_{\theta}(s,a) = \frac{e^{\phi(s,a)^T\theta}}{\sum\limits_be^{\phi(s,b)^T\theta}} $$
- 其中 $\phi(s,a)$ 表示包含状态 $s$ 和行为 $a$ 信息的特征向量
- 参数 $\theta$ 通过不同特征的线性组合,来描述行为 $a$ 的发生概率
- 该策略函数对应的分值函数为 $\nabla_{\theta}log \pi_{\theta}(s,a) = \phi(s,a) - \mathbb{E}{\pi{\theta}}[\phi(s,.)]$
对于连续策略,策略输出的行为概率一般从正态分布中产生: $$ \pi_{\theta}(s,a)~\mathbb{N(\phi(s)^T\theta, \sigma^2)} $$
- 该策略函数对应的分值函数为 $\nabla_{\theta}log \pi_{\theta}(s,a) = \frac{(a-\phi(s)^T\theta)\phi(s)}{\sigma^2}$
REINFORCE 策略梯度
前置知识:蒙特卡洛法
REINFORCE 是一种基于蒙特卡洛方法的简单策略梯度算法
REINFORCE 的算法过程:
- 初始化策略函数的参数 $\theta$
- 通过蒙特卡洛方法采样得到长度为 $T$ 的完整序列/轨迹
- 时刻 $t$ 的状态为 $s_t$,动作为 $a_{t}$,期望回报用状态价值 $v_{t}$ 近似
- 对序列/轨迹中的每一个时刻,进行策略参数的更新 $$
\theta = \theta + \alpha \nabla_{\theta}log \pi_{\theta}(s_t,a_t) v_{t} $$ 5. 重复步骤 2~4 过程 N 次,得到更新后的策略函数
在REINFORCE 的实际应用中,价值函数的计算,一般是从后向前算,这样前面的价值的计算可以利用后面的价值作为中间结果,简化计算
REINFORCE 总结:
- 将策略与环境直接交互,并根据采样后的序列/轨迹来更新策略
- REINFORCE 追求策略的期望回报最大化,该算法理论上保证局部最优
- REINFORCE 的梯度估计方差较大,容易导致算法结果的不稳定
将基于策略的学习与基于价值的学习结合,是一种更常见的强化学习方法