赞
踩
本专栏按照 https://lilianweng.github.io/lil-log/2018/04/08/policy-gradient-algorithms.html 顺序进行总结 。
S A C \color{red}SAC SAC :[ paper:Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor | code ]
基于DDPG,主要是利用 off policy 的样本效率比较高 以及 最大熵 来增加探索,把actor critic放入算法中,结合了on policy的stable性质。将policy entropy 放入reward 中,共同maximize,鼓励agent在reward大区域内增加探索。
算法描述:将最大化的目标加入policy entropy,鼓励agent探索。
软演员-评论家算法(Soft Actor-Critic,SAC)将策略的熵度量纳入回报函数中用以鼓励探索:我们希望学习到一种尽可能随机行动的策略,同时仍然能够在任务中完成目标。它是一个遵循最大熵强化学习框架的离线演员-评论家模型。一个先例工作是软Q学习。
SAC算法中的三个关键部分如下:
综上所述:策略的训练目标是同时最大化期望累积回报以及策略的熵度量:
J ( θ ) = ∑ t = 1 T E ( s t , a t ) ∼ ρ π θ [ r ( s t , a t ) + α H ( π θ ( . ∣ s t ) ) ] J(\theta)=\sum_{t=1}^{T} \mathbb{E}_{\left(s_{t}, a_{t}\right) \sim \rho_{\pi_{\theta}}}\left[r\left(s_{t}, a_{t}\right)+\alpha \mathcal{H}\left(\pi_{\theta}\left( . | s_{t}\right)\right)\right] J(θ)=t=1∑TE(st,at)∼ρπθ[r(st,at)+αH(πθ(.∣st))]
其中:
熵最大化使得策略再训练过程中可以:
(1)进行更多的探索
(2)捕获近似最优策略的多种模式(例如,如果存在似乎同样好的多种选项,则策略应该为每个选项分配以相同的概率被选中)。
准确地说,SAC旨在学习三个函数:
软
Q
Q
Q 值以及软状态值 分别定义如下:
Q
(
s
t
,
a
t
)
=
r
(
s
t
,
a
t
)
+
γ
E
s
t
+
1
∼
ρ
π
(
s
)
[
V
(
s
t
+
1
)
]
; 根据贝尔曼方程
where
V
(
s
t
)
=
E
a
t
∼
π
[
Q
(
s
t
,
a
t
)
−
α
log
π
(
a
t
∣
s
t
)
]
; 软状态值函数
Thus, Q ( s t , a t ) = r ( s t , a t ) + γ E ( s t + 1 , a t + 1 ) ∼ ρ π [ Q ( s t + 1 , a t + 1 ) − α log π ( a t + 1 ∣ s t + 1 ) ] \text{Thus, } ~~\textcolor{red}{Q(s_t, a_t)} = r(s_t, a_t) + \gamma \mathbb{E}_{(s_{t+1}, a_{t+1}) \sim \rho_{\pi}} [Q(s_{t+1}, a_{t+1}) - \alpha \log \pi(a_{t+1} \vert s_{t+1})] Thus, Q(st,at)=r(st,at)+γE(st+1,at+1)∼ρπ[Q(st+1,at+1)−αlogπ(at+1∣st+1)]
软状态值函数通过最小化均方误差来训练:
J
V
(
ψ
)
=
E
s
t
∼
D
[
1
2
(
V
ψ
(
s
t
)
−
E
[
Q
w
(
s
t
,
a
t
)
−
log
π
θ
(
a
t
∣
s
t
)
]
)
2
]
其中梯度为:
∇
ψ
J
V
(
ψ
)
=
∇
ψ
V
ψ
(
s
t
)
(
V
ψ
(
s
t
)
−
Q
w
(
s
t
,
a
t
)
+
log
π
θ
(
a
t
∣
s
t
)
)
其中 D \mathcal{D} D 代表经验回放缓冲。
软Q值函数通过最小化软贝尔曼残差来训练:
J
Q
(
w
)
=
E
(
s
t
,
a
t
)
∼
D
[
1
2
(
Q
w
(
s
t
,
a
t
)
−
(
r
(
s
t
,
a
t
)
+
γ
E
s
t
+
1
∼
ρ
π
(
s
)
[
V
ψ
ˉ
(
s
t
+
1
)
]
)
)
2
]
其中梯度为:
∇
w
J
Q
(
w
)
=
∇
w
Q
w
(
s
t
,
a
t
)
(
Q
w
(
s
t
,
a
t
)
−
r
(
s
t
,
a
t
)
−
γ
V
ψ
ˉ
(
s
t
+
1
)
)
其中
ψ
ˉ
\bar{\psi}
ψˉ 代表目标值函数,它是个指数移动平均值(exponential moving average)或者只是采用一种“硬”方式进行周期更新。就像DQN中目标Q网络中的参数一样,为了使得训练过程更加稳定。
SAC通过最小化如下 KL散度来去更新策略:
π
new
=
arg
min
π
′
∈
Π
D
KL
(
π
′
(
.
∣
s
t
)
∥
exp
(
Q
π
old
(
s
t
,
.
)
)
Z
π
old
(
s
t
)
)
=
arg
min
π
′
∈
Π
D
KL
(
π
′
(
.
∣
s
t
)
∥
exp
(
Q
π
old
(
s
t
,
.
)
−
log
Z
π
old
(
s
t
)
)
)
objective for update:
J
π
(
θ
)
=
∇
θ
D
KL
(
π
θ
(
.
∣
s
t
)
∥
exp
(
Q
w
(
s
t
,
.
)
−
log
Z
w
(
s
t
)
)
)
=
E
a
t
∼
π
[
−
log
(
exp
(
Q
w
(
s
t
,
a
t
)
−
log
Z
w
(
s
t
)
)
π
θ
(
a
t
∣
s
t
)
)
]
=
E
a
t
∼
π
[
log
π
θ
(
a
t
∣
s
t
)
−
Q
w
(
s
t
,
a
t
)
+
log
Z
w
(
s
t
)
]
其中 ∏ \prod ∏ 是潜在策略的集合,我们可以将这些策略建模为容易处理的形式;例如, ∏ \prod ∏ 可以是高斯混合分布族,虽然建模时复杂度较高但是具有很强的表达能力并且易于处理。 Z π old ( s t ) Z^{\pi_\text{old}}(s_t) Zπold(st) 是用于正则化分布的配分函数。它一般是很难处理的但所幸对于梯度值没有影响。最小化 J π ( θ ) J_π(θ) Jπ(θ) 的方式依赖于 ∏ \prod ∏ 的选择。
这个更新保证了 Q π new ( s t , a t ) ≥ Q π old ( s t , a t ) Q^{\pi_\text{new}}(s_t, a_t) \geq Q^{\pi_\text{old}}(s_t, a_t) Qπnew(st,at)≥Qπold(st,at),请在原论文附录B.2的证明中 查阅这个引理。
详见博客说明,十分清晰明了:最前沿:深度解读Soft Actor-Critic 算法
一旦我们为软动作-值,软状态值和策略网络定义了目标函数和梯度,软演员-评论家算法就很简单了:
伪代码如下(在连续任务下):
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。