参考文献:[1]《强化学习》,邹伟,等.(鳄鱼书)
文章目录
随机策略梯度
策略梯度的优点:1.适用于连续动作空间场景;2.策略搜索方法具有更好的收敛性;2.策略搜索方法更简单;3.策略搜索方法可以学到随机策略。
只有针对状态可完美观测或使用的特征可以完美描述状态的情况,才有对于任何MDP总有一个确定性策略当发生状态崇明无法区分或使用的近似函数里描述状态的特征值限制了对状态的完美描述时,智能体得到的状态信息等效于部分观测的环境信息,问题不具备马尔科夫性。此时最优策略不再是确定性的,直接基于策略的学习能学习到最优策略。
1.定理及证明
策略随机时,有
π
θ
(
a
∣
s
)
=
P
(
a
∣
s
;
θ
)
\pi_\theta(a|s)=P(a|s;\boldsymbol{\theta})
πθ(a∣s)=P(a∣s;θ),确定了在给定的状态s和一定的参数设置
θ
\boldsymbol{\theta}
θ下,采取任何可能行为的概率。
将策略参数向量
θ
\boldsymbol{\theta}
θ分为两部分:
θ
=
[
θ
μ
,
θ
σ
]
T
\boldsymbol{\theta}=[\boldsymbol{\theta}_\mu,\boldsymbol{\theta}_\sigma]^T
θ=[θμ,θσ]T。
θ
μ
\boldsymbol{\theta}_\mu
θμ用来近似均值,
θ
σ
\boldsymbol{\theta}_\sigma
θσ用来近似方差。a服从均值为
μ
(
s
,
θ
)
\mu(s,\boldsymbol{\theta})
μ(s,θ)、方差为
δ
(
s
,
θ
)
2
\delta(s,\boldsymbol{\theta})^2
δ(s,θ)2的正态分布。
我们要做的是利用参数化策略
π
θ
(
a
∣
s
,
θ
)
\pi_\theta(a|s,\boldsymbol{\theta})
πθ(a∣s,θ),通过调整
θ
\theta
θ来得到一个较优策略,使得遵循这个策略产生的行为能够得到较多回报。具体而言是设计一个与策略参数
θ
\theta
θ相关的目标函数
J
(
θ
)
J(\boldsymbol{\theta})
J(θ),对其使用梯度上升算法优化参数
θ
\theta
θ,使J最大。
θ
t
+
1
=
θ
t
+
α
∇
J
(
θ
t
)
\boldsymbol{\theta}_{t+1}=\boldsymbol{\theta}_t+\alpha\nabla J(\boldsymbol{\theta}_t)
θt+1=θt+α∇J(θt)
此方法是基于目标函数J的梯度进行策略参数更新,任何遵循这种更新机制的方法都叫策略梯度法。
目标函数选择问题:
a. 能够产生完整轨迹的环境下(Episodic Case),可用从起始状态
s
0
s_0
s0到终止状态的累计回报来衡量整个策略的优劣。即
J
(
θ
)
=
V
π
θ
(
s
0
)
J(\boldsymbol{\theta})=V_{\pi_\theta}(s_0)
J(θ)=Vπθ(s0)
b. 对于没有终止状态的情况(Continuing Case),使用每一个时间步长下的平均回报来衡量策略的好坏。这个平均回报就等于一个确定的时间步长内,智能体处于所有状态的可能性与每一种状态下所采取所有行为能够得到的立即回报之积
J
(
θ
)
=
∑
t
=
1
u
π
θ
(
s
)
∑
a
π
θ
(
a
∣
s
,
θ
)
R
s
a
J(\boldsymbol{\theta})=\sum_{t=1}u_{\pi_\theta}(s)\sum_a\pi_\theta(a|s,\boldsymbol{\theta})R_s^a
J(θ)=∑t=1uπθ(s)∑aπθ(a∣s,θ)Rsa
其中,
u
π
θ
(
s
)
u_{\pi_\theta}(s)
uπθ(s)是基于策略
π
θ
\pi_\theta
πθ生成的马尔科夫链关于状态的分布。可见,目标函数同时取决于状态分布和所选择的动作,而两者又同时受策略参数影响。
将完整轨迹和持续时间步定义的两种目标函数
J
(
θ
)
J(\boldsymbol{\theta})
J(θ)的梯度,理论上统一成一种表达式。并且表达式中不涉及关于状态分布对于策略参数的导数:
∇
θ
J
(
θ
)
∝
∑
s
μ
(
s
)
∑
a
Q
π
(
s
,
a
)
∇
θ
π
(
a
∣
s
,
θ
)
=
E
s
∼
u
,
a
∼
π
[
∇
θ
log
π
θ
(
a
∣
s
,
θ
)
Q
π
(
s
,
a
)
]
\nabla_\theta J(\boldsymbol{\theta})\propto \sum_s \mu(s)\sum_a Q_\pi(s,a) \nabla_\theta\pi(a|s,\boldsymbol{\theta})=E_{s\thicksim u,a\thicksim\pi}[\nabla_\theta\log\pi_\theta(a|s,\boldsymbol{\theta})Q_\pi(s,a)]
∇θJ(θ)∝∑sμ(s)∑aQπ(s,a)∇θπ(a∣s,θ)=Es∼u,a∼π[∇θlogπθ(a∣s,θ)Qπ(s,a)]
2.蒙特卡洛策略梯度
2.1 REINFORCE方法
需要通过采样,以使样本梯度的期望与目标函数的实际梯度相等。用采样数据
a
t
,
s
t
a_t,s_t
at,st代替s,a,且
E
s
∼
u
,
a
∼
π
[
G
t
∣
s
t
,
a
t
]
=
Q
π
(
s
t
,
a
t
)
E_{s\thicksim u,a\thicksim\pi}[G_t|s_t,a_t]=Q_\pi(s_t,a_t)
Es∼u,a∼π[Gt∣st,at]=Qπ(st,at)
则有:
∇
θ
J
(
θ
)
=
E
s
∼
u
,
a
t
∼
π
[
∇
θ
log
π
θ
(
a
t
∣
s
t
,
θ
)
Q
π
(
s
t
,
a
t
)
]
=
E
s
∼
u
,
a
t
∼
π
[
G
t
log
π
θ
(
a
t
∣
s
t
,
θ
)
]
\nabla_\theta J(\boldsymbol{\theta})=E_{s\thicksim u,a_t\thicksim\pi}[\nabla_\theta\log\pi_\theta(a_t|s_t,\boldsymbol{\theta})Q_\pi(s_t,a_t)]=E_{s\thicksim u,a_t\thicksim\pi}[G_t\log\pi_\theta(a_t|s_t,\boldsymbol{\theta})]
∇θJ(θ)=Es∼u,at∼π[∇θlogπθ(at∣st,θ)Qπ(st,at)]=Es∼u,at∼π[Gtlogπθ(at∣st,θ)]
故REINFORCE方法如下:
θ
t
+
1
=
θ
t
+
α
G
t
∇
θ
log
π
θ
(
a
t
∣
s
t
,
θ
)
\boldsymbol{\theta}_{t+1}=\boldsymbol{\theta}_t+\alpha G_t\nabla_\theta\log\pi_\theta(a_t|s_t,\boldsymbol{\theta})
θt+1=θt+αGt∇θlogπθ(at∣st,θ)
由此,REINFORCE使用从时间t开始到结束的完整轨迹的回报,因此属于一种蒙特卡洛算法,且仅适用于完整轨迹情况。
2.2带基线的REINFORCE方法
将
J
(
θ
)
∝
∑
t
=
1
u
π
θ
(
s
)
Q
π
(
s
,
a
)
∇
θ
π
(
a
∣
s
,
θ
)
J(\boldsymbol{\theta})\propto\sum_{t=1}u_{\pi_\theta}(s)Q_\pi(s,a) \nabla_\theta\pi(a|s,\boldsymbol{\theta})
J(θ)∝∑t=1uπθ(s)Qπ(s,a)∇θπ(a∣s,θ)
改写为
J
(
θ
)
∝
∑
t
=
1
u
π
θ
(
s
)
(
Q
π
(
s
,
a
)
−
b
(
s
)
)
∇
θ
π
(
a
∣
s
,
θ
)
J(\boldsymbol{\theta})\propto\sum_{t=1}u_{\pi_\theta}(s)(Q_\pi(s,a)-b(s)) \nabla_\theta\pi(a|s,\boldsymbol{\theta})
J(θ)∝∑t=1uπθ(s)(Qπ(s,a)−b(s))∇θπ(a∣s,θ)
基线b函数可与状态相关,但一定要与行为无关,这样b函数不会改变梯度本身。由此可以明显减少方差。
使用最多的基线函数为值函数
V
(
s
,
w
)
V(s,\boldsymbol{w})
V(s,w)。其中
w
)
\boldsymbol{w})
w)是值函数的参数向量,可通过蒙特卡洛方法学习。
流程如下:
2.3TRPO(Trust Region Policy Optimization,置信域策略优化)方法
前文给出的两种方法需要选择合适的步长
α
\alpha
α使得学习算法单调收敛。但步长选择不当对学习过程的恶劣影响是巨大的。
TRPO要解决的问题就是确定一个合适的更新步长,使策略更新后,回报函数的值单调不减。
整体思路如下:1.证明最大化某个替代回报可以保证策略的单调不减改进;2.对这个理论上正确的替代算法进行一系列近似,得到一个使用算法,称为TRPO。通过求解该算法,可获得策略更新的方向和步长。
2.3.1基本概念
从马尔科夫决策过程开始。在策略
π
\pi
π下产生一系列的动作状态对,定义该序列的回报
η
(
π
)
\eta(\pi)
η(π)为:
η
(
π
)
=
E
s
0
,
a
0
,
.
.
.
[
∑
t
=
0
∞
γ
t
r
(
s
t
)
]
\eta(\pi)=E_{s_0,a_0,...}[\sum_{t=0}^\infty\gamma^tr(s_t)]
η(π)=Es0,a0,...[∑t=0∞γtr(st)]
其中,
a
t
∼
π
(
a
t
∣
s
t
)
a_t\thicksim \pi(a_t|s_t)
at∼π(at∣st),
s
t
+
1
∼
P
(
s
t
+
1
∣
s
t
,
a
t
)
s_{t+1}\thicksim P(s_{t+1}|s_t,a_t)
st+1∼P(st+1∣st,at)
同时,还约定:
Q
π
(
s
t
,
a
t
)
=
E
s
t
+
1
,
a
t
+
1
,
.
.
.
[
∑
l
=
0
∞
γ
l
r
(
s
t
+
l
)
]
Q_\pi(s_t,a_t)=E_{s_{t+1},a_{t+1},...}[\sum_{l=0}^\infty\gamma^lr(s_{t+l})]
Qπ(st,at)=Est+1,at+1,...[∑l=0∞γlr(st+l)]
V
π
(
s
t
)
=
E
a
t
,
s
t
+
1
,
.
.
.
[
∑
l
=
0
∞
γ
l
r
(
s
t
+
l
)
]
V_\pi(s_t)=E_{a_t,s_{t+1},...}[\sum_{l=0}^\infty\gamma^lr(s_{t+l})]
Vπ(st)=Eat,st+1,...[∑l=0∞γlr(st+l)]
A
π
(
s
,
a
)
=
Q
π
(
s
,
a
)
−
V
π
(
s
)
A_\pi(s,a)=Q_\pi(s,a)-V_\pi(s)
Aπ(s,a)=Qπ(s,a)−Vπ(s),
a
t
∼
π
(
a
t
∣
s
t
)
a_t\thicksim \pi(a_t|s_t)
at∼π(at∣st),
s
t
+
1
∼
P
(
s
t
+
1
∣
s
t
,
a
t
)
s_{t+1}\thicksim P(s_{t+1}|s_t,a_t)
st+1∼P(st+1∣st,at),
t
≥
0
t\geq0
t≥0
2.3.2将新策略回报表示为就策略回报加上其他值
将新的策略所对应的回报函数分解成就得策略所对应的回报函数和其他项之和,只要其他项之和大于等于零,新策略能保证回报函数单调不减。
具体推导过程不详述,在鳄鱼书P186~187,这里直接给出新策略回报与就策略回报之间的关系:
η
(
π
~
)
=
η
(
π
)
+
∑
s
ρ
π
~
(
s
)
∑
a
π
~
(
a
∣
s
)
A
π
(
s
,
a
)
\eta(\tilde{\pi})=\eta(\pi)+\sum_s\rho\tilde{\pi}(s)\sum_a\tilde{\pi}(a|s)A_\pi(s,a)
η(π~)=η(π)+∑sρπ~(s)∑aπ~(a∣s)Aπ(s,a)
其中,
η
(
π
)
\eta(\pi)
η(π)是旧策略对应的回报,
η
(
π
~
)
\eta(\tilde{\pi})
η(π~)是新策略对应回报,
ρ
\rho
ρ表示折扣回放频率。
2.3.3对
η
(
π
~
)
\eta(\tilde{\pi})
η(π~)近似,获得替代回报函数
当心策略的状态采样结果小于零,难以优化
η
(
π
~
)
\eta(\tilde{\pi})
η(π~)。以下式代替原回报函数:
L
π
(
π
~
)
=
η
(
π
)
+
∑
s
ρ
π
(
s
)
∑
a
π
~
(
a
∣
s
)
A
π
(
s
,
a
)
L_\pi(\tilde{\pi})=\eta(\pi)+\sum_{s} \rho_\pi (s)\sum_{a}\tilde{\pi}(a|s)A_\pi(s,a)
Lπ(π~)=η(π)+∑sρπ(s)∑aπ~(a∣s)Aπ(s,a)
原回报函数和替代回报函数相比,唯一区别在于状态分布不同。
2.3.4控制
π
\pi
π和
π
~
\tilde{\pi}
π~之间的散度小于a,就能保证回报单调增长
2.3.5利用重要采样,对算法进一步近似
简化过程不多叙述(主要是我写不动了),最终将TRPO问题简化为:
max
θ
E
s
∼
ρ
t
h
e
t
a
o
l
d
,
a
∼
π
θ
o
l
d
[
π
θ
(
a
∣
s
)
π
θ
o
l
d
A
θ
o
l
d
(
s
,
a
)
]
\max_\theta E_{s\thicksim \rho_{theta_{old}},a\thicksim \pi_{\theta_{old}}}[\frac{\pi_\theta(a|s)}{\pi_{\theta_{old}}}A_{\theta_{old}}(s,a)]
maxθEs∼ρthetaold,a∼πθold[πθoldπθ(a∣s)Aθold(s,a)]
s
u
b
j
e
c
t
t
o
E
s
∼
ρ
t
h
e
t
a
o
l
d
[
D
K
L
(
π
θ
(
⋅
∣
s
)
)
∣
∣
π
θ
(
⋅
∣
s
)
]
≤
σ
subject\quad to\quad E_{s\thicksim \rho_{theta_{old}}}[D_{KL}(\pi_\theta(\cdot|s))||\pi_\theta(\cdot|s)]\leq\sigma
subjecttoEs∼ρthetaold[DKL(πθ(⋅∣s))∣∣πθ(⋅∣s)]≤σ
2.3.6对目标函数进行一阶逼近,约束函数进行二阶逼近
TRPO进一步简化为不等式约束的标准化问题:
min
θ
−
(
∇
θ
L
θ
o
l
d
(
θ
)
∣
θ
=
θ
o
l
d
⋅
(
θ
−
θ
o
l
d
)
)
]
\min_\theta -(\nabla_\theta L_{\theta_{old}}(\boldsymbol{\theta})|_{\theta=\theta_{old}}\cdot(\boldsymbol{\theta}-\boldsymbol{\theta}_{old}))]
minθ−(∇θLθold(θ)∣θ=θold⋅(θ−θold))]
s
u
b
j
e
c
t
t
o
1
2
(
θ
o
l
d
−
θ
)
T
A
(
θ
o
l
d
)
(
θ
o
l
d
−
θ
)
≤
δ
subject\quad to\quad \frac{1}{2}(\boldsymbol{\theta}_{old}-\boldsymbol{\theta})^T\boldsymbol{A}(\boldsymbol{\theta}_{old})(\boldsymbol{\theta}_{old}-\boldsymbol{\theta})\leq\delta
subjectto21(θold−θ)TA(θold)(θold−θ)≤δ
其中,
L
θ
o
l
d
(
θ
)
∣
θ
=
θ
o
l
d
=
E
s
∼
ρ
t
h
e
t
a
o
l
d
[
π
θ
(
a
∣
s
)
π
θ
o
l
d
A
θ
o
l
d
(
s
,
a
)
]
L_{\theta_{old}}(\boldsymbol{\theta})|_{\theta=\theta_{old}}=E_{s\thicksim \rho_{theta_{old}}}[\frac{\pi_\theta(a|s)}{\pi_{\theta_{old}}}A_{\theta_{old}}(s,a)]
Lθold(θ)∣θ=θold=Es∼ρthetaold[πθoldπθ(a∣s)Aθold(s,a)]
将
D
K
L
(
π
θ
(
⋅
∣
s
)
∣
∣
π
θ
(
⋅
∣
s
)
)
D_{KL}(\pi_\theta(\cdot|s)||\pi_\theta(\cdot|s))
DKL(πθ(⋅∣s)∣∣πθ(⋅∣s))利用泰勒进行二阶展开:
D
K
L
(
π
θ
(
⋅
∣
s
)
∣
∣
π
θ
(
⋅
∣
s
)
)
=
−
1
2
Δ
θ
T
E
θ
o
l
d
[
∇
2
log
π
θ
o
l
d
]
Δ
θ
D_{KL}(\pi_\theta(\cdot|s)||\pi_\theta(\cdot|s))=-\frac{1}{2}\Delta\boldsymbol{\theta}^T E_{\theta_{old}}[\nabla^2\log\pi_{\theta_{old}}]\Delta\boldsymbol{\theta}
DKL(πθ(⋅∣s)∣∣πθ(⋅∣s))=−21ΔθTEθold[∇2logπθold]Δθ
令:
A
=
E
θ
o
l
d
[
∇
2
log
π
θ
o
l
d
]
\boldsymbol{A}=E_{\theta_{old}}[\nabla^2\log\pi_{\theta_{old}}]
A=Eθold[∇2logπθold]
2.3.7使用共轭梯度法求解最优更新量
1)计算一个搜索方向
2)求取更新步长
β
\beta
β
3.随机性Actor-Critic及变种
主导思想:使用相对准确的函数
Q
w
(
s
,
a
)
Q_w(s,a)
Qw(s,a)对行为值函数
Q
π
(
s
,
a
)
Q_\pi(s,a)
Qπ(s,a)近似,用近似的值函数来指导策略参数更新。
“行动者-评论家”方法,相当于行动者在行动的同时有评论家指点继而行动者做得越来越好。即使用Critic餐石化值函数,对其进行评估:
Q
w
(
s
,
a
)
≈
Q
π
θ
(
s
,
a
)
Q_w(s,a)\approx Q_{\pi_\theta}(s,a)
Qw(s,a)≈Qπθ(s,a)
Actor按照Critic得到的行为值函数,引导策略参数
θ
\boldsymbol{\theta}
θ的更新:
Δ
θ
=
α
∇
θ
log
π
θ
(
s
,
a
)
Q
w
(
s
,
a
)
\Delta\boldsymbol{\theta}=\alpha\nabla_\theta\log\pi_\theta(s,a)Q_w(s,a)
Δθ=α∇θlogπθ(s,a)Qw(s,a)
3.1AC方法
Critic通过自举(根据后续状态值更新当前状态值)的方式估计
Q
π
θ
(
s
,
a
)
Q_{\pi_\theta}(s,a)
Qπθ(s,a)。
3.1.1在线策略AC方法
用来采样的策略同时也是需要评估改进的策略,记
π
(
s
∣
a
,
θ
)
\pi(s|a,\boldsymbol{\theta})
π(s∣a,θ)。Actor遵循随机策略梯度定理对策略参数更新,Critic进行策略评估。
以线性逼近函数为例:
Q
w
(
s
,
a
)
=
w
T
ϕ
(
s
,
a
)
Q_w(s,a)=\boldsymbol{w}^T\phi(s,a)
Qw(s,a)=wTϕ(s,a)
Critic通过TD(0)更新
w
\boldsymbol{w}
w,Actor通过策略梯度更新
θ
\boldsymbol{\theta}
θ,则有:对一给定样本,存在TD残差:
δ
t
=
r
s
a
+
γ
w
T
ϕ
(
s
t
+
!
,
a
t
+
1
)
−
w
T
ϕ
(
s
t
,
a
t
)
\delta_t=r_s^a+\gamma\boldsymbol{w}^T\phi(s_{t+!},a_{t+1})-\boldsymbol{w}^T\phi(s_t,a_t)
δt=rsa+γwTϕ(st+!,at+1)−wTϕ(st,at)
则Critic的近似参数
w
\boldsymbol{w}
w更新公式为:
w
t
+
1
=
w
t
+
β
δ
t
ϕ
(
s
t
,
a
t
)
\boldsymbol{w}_{t+1}=\boldsymbol{w}_t+\beta\delta_t\phi(s_t,a_t)
wt+1=wt+βδtϕ(st,at)
Actor策略参数更新公式为:
θ
=
θ
+
α
∇
θ
log
π
θ
(
s
,
a
)
Q
w
(
s
,
a
)
\boldsymbol{\theta}=\boldsymbol{\theta}+\alpha\nabla_\theta\log\pi_\theta(s,a)Q_w(s,a)
θ=θ+α∇θlogπθ(s,a)Qw(s,a)
实际情况中,常通过神经网络逼近
Q
w
(
s
,
a
)
Q_w(s,a)
Qw(s,a)
3.1.2离线策略AC方法
一般使用行为策略
β
(
a
∣
s
)
\beta(a|s)
β(a∣s)来进行采样生成轨迹,
β
(
a
∣
s
)
≠
π
(
s
∣
a
,
θ
)
\beta(a|s)\neq\pi(s|a,\boldsymbol{\theta})
β(a∣s)=π(s∣a,θ),并给予此轨迹来进行目标策略
π
(
s
∣
a
,
θ
)
\pi(s|a,\boldsymbol{\theta})
π(s∣a,θ)的评估和改进。
对离线策略的目标函数基于
θ
\boldsymbol{\theta}
θ求梯度,可得:
∇
θ
J
β
(
π
θ
)
≈
E
s
∼
ρ
β
,
a
∼
β
[
π
β
(
a
∣
s
)
π
θ
β
(
a
∣
s
)
∇
θ
log
π
θ
(
s
∣
a
)
Q
π
(
s
,
a
)
]
\nabla_\theta J_{\beta}(\pi_\theta)\approx E_{s\thicksim\rho^\beta,a\thicksim\beta}[\frac{\pi_\beta(a|s)}{\pi_{\theta_{\beta}(a|s)}}\nabla_\theta\log\pi_\theta(s|a)Q_\pi(s,a)]
∇θJβ(πθ)≈Es∼ρβ,a∼β[πθβ(a∣s)πβ(a∣s)∇θlogπθ(s∣a)Qπ(s,a)]
根据乘法求导法则,有
∇
θ
(
π
θ
(
s
∣
a
)
Q
w
(
s
,
a
)
)
=
∇
θ
π
θ
(
s
,
a
)
Q
π
(
s
,
a
)
\nabla_\theta(\pi_\theta(s|a)Q_w(s,a))=\nabla_\theta\pi_\theta(s,a)Q_\pi(s,a)
∇θ(πθ(s∣a)Qw(s,a))=∇θπθ(s,a)Qπ(s,a)
使用OffPAC(离线策略AC)算法使用行为策略
β
(
a
∣
s
)
\beta(a|s)
β(a∣s)产生采样轨迹,Critic通过这些数据学习,用
Q
w
(
s
,
a
)
Q_w(s,a)
Qw(s,a)逼近真实函数
Q
π
(
s
,
a
)
Q_\pi(s,a)
Qπ(s,a)。
其他部分和在线方法一致,近似值函数参数
w
\boldsymbol{w}
w更新公式为:
w
t
+
1
=
w
t
+
η
π
θ
(
a
∣
s
)
β
(
a
∣
s
)
δ
t
(
w
)
ϕ
(
s
t
,
a
t
)
\boldsymbol{w}_{t+1}=\boldsymbol{w}_t+\eta\frac{\pi_\theta(a|s)}{\beta(a|s)}\delta_t(\boldsymbol{w})\phi(s_t,a_t)
wt+1=wt+ηβ(a∣s)πθ(a∣s)δt(w)ϕ(st,at)
Critic进行策略评估时,采用带梯度修正项的时序差分法(TDC)。
实在敲不动公式了,照片放上来有点糊,大家凑活一下吧(原文在鳄鱼书P208)
3.1.3兼容性近似函数定理
一个完整AC方法包括两部分:1.Critic引入近似值函数
Q
w
(
s
,
a
)
Q_w(s,a)
Qw(s,a),通过时序差分法更新参数
w
\boldsymbol{w}
w,对真实
Q
π
(
s
,
a
)
Q_\pi(s,a)
Qπ(s,a)近似;2.Actor遵循随机策略梯度定理,在Critic指导下,通过梯度上升法,对随机梯度
π
(
s
∣
a
,
θ
)
\pi(s|a,\boldsymbol{\theta})
π(s∣a,θ)的参数
θ
\boldsymbol{\theta}
θ进行迭代更新。
采用兼容性近似函数定理设计
Q
w
(
s
,
a
)
Q_w(s,a)
Qw(s,a)。近似函数
Q
w
(
s
,
a
)
Q_w(s,a)
Qw(s,a)同时满足两个条件,就可以消除偏差:
条件1:
Q
w
(
s
,
a
)
=
∇
θ
log
π
θ
(
a
∣
s
)
T
w
Q_w(s,a)=\nabla_\theta\log\pi_\theta(a|s)^T\boldsymbol{w}
Qw(s,a)=∇θlogπθ(a∣s)Tw
条件2:
w
\boldsymbol{w}
w使下式均方误差最小:
ε
2
(
w
)
=
E
s
∼
ρ
π
,
a
∼
π
θ
[
(
Q
w
(
s
,
a
)
−
Q
π
(
s
,
a
)
)
2
]
\varepsilon^2(\boldsymbol{w})=E_{s\thicksim\rho^\pi,a\thicksim\pi_\theta}[(Q_w(s,a)-Q_\pi(s,a))^2]
ε2(w)=Es∼ρπ,a∼πθ[(Qw(s,a)−Qπ(s,a))2]
二者同时满足,有:
∇
θ
J
(
π
θ
)
=
E
s
∼
ρ
π
,
a
∼
π
θ
[
∇
θ
log
π
θ
(
a
∣
s
)
Q
w
(
s
,
a
)
]
\nabla_\theta J(\pi_\theta)= E_{s\thicksim\rho^\pi,a\thicksim\pi_\theta}[\nabla_\theta\log\pi_\theta(a|s)Q_w(s,a)]
∇θJ(πθ)=Es∼ρπ,a∼πθ[∇θlogπθ(a∣s)Qw(s,a)]
近似值函数
Q
w
(
s
,
a
)
Q_w(s,a)
Qw(s,a)可在没有偏差的情况下代替真实值函数
Q
π
(
s
,
a
)
Q_\pi(s,a)
Qπ(s,a)
3.2 A2C方法
引入基线方法进一步减小方差。
基本思想:从策略梯度里减去一个基线函数
B
(
s
)
B(s)
B(s),要求这一函数仅与状态有关,与行为无关,因而不改变梯度本身。
基线函数特点:能在不改变策略梯度的同时降低其方差。
基函数选择:基于当前状态的值函数
B
(
s
)
=
V
π
θ
(
s
)
B(s)=V_{\pi_\theta}(s)
B(s)=Vπθ(s)这样就可以基于优势函数对策略梯度进行修改。
Critic部分是一个优势函数,对应的采用Advantage AC方法
理论上,在进行Critic部分计算时,需两个近似函数,同时更新两套参数,一套近似值函数,一套近似行为值函数。但实操时,用状态函数的近似函数来代替实际的状态函数,并树挪死TD误差只需一套参数即可完成计算。
δ
v
=
r
+
γ
V
v
(
s
′
)
−
V
v
(
s
)
\delta_v=r+\gamma V_v(s')-V_v(s)
δv=r+γVv(s′)−Vv(s)
E
π
θ
[
δ
π
θ
∣
s
,
a
]
=
A
π
θ
(
s
,
a
)
E_{\pi_\theta}[\delta_{\pi_\theta}|s,a]=A_{\pi_\theta}(s,a)
Eπθ[δπθ∣s,a]=Aπθ(s,a)
最后,策略梯度计算公式变为:
∇
θ
J
(
θ
)
=
E
π
θ
[
∇
θ
log
π
θ
(
s
,
a
)
δ
π
θ
]
\nabla_\theta J(\boldsymbol{\theta})=E_{\pi_\theta}[\nabla_\theta\log\pi_\theta(s,a)\delta_{\pi_\theta}]
∇θJ(θ)=Eπθ[∇θlogπθ(s,a)δπθ]
3.3 A3C方法
这一段我发现了一篇更容易理解的博客:https://blog.csdn.net/u013236946/article/details/73195035/?ops_request_misc=&request_id=&biz_id=102&utm_term=%E5%BC%82%E6%AD%A5Sarsa&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-8-73195035.first_rank_v2_pc_rank_v29&spm=1018.2226.3001.4187
3.3.1异步方法介绍
异步方法的核心思想:并行的交互采样和训练。
具体如下图所示:
使用异步方式训练深度神经网络时,需要注意:
1)在单个机器上使用多个CPU线程进行异步学习,而不是针对每个学习者分别使用单独的机器和参数服务器。保持学习者在同一台机器上,可以消除发送梯度和参数的通信成本;
2)多个学习者需要使用不同的探索策略;
3)一部方法可以应用在各种标准强化学习方法中。
常见的四中异步训练的强化学习算法,分别是one-step Q-learning, one-step Sarsa, n-step Q-learning, and advantage actor-critic(A3C)。
这里给出了异步Q-learning-单线程执行过程。其他一不训练方法的伪代码,就不在此罗列了,下文直接给出A3C方法。
3.3.2A3C方法详述
A3C原理:两套模型,可看做是中央大脑的全局模型和在子线程中运行的本地模型。
此算法不论全局模型还是本地模型,本质都是AC算法。此算法需要更新计算两个参数:策略函数
π
(
a
t
∣
s
t
;
θ
)
\pi(a_t|s_t;\boldsymbol{\theta})
π(at∣st;θ)的参数
θ
\boldsymbol{\theta}
θ、值函数
V
(
s
t
;
θ
v
)
V(s_t;\boldsymbol{\theta}_v)
V(st;θv)的 参数
θ
v
\boldsymbol{\theta}_v
θv.
涉及的更新公式有两条:1)梯度下降法更新值函数参数
θ
v
\boldsymbol{\theta}_v
θv,同异步n步Q-learning方法一样,使用n步积累梯度;2)梯度上升法更新策略参数
θ
\boldsymbol{\theta}
θ
确定性策略梯度(DPG)
确定性策略优点:确定性策略的动作是确定的,所以在确定性策略梯度存在的情况下,对确定性策略梯度的求解不需要再动作空间进行采样几分。因此,其需要的样本数据小,确定性策略方法的策略比随机策略效率高很多。
1.确定性策略梯度定理
定理内容:假设在一个马尔科夫决策过程模型中,
p
(
s
′
∣
s
,
a
)
p(s'|s,a)
p(s′∣s,a),
∇
a
p
(
s
′
∣
s
,
a
)
\nabla_ap(s'|s,a)
∇ap(s′∣s,a),
μ
θ
(
s
)
\mu_\theta(s)
μθ(s),
∇
θ
μ
θ
(
s
)
\nabla_\theta\mu_\theta(s)
∇θμθ(s),
r
(
s
,
a
)
r(s,a)
r(s,a),
∇
a
r
(
s
,
a
)
\nabla_ar(s,a)
∇ar(s,a),
p
1
(
s
)
p_1(s)
p1(s)分别存在,并且对于s,s’,a,
θ
\boldsymbol{\theta}
θ都是连续函数,(其中,
p
1
(
s
)
p_1(s)
p1(s)表示初始状态概率分布,
p
(
s
′
∣
s
,
a
)
p(s'|s,a)
p(s′∣s,a)表示状态转移概率。以上条件是为了保证
∇
θ
μ
θ
(
s
)
\nabla_\theta\mu_\theta(s)
∇θμθ(s)和
∇
a
Q
μ
(
s
,
a
)
\nabla_aQ_\mu(s,a)
∇aQμ(s,a)),则确定性策略梯度一定存在且满足:
∇
θ
J
(
μ
θ
)
=
E
s
∼
ρ
μ
[
∇
θ
μ
θ
(
s
)
∇
a
Q
μ
(
s
,
a
)
∣
a
≈
μ
θ
(
s
)
]
\nabla_\theta J(\mu_\theta)=E_{s\thicksim\rho_\mu}[\nabla_\theta\mu_\theta(s)\nabla_a Q_\mu(s,a)|_{a\approx\mu_\theta(s)}]
∇θJ(μθ)=Es∼ρμ[∇θμθ(s)∇aQμ(s,a)∣a≈μθ(s)]
2.DPG方法
2.1在线策略确定性AC方法
确定性的AC方法由两部分组成,Critic评估动作值函数,Actor对行为值函数采用梯度上升法更新策略参数。与随机AC方法不同的是,Actor更新
μ
θ
\mu_\theta
μθ的参数
θ
\boldsymbol{\theta}
θ时遵循的是确定性策略梯度定理。
Critic可使用可为近似函数
Q
w
(
s
,
a
)
Q_w(s,a)
Qw(s,a)代替真实的动作值函数
Q
μ
(
s
,
a
)
Q_\mu(s,a)
Qμ(s,a),并通过策略评估方法(如Sarsa)来进行迭代更新,得到参数值
w
\boldsymbol{w}
w
δ
t
=
r
t
+
γ
Q
w
(
s
t
+
1
,
a
t
+
1
)
−
Q
w
(
s
t
,
a
t
)
\delta_t=r_t+\gamma Q_w(s_{t+1},a_{t+1})-Q_w(s_t,a_t)
δt=rt+γQw(st+1,at+1)−Qw(st,at)
w
t
+
1
=
w
t
+
α
w
δ
t
∇
w
Q
w
(
s
t
,
a
t
)
\boldsymbol{w}_{t+1}=\boldsymbol{w}_{t}+\alpha_w\delta_t\nabla_wQ_w(s_t,a_t)
wt+1=wt+αwδt∇wQw(st,at)
θ
t
+
1
=
θ
t
+
α
θ
∇
θ
μ
θ
(
s
t
)
∇
a
Q
w
(
s
t
,
a
t
)
∣
a
=
μ
θ
(
s
)
\boldsymbol{\theta}_{t+1}=\boldsymbol{\theta}_{t}+\alpha_\theta\nabla_\theta\mu_\theta(s_t)\nabla_aQ_w(s_t,a_t)|_{a=\mu_\theta(s)}
θt+1=θt+αθ∇θμθ(st)∇aQw(st,at)∣a=μθ(s)
2.2离线策略确定性AC
行动策略为随机策略,评估策略为确定策略。
离线策略方法使用行为策略
π
(
s
,
a
)
\pi(s,a)
π(s,a)采样生成样本数据,基于样本数据对目标策略
μ
θ
(
s
)
\mu_\theta(s)
μθ(s)进行改进。目标策略
μ
θ
(
s
)
\mu_\theta(s)
μθ(s)是确定性策略。根据确定性策略梯度定理得到离线策略的梯度:
∇
θ
J
β
(
μ
θ
)
=
E
s
∼
ρ
μ
[
∇
θ
μ
θ
(
a
∣
s
)
∇
a
Q
μ
(
s
,
a
)
∣
a
=
μ
θ
(
s
)
]
\nabla_\theta J_\beta(\mu_\theta)=E_{s\thicksim\rho^\mu}[\nabla_\theta\mu_\theta(a|s)\nabla_a Q_\mu(s,a)|_{a=\mu_\theta(s)}]
∇θJβ(μθ)=Es∼ρμ[∇θμθ(a∣s)∇aQμ(s,a)∣a=μθ(s)]
Critic使用Q-learning来估计和更新行为值函数,关键算法如下:
δ
t
=
r
t
+
γ
Q
w
(
s
t
+
1
,
μ
θ
(
s
t
+
1
)
)
−
Q
w
(
s
t
,
a
t
)
\delta_t=r_t+\gamma Q_w(s_{t+1},\mu_\theta(s_{t+1}))-Q_w(s_t,a_t)
δt=rt+γQw(st+1,μθ(st+1))−Qw(st,at)
w
t
+
1
=
w
t
+
α
w
δ
t
∇
w
Q
w
(
s
t
,
a
t
)
\boldsymbol{w}_{t+1}=\boldsymbol{w}_{t}+\alpha_w\delta_t\nabla_wQ_w(s_t,a_t)
wt+1=wt+αwδt∇wQw(st,at)
θ
t
+
1
=
θ
t
+
α
θ
∇
θ
μ
θ
(
s
t
)
∇
a
Q
w
(
s
t
,
a
t
)
∣
a
=
μ
θ
(
s
)
\boldsymbol{\theta}_{t+1}=\boldsymbol{\theta}_{t}+\alpha_\theta\nabla_\theta\mu_\theta(s_t)\nabla_aQ_w(s_t,a_t)|_{a=\mu_\theta(s)}
θt+1=θt+αθ∇θμθ(st)∇aQw(st,at)∣a=μθ(s)
随机离线策略AC算法通常对Critic核Actor都使用重要性采样。
2.3兼容性近似函数定理
确定性策略条件下的兼容性近似函数定理:找到一个兼容性近似函数
Q
w
(
s
,
a
)
Q_w(s,a)
Qw(s,a),是的
Q
w
(
s
,
a
)
Q_w(s,a)
Qw(s,a)在代替真值
Q
μ
(
s
,
a
)
Q_\mu(s,a)
Qμ(s,a)的同时,不改变真值的梯度
∇
a
Q
μ
(
s
,
a
)
\nabla_a Q_\mu(s,a)
∇aQμ(s,a)。
只要
Q
w
(
s
,
a
)
Q_w(s,a)
Qw(s,a)同时满足如下两个条件,可以说
Q
w
(
s
,
a
)
Q_w(s,a)
Qw(s,a)与策略
μ
θ
(
s
)
\mu_\theta(s)
μθ(s)兼容。可以消除偏差。
条件1:
∇
a
Q
w
(
s
,
a
)
∣
a
=
μ
θ
(
s
)
=
∇
θ
μ
θ
(
s
)
T
w
\nabla_aQ_w(s,a)|_{a=\mu_\theta(s)}=\nabla_\theta\mu_\theta(s)^T\boldsymbol{w}
∇aQw(s,a)∣a=μθ(s)=∇θμθ(s)Tw
条件2:近似值函数参数w使下式均方误差最小:
M
S
E
(
θ
,
w
)
=
E
[
ε
(
s
;
θ
,
w
)
T
ε
(
s
;
θ
,
w
)
]
MSE(\theta,\boldsymbol{w})=E[\varepsilon(s;\boldsymbol{\theta},\boldsymbol{w})^T\varepsilon(s;\boldsymbol{\theta},\boldsymbol{w})]
MSE(θ,w)=E[ε(s;θ,w)Tε(s;θ,w)]
ε
(
s
;
θ
,
w
)
=
∇
a
Q
w
(
s
,
a
)
∣
a
=
μ
θ
(
s
)
−
∇
a
Q
μ
(
s
,
a
)
∣
a
=
μ
θ
(
s
)
\varepsilon(s;\boldsymbol{\theta},\boldsymbol{w})=\nabla_aQ_w(s,a)|_{a=\mu_\theta(s)}-\nabla_aQ_\mu(s,a)|_{a=\mu_\theta(s)}
ε(s;θ,w)=∇aQw(s,a)∣a=μθ(s)−∇aQμ(s,a)∣a=μθ(s)
当两条件同时满足时,有:
∇
θ
J
(
μ
θ
)
=
E
[
=
∇
θ
μ
θ
(
a
∣
s
)
−
∇
a
Q
w
(
s
,
a
)
∣
a
=
μ
θ
(
s
)
]
\nabla_\theta J(\mu_\theta)=E[=\nabla_\theta\mu_\theta(a|s)-\nabla_aQ_w(s,a)|_{a=\mu_\theta(s)}]
∇θJ(μθ)=E[=∇θμθ(a∣s)−∇aQw(s,a)∣a=μθ(s)]
此定理对于在线策略和离线策略均成立
3.DDPG(深度确定性策略梯度)方法
这部分我看到了一篇还不错的文献,放一下网址,可以参考:https://blog.csdn.net/kenneth_yu/article/details/78478356?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163766828516780366562177%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=163766828516780366562177&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-78478356.first_rank_v2_pc_rank_v29&utm_term=DDPG&spm=1018.2226.3001.4187
DDPG分别用神经网络逼近行为值函数
A
(
s
,
a
)
A(s,a)
A(s,a)(Critic网络)和
μ
θ
(
s
)
\mu_\theta(s)
μθ(s)(Actor网络),实现了直接从原始数据中进行端对端的学习。
3.1算法要点
为了打破数据间的相关性,采用和DQN一样的经历回放方法。
DDPG分别为Critic网络
Q
(
s
,
a
∣
θ
Q
)
Q(s,a|\boldsymbol{\theta}_Q)
Q(s,a∣θQ)和Actor网络
μ
(
s
∣
θ
μ
)
\mu(s|\boldsymbol{\theta}_\mu)
μ(s∣θμ),创建两个神经网络的靠背,即:分别创建两个独立的目标网络
Q
′
(
s
,
a
∣
θ
Q
′
)
Q'(s,a|\boldsymbol{\theta}_{Q'})
Q′(s,a∣θQ′)和
Q
′
(
s
∣
θ
μ
′
)
Q'(s|\boldsymbol{\theta}_{\mu'})
Q′(s∣θμ′)
在训练完一个批量(mini-batch)的数据之后,DDPG通过梯度上升/梯度下降算法更新当前(online)网络的参数。然后再通过滑动平均(soft update)方法更新目标(target)网络的参数。
其中,滑动平均遵循:
θ
′
←
τ
θ
+
(
1
−
τ
)
θ
′
\boldsymbol{\theta}'\leftarrow\tau\boldsymbol{\theta}+(1-\tau)\boldsymbol{\theta}'
θ′←τθ+(1−τ)θ′,且
τ
≪
1
\tau\ll1
τ≪1.
DDPG为了保证有效探索,通过给确定性策略添加噪声N外构建行为策略。
μ
′
(
s
t
)
μ
(
s
t
∣
θ
t
μ
)
+
N
\mu'(s_t)\mu(s_t|\boldsymbol{\theta}_t^\mu)+N
μ′(st)μ(st∣θtμ)+N
除此之外,DDPG还使用了一个被称为批量标准化(Batch Normalization, BN)的深度学习技术来应对不同梁刚问题。
3.2算法流程
整个DDPG一共涉及四个神经网络:Critic目标网络Q’和Critic当前网络Q;Actor目标网络
μ
′
\mu'
μ′和Actor当前网络
μ
\mu
μ。
具体流程如下: