概述
本文是在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=0∑Nt=0∑T[∇θlogπθ(ai,t∣si,t)(t′=t∑Tr(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
- 直接使用状态值函数估计的轨迹回报作为轨迹梯度权值: q ( s , a ) q(s,a) q(s,a)
- 直接使用优势函数作为轨迹的梯度权重: A ( s , a ) = q ( s , a ) − V ( s ) A(s,a)=q(s,a)-V(s) A(s,a)=q(s,a)−V(s)
- 使用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πθ(at∣st)δ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公式推导分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复