策略梯度(Policy Gradient)
与值函数近似类似,为了应对状态或动作数较多时,表格化的策略带来的存储问题,使用函数π(a∣s,θ)(该函数往往使用的是神经网络)。减少存储参数同时,也增强了策略的泛化能力(应对没有被访问过的状态动作对,能得出正确的策略)。
与前面基于值的方法有所不同的是,策略梯度直接优化的是梯度,而不再需要根据值的变化来选择出策略。
1 目标函数(metrics)
为了得出最优的策略,需要制定目标函数
J(θ)=s∑d(s)vπ(s)=vˉπ=n→∞limE[t=0∑nγtRt+1]
或
J(θ)=s∑d(s)rπ(s)=rˉπ=n→∞limn1E[t=0∑n−1Rt+1]
两种目标函数当应对 return 计算带折扣率时(discount case),有rˉπ=(1−γ)rˉπ的关系。
为得到最优的策略就需要参数最优使目标函数最大。
2 目标函数梯度
为了使用 Gradient-based 的方法去优化目标函数,就需要得到目标函数的梯度。
由于有 ln 函数的计算,所以策略函数的最后一层要加上 softmax,防止出现对某个动作概率为 0。
3 随机梯度上升优化(Gradient-ascent)
为了使目标函数最大
4 Reinforce Algorithm
当梯度计算时,使用 MC 方法获得 q 值,则称该算法为 Reinforce Algorithm。每次更新 q 值都需要使用π(a∣s,θt)获取样本,而进行优化后更新策略π(a∣s,θt+1),并利用更新后的策略生成新样本,所以 PG 类的算法是 on-policy 的。