在文章基于Value的强化学习算法中,介绍了Q-learning和SARSA两种经典的强化学习算法。在本篇文章中,将介绍一下基于Policy的经典强化学习算法——Policy Gradient。
Value-based的不足
Value-based强化学习算法,是根据当前状态下的Q值来选取动作去执行。因此,一旦Q值表收敛,那么对于某一个状态,其选择的动作将是唯一确定的,即确定性的策略。这就导致其无法解决最优策略是随机策略的强化学习问题,例如猜拳,每次都出锤子当然不是最优解,让对方猜不出的随机策略反而更好一些。
在受限状态下,Value-based算法表现的不是很好。由于观测手段或者其他一些原因,导致观测到的两个不同的状态却得到了同样的特征,导致选择的策略效果不好。例如猜拳的时候,同一对手在时刻出了剪刀,在时刻也出了剪刀,如果只考虑对手以及动作,那么在和时刻观察到的特征是一样的。然而,在时刻对手不一定会出剪刀。
对于连续动作空间的强化学习问题的求解效果不好。因为Value-based算法的动作选择是在动作空间中选择值最大的动作,所以需要输出动作空间中每一个动作的值。因此,对于动作空间非常大的连续动作空间来说,评估每一个动作的值的成本是非常大的。例如方向盘转的角度,随着转动精度的无限提高,动作空间可以趋近于无穷。
Policy Gradient
Policy-based算法的输入和Value-based一样,但是输出的是动作空间中每一个动作被选择的概率,换句话说,输出的是动作空间中动作被选择的概率分布。这时策略函数可以用如下公式表示,其中是要训练的参数:
其优化目标有以下三种形式:
- 初始状态收获的期望:
- 状态收获的平均价值:,其中是基于策略生成的马尔可夫链关于状态的静态分布。
- 每个time-step的平均奖励:
无论哪种形式,根据策略定理,对求导的梯度为:
其中称为分值函数。
对于,在离散空间中常使用softmax函数,使用描述状态和行为的特征与参数的线性组合来权衡一个行为发生的几率,即:
在连续行为空间常用高斯函数,对应的行为从高斯分布中产生,求导之后为:
对于目标函数的优化可以采用蒙特卡洛梯度策略算法,使用随机梯度上升法更新参数,使用策略梯度法返回作为的无偏估计。算法如下:
首先初始化参数,之后对于每一个蒙特卡洛序列,做以下两步:
用蒙特卡洛计算序列每个时间位置的状态价值。
对序列每个时间位置,使用梯度上升法,更新策略函数的参数:
最后返回策略函数的参数,这个策略函数可以是softmax,也可以是高斯策略或者其他策略。
Policy-based的不足
- Policy-based往往收敛于局部最优解而不是全局最优解。
- 由于其输出的是动作概率分布,需要基于这个分布对动作进行采样,当动作空间非常大时,成本也比较高。