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