我是靠谱客的博主 多情麦片,最近开发中收集的这篇文章主要介绍【强化学习】Actor-Critic公式推导分析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本文是在DQN与stochastic policy gradient基础上进行介绍,部分公式源头可以在DQN,stochastic policy gradient中找到。

一、AC算法

在之前的随机策略梯度算法中,我们可以采用类似蒙特卡洛的方法采样一条轨迹后对策略进行更新,如下所示
∇ θ J ( θ ) = 1 N ∑ i = 0 N ∑ t = 0 T [ ∇ θ log ⁡ π θ ( a i , t ∣ s i , t ) ( ∑ t ′ = t T r ( s i , t , a i , t ) − b ) ] ( 1 ) nabla_{theta}J(theta)=frac{1}{N}sum_{i=0}^Nsum_{t=0}^T[nabla_{theta}log pi_{theta}(a_{i,t}|s_{i,t})(sum_{t'=t}^Tr(s_{i,t},a_{i,t})-b)] qquad(1) θJ(θ)=N1i=0Nt=0T[θlogπθ(ai,tsi,t)(t=tTr(si,t,ai,t)b)](1)
我们用整个轨迹的回报表示整个序列的价值,这个估计是准确无偏的,但是在真实的训练过程中,为了控制学习时间,我们无法完成足够数量的交互采样,有限次的采样有时并不能很好的代表轨迹真实的期望。每一个交互得到的序列会存在一定的差异,对应的回报也会存在一定的差异,因此不充足的交互会给轨迹回报引入较大的方差,这就是蒙特卡洛方法的缺陷,没有偏差但是方差大,在随机策略梯度算法中引入基线 b b b来减小方差。

Actor-Critic算法就是牺牲一定的偏差来减小方差的方法。其核心思想是通过一个单独的模型来估计轨迹的累积回报,而不再用采样完一条轨迹后的真实累积回报。另一个好处就是,Actor-Critic算法可以在每一步进行模型的更新,而不用等到一条轨迹交互结束后才能更新一次模型。每一次采样使用类似DQN的方法更新价值函数模型,然后利用价值函数估计的轨迹价值进行策略函数的更新。

公式(1)为随机策略梯度模型的梯度(优化)方向,我们可以使用如下的方法来替代轨迹梯度权值 ∑ t ′ = t T r ( s i , t , a i , t ) − b sum_{t'=t}^Tr(s_{i,t},a_{i,t})-b t=tTr(si,t,ai,t)b

  1. 直接使用状态值函数估计的轨迹回报作为轨迹梯度权值: q ( s , a ) q(s,a) q(s,a)
  2. 直接使用优势函数作为轨迹的梯度权重: A ( s , a ) = q ( s , a ) − V ( s ) A(s,a)=q(s,a)-V(s) A(s,a)=q(s,a)V(s)
  3. 使用TD-error作为轨迹梯度权值: r ( s t , a t ) + v ( s t + 1 ) − v ( s t ) r(s_t,a_t)+v(s_{t+1})-v(s_t) r(st,at)+v(st+1)v(st)

上述三种替代方式都可以在一定程度上减低方差,但是偏差会增大。更进一步,还可以利用 T D ( λ ) TD(lambda) TD(λ)的方式来平衡偏差与方差的关系。Actor-Critic选用第三种TD-error的方式作为轨迹梯度的权值,这种方法在计算量以及减小方差上都有较好的效果。为了估计 v ( s ) v(s) v(s)引入价值模型,这也是Actor-Critic命名的由来,Actor表示策略模型,Critic表示价值模型。

Actor-Critic可以每运行一步进行一次学习,其核心公式为
δ = r t ( s t , a t ) + v ω ( s t + 1 ) − v ω ( s t ) ω t + 1 = ω t + α ω δ t ∇ ω v ω ( s t ) θ t + 1 = θ t + α θ ∇ θ log ⁡ π θ ( a t ∣ s t ) δ t begin{aligned} delta = r_t(s_t,a_t)+v_omega(s_{t+1})-v_omega(s_t)\ omega_{t+1}=omega_t+alpha^omegadelta_tnabla_omega v_omega(s_{t})\ theta_{t+1}=theta_t+alpha^{theta}nabla_{theta}log pi_{theta}(a_t|s_t)delta_t end{aligned} δ=rt(st,at)+vω(st+1)vω(st)ωt+1=ωt+αωδtωvω(st)θt+1=θt+αθθlogπθ(atst)δt
第一行为计算该步的TD-error,第二行为更新价值模型参数,第三行为更新策略模型参数。更新价值模型参数的公式推导分析可以看DQN,更新策略模型的公式推导可以看SPG。
在这里插入图片描述

二、A3C算法

A3C(Asynchronous Advantage AC)采用异步更新的方式,加快了模型的学习速度。AC及policy gradient是一个on-policy的策略,每次模型与环境交互后更新模型,再用新的模型去与环境交互进行下一次更新。A3C是一种并行采样交互与训练的算法,归类为off-policy。在算法中同时启动N个线程,使用N个agent同时与环境进行交互,只要对环境设置不同,则每个线程采样得到的数据将会有区别。每个线程按照Actor-Critic算法的方式独立的进行环境交互与学习,每个线程完成训练并得到参数更新量后,异步的将该线程的参数更新量更新到全局模型中,下一次训练开始前,从全局模型中获取最新的模型参数,使用新同步到的全局模型参数进行下一次交互更新。
在这里插入图片描述

最后

以上就是多情麦片为你收集整理的【强化学习】Actor-Critic公式推导分析的全部内容,希望文章能够帮你解决【强化学习】Actor-Critic公式推导分析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部