策略梯度算法

前置知识:强化学习入门Deep Q-Learning

策略梯度算法

策略梯度(Policy Gradient)

  • 一种基于策略(Policy Based)的基础强化学习方法
  • 区分与 TDDQN 等基于价值(Value Based)的方法
  • 策略梯度是一种在线算法,其依赖当前策略采样到的经验数据

基于价值(Value Based)方法的局限性:

  1. 离散动作空间,难以处理连续或高维的动作空间
  2. 受限状态下的问题,可能不存在基于价值的最优解
  3. 基于最大价值的策略为确定性策略,不适合随机策略问题

基于策略的方法能在一定程度上解决以上三个问题

策略函数与目标

定义策略 $\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 的算法过程:

  1. 初始化策略函数的参数 $\theta$
  2. 通过蒙特卡洛方法采样得到长度为 $T$ 的完整序列/轨迹
  3. 时刻 $t$ 的状态为 $s_t$,动作为 $a_{t}$,期望回报用状态价值 $v_{t}$ 近似
  4. 对序列/轨迹中的每一个时刻,进行策略参数的更新 $$

\theta = \theta + \alpha \nabla_{\theta}log \pi_{\theta}(s_t,a_t) v_{t} $$ 5. 重复步骤 2~4 过程 N 次,得到更新后的策略函数

在REINFORCE 的实际应用中,价值函数的计算,一般是从后向前算,这样前面的价值的计算可以利用后面的价值作为中间结果,简化计算

REINFORCE 总结:

  • 将策略与环境直接交互,并根据采样后的序列/轨迹来更新策略
  • REINFORCE 追求策略的期望回报最大化,该算法理论上保证局部最优
  • REINFORCE 的梯度估计方差较大,容易导致算法结果的不稳定

将基于策略的学习与基于价值的学习结合,是一种更常见的强化学习方法

往年同期文章