本专栏按照 https://lilianweng.github.io/lil-log/2018/04/08/policy-gradient-algorithms.html 顺序进行总结 。
D P G \color{red}DPG DPG :[ paper | code ]
Stochastic Policy Gradient (SPG) 是通过参数化的概率分布 π θ ( a ∣ s ) = P [ a ∣ s ; θ ] {\pi _\theta }(a|s) = P[a|s;\theta ] πθ(a∣s)=P[a∣s;θ] 随机地选择动作,即 π θ ( a ∣ s ) {\pi _\theta }(a|s) πθ(a∣s) 是一个动作的概率分布。
Deterministic Policy Gradient (DPG) 与SPG 不同之处是,这个方法会确定地选择一个动作: a = μ θ ( s ) a = {\mu _\theta }(s) a=μθ(s) 。
简而言之:
看起来很奇怪吧!当仅仅只输出一个动作的时候,怎么计算动作概率的梯度呢?
接下来我们一步一步地看看~
回顾策略梯度
策略梯度:
首先解决一个强化学习问题,我们想到的就是累计折扣奖励的定义,即状态满足 ρ π \rho^{\pi} ρπ 分布上的累计奖励,如下:
J ( π θ ) = ∫ S ρ π ( s ) ∫ A π θ ( s , a ) r ( s , a ) d a d s = E s ∼ ρ π , a ∼ π θ [ r ( s , a ) ] \begin{aligned}J(\pi_\theta)=&\int_S \rho^\pi(s)\int_A \pi_\theta (s,a)r(s,a)dads\\=&\textcolor{red}{E_{s\sim \rho^\pi ,a\sim \pi_\theta}[r(s,a)]}\end{aligned} J(πθ)==∫Sρπ(s)∫Aπθ(s,a)r(s,a)dadsEs∼ρπ,a∼πθ[r(s,a)]
ρ π ( s ′ ) = ∫ S ∑ t = 1 ∞ γ t − 1 p 1 ( s ) p ( s → s ′ , t , π ) d s \rho^\pi(s') = \int_S \sum_{t=1}^ {\infty} \gamma^{t-1}\textcolor{blue}{p_1(s) }p(s\to s',t,\pi)ds ρπ(s′)=∫S∑t=1∞γt−1p1(s)p(s→s′,t,π)ds
策略梯度定理:
那么什么是策略梯度呢?策略梯度就是沿着使目标函数变大的方向调整策略的参数,它被定义为:
∇ θ J ( π θ ) = ∫ S ρ π ( s ) ∫ A ∇ θ π θ ( s , a ) Q π ( s , a ) d a d s = E s ∼ ρ π , a ∼ π θ [ ∇ θ l o g π θ ( s , a ) Q π ( s , a ) ] \begin{aligned} \nabla_\theta J(\pi_\theta)=&\int_S \rho^\pi(s)\int_A \nabla_\theta \pi_\theta (s,a)Q^\pi(s,a)dads\\=&E_{s\sim \rho^\pi ,a\sim \pi_\theta}[\nabla_\theta log \pi_\theta(s,a)Q^\pi(s,a)]\end{aligned} ∇θJ(πθ)==∫Sρπ(s)∫A∇θπθ(s,a)Qπ(s,a)dadsEs∼ρπ,a∼πθ[∇θlogπθ(s,a)Qπ(s,a)]
stochastic Actor-Critic algorithm
critic 通过TD的方式估计 action-value function: Q w ( s , a ) = Q π ( s , a ) Q^w(s,a)=Q^\pi(s,a) Qw(s,a)=Qπ(s,a)
所以,策略梯度定理演化为: ∇ θ J ( π θ ) = ∫ S ρ π ( s ) ∫ A ∇ θ π θ ( s , a ) Q w ( s , a ) d a d s = E s ∼ ρ π , a ∼ π θ [ ∇ θ l o g π θ ( s , a ) Q w ( s , a ) ] \begin{aligned} \nabla_\theta J(\pi_\theta)=&\int_S \rho^\pi(s)\int_A \nabla_\theta \pi_\theta (s,a)Q^w(s,a)dads\\=&E_{s\sim \rho^\pi ,a\sim \pi_\theta}[\nabla_\theta log \pi_\theta(s,a)Q^w(s,a)]\end{aligned} ∇θJ(πθ)==∫Sρπ(s)∫A∇θπθ(s,a)Qw(s,a)dadsEs∼ρπ,a∼πθ[∇θlogπθ(s,a)Qw(s,a)]
公式非常直白的告诉我们, J ( ) J() J() 函数主要与策略梯度和值函数的期望有关,尽管状态空间分布 ρ π \rho^{\pi} ρπ 的分布依赖于策略参数,但是策略梯度并不依赖于状态分布上的梯度。另外, 在DQN中我们使用了 评价网络 和 target网络,采用了experimence replay的方式打乱了数据之间的相关性而使得满足独立同分布条件,利用softupdating方式更新target网络,但总结一句话,它的策略网路和值函数网络使用的是同一个网络。在DPG的公式表明, J ( ) J() J() 和策略梯度与值函数有关,因此为了解决策略和值函数之间的问题,采用了一种新的解决思路将两个网络分开,即:Actor-critic异步框架。(Actor就是策略网络,来做动作选择(空间探索)。Critic就是值函数,对策略函数进行评估),具体的流程如图:
简单描述一下图:其中的TD-error就是Critic告诉Actor的偏差。
具体的更新过程:
δ t = R t + γ Q w ( s t + 1 , a t + 1 ) − Q w ( s t , a t ) ; TD error in SARSA w t + 1 = w t + α w δ t ∇ w Q w ( s t , a t ) θ t + 1 = θ t + α θ ∇ a Q w ( s t , a t ) ∇ θ μ θ ( s ) ∣ a = μ θ ( s ) ; 确定性策略梯度定理 \begin{aligned} \quad \delta_t &= R_t + \gamma Q_w(s_{t+1}, a_{t+1}) - Q_w(s_t, a_t) & \scriptstyle{\text{; TD error in SARSA}}\\ w_{t+1} &= w_t + \alpha_w \delta_t \nabla_w Q_w(s_t, a_t) & \\ \qquad\qquad \theta_{t+1} &= \theta_t + \alpha_\theta \color{red}{\nabla_a Q_w(s_t, a_t) \nabla_\theta \mu_\theta(s) \rvert_{a=\mu_\theta(s)}} & \scriptstyle{\text{; 确定性策略梯度定理}} \end{aligned} δtwt+1θt+1=Rt+γQw(st+1,at+1)−Qw(st,at)=wt+αwδt∇wQw(st,at)=θt+αθ∇aQw(st,at)∇θμθ(s)∣a=μθ(s); TD error in SARSA; 确定性策略梯度定理
但是,由于策略的确定性,除非环境中有足够的噪声,否则很难保证足够的探索。我们可以在策略中添加噪声(讽刺的是这会使它变得不确定)或者通过遵循不同的随机行为策略来收集样本来 离线策略地学习它。下面来简单提一下。
DPG算法
现在考虑如何将策略梯度框架扩展到确定性政策。【确定性策略梯度定理实际上是随机策略梯度定理的一个极限情况,具体证明见论文】
那么极限情况是啥呢?就是当概率策略的方差趋近于0的时候,就是 确定性策略,即
上面这个式子的推导过程可以理解为 :
DPG算法本身采用的是PG方法,因而直接对轨迹的价值回报进行求导: ∇ θ v μ θ ( s ) = ∇ θ [ Q μ ( s , μ θ ( s ) ) ] \nabla_\theta v_{\mu_{\theta}} (s)=\nabla_\theta[Q^\mu(s,\mu_\theta(s))] ∇θvμθ(s)=∇θ[Qμ(s,μθ(s))]
链式法则,由于 μ θ ( s ) μ_θ(s) μθ(s) 与确定性策略价值函数 Q μ Q^μ Qμ 有关,因而 : ∇ θ v μ ( s ) = ∇ μ θ ( s ) [ Q μ ( s , μ θ ( s ) ) ] ∇ θ μ θ ( s ) \nabla_\theta v_\mu(s) = \nabla_{\mu_\theta(s)}[Q^\mu(s, \mu_\theta(s))]\nabla_\theta\mu_\theta(s) ∇θvμ(s)=∇μθ(s)[Qμ(s,μθ(s))]∇θμθ(s)
该算法采用AC框架:
[Actor] 衡量一个策略网络的表现(策略网络目标函数),最大化策略目标: (根据上面推导的DPG)
J β ( θ ) = ∫ S ρ β ( s ) Q ω ( s , μ ( s ) ) d s = E s ∼ ρ β [ Q ω ( s , μ ( s ) ) ] \begin{aligned} J_\beta (\theta)&=\int_S ρ^\beta(s)Q^\omega(s, \mu(s))ds\\ &=\mathbb{E}_{s\simρ^\beta}[Q^\omega(s, \mu(s))] \end{aligned} Jβ(θ)=∫Sρβ(s)Qω(s,μ(s))ds=Es∼ρβ[Qω(s,μ(s))]
[Critic] 最小化值网络目标:
\qquad Q ^ ω ( s t , a t ) = E [ r ( s t , a t ) + γ Q ω ( s t + 1 , a t + 1 ) ] \hat{Q}^\omega(s_t, a_t)=\mathbb{E}[r(s_t,a_t)+\gamma Q^\omega(s_{t+1},a_{t+1})] Q^ω(st,at)=E[r(st,at)+γQω(st+1,at+1)]
\qquad J β ( ω ) = E s ∼ ρ β [ 1 2 ( r t + γ Q ω ( s t + 1 , a t + 1 ) − Q ω ( s t , a t ) ) 2 ] J_\beta(\omega)=\mathbb{E}_{s\simρ^\beta}[\frac{1}{2}(r_t+\gamma Q^\omega(s_{t+1},a_{t+1})-Q^\omega(s_t,a_t))^2] Jβ(ω)=Es∼ρβ[21(rt+γQω(st+1,at+1)−Qω(st,at))2]
最终DPG的目标函数为:( ω ω ω 是值网络 , θ θ θ 是策略网络 )
确定性策略梯度的优点在于 需要采样的数据少,算法效率高。
暂无
暂无