强化学习——策略梯度(九)
策略梯度(Policy Gradient)
与值函数近似类似,为了应对状态或动作数较多时,表格化的策略带来的存储问题,使用函数π(a∣s,θ)(该函数往往使用的是神经网络)\pi_(a|s,\theta)(该函数往往使用的是神经网络)π(a∣s,θ)(该函数往往使用的是神经网络)。减少存储参数同时,也增强了策略的泛化能力(应对没有被访问过的状态动作对,能得出正确的策略)。
与前面基于值的方法有所不同的是,策略梯度直接优化的是梯度,而不再需要根据值的变化来选择出策略。
1 目标函数(metrics)
为了得出最优的策略,需要制定目标函数
J(θ)=∑sd(s)vπ(s)=vˉπ=limn→∞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(θ)=s∑d(s)vπ(s)=vˉπ=n→∞limE[t=0∑nγtRt+1]
或
J(θ)=∑sd(s)rπ(s)=rˉπ=limn→∞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(θ)=s∑d(s)rπ(s)=rˉπ=n→∞limn1E[t=0∑n−1Rt+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∑∇θπ(a∣s,θ)q(s,a)=s∑η(s)a∑π(a∣s,θ)∇θln(π(a∣s,θ))q(s,a)=E[∇θln(π(A∣S,θ))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(π(A∣S,θ))q(S,A)]=θt+α∇θln(π(at∣st,θt))qπ(st,at)=θt+α∇θln(π(at∣st,θt))qt(st,at),(qπ真值未知,所以用当前估计值替代,当前值可以由MC或者TD通过采样的方法获得)
4 Reinforce Algorithm
当梯度计算时,使用 MC 方法获得 q 值,则称该算法为 Reinforce Algorithm。每次更新 q 值都需要使用π(a∣s,θt)\pi(a|s,\theta_t)π(a∣s,θt)获取样本,而进行优化后更新策略π(a∣s,θt+1)\pi(a|s,\theta_{t+1})π(a∣s,θt+1),并利用更新后的策略生成新样本,所以 PG 类的算法是 on-policy 的。
更多推荐


所有评论(0)