基于Policy的强化学习算法

在文章基于Value的强化学习算法中,介绍了Q-learning和SARSA两种经典的强化学习算法。在本篇文章中,将介绍一下基于Policy的经典强化学习算法——Policy Gradient。

Value-based的不足

  1. Value-based强化学习算法,是根据当前状态下的Q值来选取动作去执行。因此,一旦Q值表收敛,那么对于某一个状态 ,其选择的动作 将是唯一确定的,即确定性的策略。这就导致其无法解决最优策略是随机策略的强化学习问题,例如猜拳,每次都出锤子当然不是最优解,让对方猜不出的随机策略反而更好一些。

  2. 在受限状态下,Value-based算法表现的不是很好。由于观测手段或者其他一些原因,导致观测到的两个不同的状态却得到了同样的特征,导致选择的策略效果不好。例如猜拳的时候,同一对手在 时刻出了剪刀,在 时刻也出了剪刀,如果只考虑对手以及动作,那么在 时刻观察到的特征是一样的。然而,在 时刻对手不一定会出剪刀。

  3. 对于连续动作空间的强化学习问题的求解效果不好。因为Value-based算法的动作选择是在动作空间中选择 值最大的动作,所以需要输出动作空间中每一个动作的 值。因此,对于动作空间非常大的连续动作空间来说,评估每一个动作的 值的成本是非常大的。例如方向盘转的角度,随着转动精度的无限提高,动作空间可以趋近于无穷。

Policy Gradient

Policy-based算法的输入和Value-based一样,但是输出的是动作空间中每一个动作被选择的概率,换句话说,输出的是动作空间中动作被选择的概率分布。这时策略函数可以用如下公式表示,其中 是要训练的参数:

其优化目标有以下三种形式:

  1. 初始状态收获的期望:

  2. 状态收获的平均价值:,其中 是基于策略 生成的马尔可夫链关于状态的静态分布。

  3. 每个time-step的平均奖励:

无论哪种形式,根据策略定理,对 求导的梯度为:

其中 称为分值函数。

对于 ,在离散空间中常使用softmax函数,使用描述状态和行为的特征 与参数 的线性组合来权衡一个行为发生的几率,即:

在连续行为空间常用高斯函数,对应的行为从高斯分布 中产生,求导之后为:

对于目标函数的优化可以采用蒙特卡洛梯度策略算法,使用随机梯度上升法更新参数,使用策略梯度法返回 作为 的无偏估计。算法如下:

基于Policy的强化学习算法_第1张图片

首先初始化参数 ,之后对于每一个蒙特卡洛序列,做以下两步:

  1. 用蒙特卡洛计算序列每个时间位置 的状态价值

  2. 对序列每个时间位置 ,使用梯度上升法,更新策略函数的参数

最后返回策略函数的参数 ,这个策略函数可以是softmax,也可以是高斯策略或者其他策略。

Policy-based的不足

  1. Policy-based往往收敛于局部最优解而不是全局最优解。

  2. 由于其输出的是动作概率分布,需要基于这个分布对动作进行采样,当动作空间非常大时,成本也比较高。

关注【Java与Android技术栈】

更多精彩内容请关注扫码

你可能感兴趣的:(基于Policy的强化学习算法)