策略梯度(Policy Gradient)

与值函数近似类似,为了应对状态或动作数较多时,表格化的策略带来的存储问题,使用函数π(a∣s,θ)(该函数往往使用的是神经网络)\pi_(a|s,\theta)(该函数往往使用的是神经网络)π(as,θ)(该函数往往使用的是神经网络)。减少存储参数同时,也增强了策略的泛化能力(应对没有被访问过的状态动作对,能得出正确的策略)。
与前面基于值的方法有所不同的是,策略梯度直接优化的是梯度,而不再需要根据值的变化来选择出策略。

1 目标函数(metrics)

为了得出最优的策略,需要制定目标函数
J(θ)=∑sd(s)vπ(s)=vˉπ=lim⁡n→∞E[∑t=0nγtRt+1]J(\theta) = \displaystyle \sum_s d(s) v_{\pi}(s) = \bar v_\pi = \lim_{n \to \infty} E[\sum_{t=0}^n \gamma^t R_{t+1}]J(θ)=sd(s)vπ(s)=vˉπ=nlimE[t=0nγtRt+1]

J(θ)=∑sd(s)rπ(s)=rˉπ=lim⁡n→∞1nE[∑t=0n−1Rt+1]J(\theta) = \displaystyle \sum_s d(s) r_{\pi}(s) = \bar r_\pi = \lim_{n \to \infty} \frac{1}{n} E[\sum_{t=0}^{n-1} R_{t+1}]J(θ)=sd(s)rπ(s)=rˉπ=nlimn1E[t=0n1Rt+1]
两种目标函数当应对 return 计算带折扣率时(discount case),有rˉπ=(1−γ)rˉπ\bar r_\pi = (1-\gamma) \bar r_\pirˉπ=(1γ)rˉπ的关系。
为得到最优的策略就需要参数最优使目标函数最大。

2 目标函数梯度

为了使用 Gradient-based 的方法去优化目标函数,就需要得到目标函数的梯度。
∇θJ(θ)=∑sη(s)∑a∇θπ(a∣s,θ)q(s,a)=∑sη(s)∑aπ(a∣s,θ)∇θln(π(a∣s,θ))q(s,a)=E[∇θln(π(A∣S,θ))q(S,A)] \begin{align} \nabla_\theta J(\theta) &= \displaystyle \sum_s \eta(s) \sum_a \nabla_\theta \pi(a|s,\theta) q(s,a)\\ &= \displaystyle \sum_s \eta(s) \sum_a \pi(a|s,\theta) \nabla_\theta ln(\pi(a|s,\theta)) q(s,a)\\ &= E[\nabla_\theta ln(\pi(A|S,\theta)) q(S,A)] \end{align} θJ(θ)=sη(s)aθπ(as,θ)q(s,a)=sη(s)aπ(as,θ)θln(π(as,θ))q(s,a)=E[θln(π(AS,θ))q(S,A)]
由于有 ln 函数的计算,所以策略函数的最后一层要加上 softmax,防止出现对某个动作概率为 0。

3 随机梯度上升优化(Gradient-ascent)

为了使目标函数最大
θt+1=θt+αE[∇θln(π(A∣S,θ))q(S,A)]=θt+α∇θln(π(at∣st,θt))qπ(st,at)=θt+α∇θln(π(at∣st,θt))qt(st,at),(qπ真值未知,所以用当前估计值替代,当前值可以由MC或者TD通过采样的方法获得) \begin{align} \theta_{t+1} &= \theta_{t} + \alpha E[\nabla_\theta ln(\pi(A|S,\theta)) q(S,A)]\\ &= \theta_{t} + \alpha \nabla_\theta ln(\pi(a_t|s_t,\theta_t)) q_\pi(s_t,a_t)\\ &= \theta_{t} + \alpha \nabla_\theta ln(\pi(a_t|s_t,\theta_t)) q_t(s_t,a_t),(q_\pi真值未知,所以用当前估计值替代,当前值可以由 MC 或者 TD 通过采样的方法获得) \end{align} θt+1=θt+αE[θln(π(AS,θ))q(S,A)]=θt+αθln(π(atst,θt))qπ(st,at)=θt+αθln(π(atst,θt))qt(st,at),qπ真值未知,所以用当前估计值替代,当前值可以由MC或者TD通过采样的方法获得)

4 Reinforce Algorithm

当梯度计算时,使用 MC 方法获得 q 值,则称该算法为 Reinforce Algorithm。每次更新 q 值都需要使用π(a∣s,θt)\pi(a|s,\theta_t)π(as,θt)获取样本,而进行优化后更新策略π(a∣s,θt+1)\pi(a|s,\theta_{t+1})π(as,θt+1),并利用更新后的策略生成新样本,所以 PG 类的算法是 on-policy 的。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐