基于值函数的强化学习缺点
1.针对确定性策略。
值函数是间接得到最优策略的方法,根据价值函数的大小,贪心选择值最大的动作,是确定性策略,每次面对同一个状态,选择的动作是同一个。
2.存在策略退化。
基于值函数的方法,基本是用近似器去拟合真实的价值函数,必然存在着一定的误差,但是即使将误差训练到很小了,可能导致策略变差。比如真实的价值函数得到的A,B两个动作值分别为,0.45,0.46,真正的策略应该是选择动作B。采用的近似的价值函数,输出的A,B动作价值为,0.46,0.45,误差很小,但是选择的动作却是A,策略不是最优策略。
3.不适用于连续控制或动作空间很大的场景
因为它是通过比较价值大小来选择动作,因此动作集很大(连续可以看成无数个离线动作),一个个比较大小不太现实。
4.收敛较慢
它是在价值函数和策略来回迭代优化。
基于策略的强化学习
基于策略的方法,是将策略参数化,即建立策略模型π(s,a,θ)π(s,a,\theta)π(s,a,θ),输入状态sss,直接输出aaa(离线的动作,可以输出每个动作概率,依概率选择动作),模型由θ\thetaθ控制,目标就是找到合适θ\thetaθ,最优策略π(s,a,θ)π(s,a,\theta)π(s,a,θ)就得到。
基于策略的强化学习的特点
1.可以学习随机策略
2.可以应用于高维空间,连续动作
3.不会策略退化
4.收敛速度比较快,但容易收敛到局部最优
5.难以评价一个策略,且评价的方差大
基于策略的强化学习的目标函数
为了求最优的策略,就需要有一个目标函数,来通过各种求极值的方法求θ\thetaθ,得到策略。
1.Star Value
建立目标函数 J1(θ)=Vπθ(s1)J_1(\theta)=V_{π_\theta}(s_1)J1(θ)=Vπθ(s1),即agent按照策略π(s,a,θ)π(s,a,\theta)π(s,a,θ),从初始状态s1s_1s1一直到episode结束,他所能获得的奖励和(在当前的策略下,初始状态s1s_1s1的价值函数值),这个奖励越大,策略越好,问题就变成求Jπθ(s1)J_{π_\theta}(s_1)Jπθ(s1)最大的θ\thetaθ。
2.Average Value
Javg(θ)=∑dπθ(si)Vπθ(si)J_{avg}(\theta)=\sum d^{π_\theta}(s_i)V_{π_\theta} (s_i)Javg(θ)=∑dπθ(si)Vπθ(si)
对于连续性任务,没有固定起点的,在某个时刻计算,所有可能状态的价值函数值的均值。 dπθ(s)d^{π_\theta}(s)dπθ(s)是在该目前的策略π(s,a,θ)π(s,a,\theta)π(s,a,θ)下,状态的静态概率分布函数,即描述了每个状态在目前策略下出现的概率值,每个状态的概率X每个状态在该策略下的价值,累加起来就是加权平均价值。以此为目标函数,Javg(θ)J_{avg}(\theta)Javg(θ)越大越好。
3.Average reward per time-step
Javg(θ)=∑dπθ(si)∑π(s,a,θ)RsaJ_{avg}(\theta)=\sum d^{π_\theta}(s_i)\sum π(s,a,\theta)R_s^aJavg(θ)=∑dπθ(si)∑π(s,a,θ)Rsa
取某一个时间片段内,计算所有可能状态,在该策略下,所能获得的及时奖励的加权平均值。方法2中是求的状态的价值的加权平均值(V是从那个时刻到episode结束时所有的奖励加和)。
基于策略的强化学习的策略求梯度
建立目标函数,优化目标函数即能找到最优策略,常见的方法就是通过梯度下降更新参数。
1.数值法求梯度
对于 J1(θ)=Vπθ(s1)J_1(\theta)=V_{π_\theta}(s_1)J1(θ)=Vπθ(s1) θ\thetaθ是所有参数构成的一个总称,假设有n参数,那么θ\thetaθ可以看成是一个n维向量。对θ\thetaθ的第k维,求偏导,
∂J1(θ)∂θk≈J1(θ+ϵuk)−J1(θ)ϵuk{\partial J_1(\theta) \over \partial \theta_k}≈ {J_1(\theta+\epsilon u_k)-J_1(\theta) \over\epsilon u_k }∂θk∂J1(θ)≈ϵukJ1(θ+ϵuk)−J1(θ)
其中,ϵ\epsilonϵ为很小的值,uku_kuk为第k维为1,其他为0的单位向量。
经过n次这个求导,得到每个参数的偏导数,构成一个向量,就得到目标函数的梯度。
该方法简单,对于策略模型是否可微无所谓,但是求一次梯度,需要进行n次的计算,且误差较大。
2.策略梯度
建立策略模型πθ(s,a)π_\theta(s,a)πθ(s,a),该策略模型可微,建立目标函数。将一个agent与环境在该策略下交互的完整轨迹s1,a1,s2,a2,s3,a3...sτ{s_1,a_1,s_2,a_2,s_3,a_3...s_\tau}s1,a1,s2,a2,s3,a3...sτ记做τ\tauτ。将这个完整轨迹所所得的立即奖励加和设为R(τ)R(\tau)R(τ),
R(τ)=∑t=1γt−1rtR(\tau)=\sum_{t=1} \gamma^{t-1}r_tR(τ)=t=1∑γt−1rt,
R(τ)R(\tau)R(τ)是一个随机变量,他描述了不同轨迹的奖励值。则目标函数为:
Uθ=∑Pθ(τ)R(τ)=Eπθ[R(τ)]U_\theta=\sum P_\theta(\tau)R(\tau)=E_{π_\theta}[R(\tau)]Uθ=∑Pθ(τ)R(τ)=Eπθ[R(τ)],
即目标让轨迹的奖励期望最高,Pθ(τ)P_\theta(\tau)Pθ(τ)是这个策略下出现的各种轨迹的概率分布,他与策略相关。为了使目标函数最大,很明显应该让轨迹的奖励最高的出现的概率最大。
Pθ(τ)P_\theta(\tau)Pθ(τ)未知,UθU_\thetaUθ没法写出可微的数学表达式,如何求∇θU\nabla_\theta U∇θU。直接策略梯度方法是无法得到真正准确的策略梯度,难点在于如何得到比较好的进行策略梯度估计。
从似然率的角度
∇θU=∇θ∑Pθ(τ)R(τ)\nabla_\theta U=\nabla_\theta\sum P_\theta(\tau)R(\tau)∇θU=∇θ∑Pθ(τ)R(τ)
=∑∇θPθ(τ)R(τ)=\sum \nabla_\theta P_\theta(\tau)R(\tau)=∑∇θPθ(τ)R(τ)(当求和符号内式子可以收敛时,求和和求梯度可以交换)
=∑Pθ(τ)∇θPθ(τ)Pθ(τ)R(τ)=\sum P_\theta(\tau) {\nabla_\theta P_\theta(\tau)\over P_\theta(\tau)}R(\tau)=∑Pθ(τ)Pθ(τ)∇θPθ(τ)R(τ)
=∑Pθ(τ)∇θlogPθ(τ)R(τ)=\sum P_\theta(\tau) \nabla_\theta log P_\theta(\tau)R(\tau)=∑Pθ(τ)∇θlogPθ(τ)R(