书接前四篇
强化学习的前世今生(一)
强化学习的前世今生(二)
强化学习的前世今生(三)— PPO算法
强化学习的前世今生(四)— DDPG算法
本文为大家介绍SAC算法
7 SAC
7.1 最大熵强化学习
在信息论中,熵(entropy)是用来衡量一个随机变量不确定性大小的度量,对于一个随机变量
X
X
X,其定义为
H
(
X
)
=
E
x
∼
p
(
x
)
[
−
log
p
(
x
)
]
(7.1)
\begin{align*} H(X)&=\mathbb{E}_{x\sim p(x)}[-\log p(x)]\\ \end{align*}\tag{7.1}
H(X)=Ex∼p(x)[−logp(x)](7.1)
首先,说明
X
X
X的不确定性和熵的大小的关系:
若
X
X
X为连续型随机变量,简便起见,仅考虑
X
X
X服从正态分布
p
(
x
)
=
N
(
μ
,
σ
2
)
p(x)=\mathcal{N}(\mu,\sigma^2)
p(x)=N(μ,σ2)的情况,此时
H
(
X
)
=
1
2
log
(
2
π
e
σ
2
)
(7.2)
H(X)=\frac{1}{2}\log(2\pi e\sigma^2)\tag{7.2}
H(X)=21log(2πeσ2)(7.2)
若
X
X
X为离散型随机变量,可能的取值为
x
1
,
⋯
,
x
n
x_1,\cdots,x_n
x1,⋯,xn,对应的概率为
p
(
x
1
)
,
⋯
,
p
(
x
n
)
p(x_1),\cdots,p(x_n)
p(x1),⋯,p(xn),则其对应的熵可以写为
H
(
X
)
=
−
∑
i
=
1
n
p
(
x
i
)
log
p
(
x
i
)
(7.3)
H(X)=-\sum_{i=1}^{n}p(x_i)\log p(x_i)\tag{7.3}
H(X)=−i=1∑np(xi)logp(xi)(7.3)
不难看出,当
X
X
X在其所有可能取值处概率相等时,熵的值最大,为
log
(
n
)
\log(n)
log(n);当
X
X
X在某个取值处概率为
1
1
1,其他取值 处概率为
0
0
0时,熵的值最小,为
0
0
0
综上所述,可以看出, X X X的不确定性越大,其对应的熵也越大。后文也记服从某个分布 p ( ⋅ ) p(\cdot) p(⋅)的随机变量的熵为 H ( p ( ⋅ ) ) H(p(\cdot)) H(p(⋅))
最大熵强化学习(maximum entropy RL)算法希望在最大化累积奖励的同时,还要使得策略更加随机,因此在强化学习的目标函数中引入了一个熵正则项,并将最大熵强化学习框架下的最优策略定义为
π
M
a
x
E
n
t
∗
=
d
e
f
arg
max
π
E
π
{
∑
t
=
0
∞
γ
t
[
r
(
s
t
,
a
t
)
+
α
H
(
π
(
⋅
∣
s
t
)
)
]
}
(7.4)
\pi^{\ast}_{\mathrm{MaxEnt}}\overset{\mathrm{def}}{=}\underset{\pi}{\arg\max}\,\mathbb{E}_{\pi}\left\{\left.\sum_{t=0}^{\infty}\gamma^{t}\left[r(s_t,a_t)+\alpha H(\pi(\cdot|s_t))\right]\right.\right\}\tag{7.4}
πMaxEnt∗=defπargmaxEπ{t=0∑∞γt[r(st,at)+αH(π(⋅∣st))]}(7.4)
其中
H
(
π
(
⋅
∣
s
t
)
)
=
E
a
t
∼
π
(
a
t
∣
s
t
)
[
−
log
π
(
a
t
∣
s
t
)
]
(7.5)
H(\pi(\cdot|s_t))=\mathbb{E}_{a_t\sim \pi(a_t|s_t)}[-\log \pi(a_t|s_t)]\tag{7.5}
H(π(⋅∣st))=Eat∼π(at∣st)[−logπ(at∣st)](7.5)
表示策略
π
\pi
π在状态
s
t
s_t
st下的不确定度,
α
\alpha
α为正则化系数,也称温度系数,用来控制熵的重要程度。此处,我们称这种更加随机的策略。
7.2 能量模型
借鉴物理学中的玻尔兹曼分布(Boltzmann distribution),可以得出能量模型(energy-based model)
p
(
x
)
=
exp
(
−
E
(
x
)
)
Z
=
exp
(
−
E
(
x
)
)
∫
exp
(
−
E
(
x
)
)
d
x
(7.6)
p(x)=\frac{\exp(-E(x))}{Z}=\frac{\exp(-E(x))}{\int \exp(-E(x))dx}\tag{7.6}
p(x)=Zexp(−E(x))=∫exp(−E(x))dxexp(−E(x))(7.6)
其中
E
(
x
)
E(x)
E(x)是状态
x
x
x的能量,
Z
Z
Z为配分函数(partition function),用于归一化
在本节中,通过能量模型来给出策略
π
\pi
π的形式如下,其中策略
π
\pi
π的能量定义为
−
1
α
Q
s
o
f
t
π
(
s
t
,
a
t
)
-\frac{1}{\alpha}Q^{\pi}_{\mathrm{soft}}(s_t,a_t)
−α1Qsoftπ(st,at)
π
(
a
t
∣
s
t
)
=
exp
(
1
α
Q
s
o
f
t
π
(
s
t
,
a
t
)
)
∫
exp
(
1
α
Q
s
o
f
t
π
(
s
t
,
a
)
)
d
a
(7.7)
\pi(a_t|s_t)=\frac{\exp\left(\frac{1}{\alpha}Q^{\pi}_{\mathrm{soft}}(s_t,a_t)\right)}{\int \exp\left(\frac{1}{\alpha}Q^{\pi}_{\mathrm{soft}}(s_t,a)\right)da}\tag{7.7}
π(at∣st)=∫exp(α1Qsoftπ(st,a))daexp(α1Qsoftπ(st,at))(7.7)
此处策略
π
\pi
π具有softmax函数的形式,故后续该策略形式的方法称为soft类方法。
定义策略
π
\pi
π的soft Q value为
Q
s
o
f
t
π
(
s
t
,
a
t
)
=
d
e
f
r
(
s
t
,
a
t
)
+
E
(
s
t
+
1
,
⋯
)
∼
p
π
(
s
t
+
1
,
⋯
∣
s
t
,
a
t
)
{
∑
l
=
0
∞
γ
t
+
l
[
r
t
+
l
+
α
H
(
π
(
⋅
∣
s
t
+
l
)
)
]
}
(7.8)
Q^{\pi}_{\mathrm{soft}}(s_t,a_t)\overset{\mathrm{def}}{=}r(s_t,a_t)+\mathbb{E}_{(s_{t+1},\cdots)\sim p^{\pi}(s_{t+1},\cdots|s_{t},a_{t})}\left\{\sum_{l=0}^{\infty}\gamma^{t+l}\left[r_{t+l}+\alpha H(\pi(\cdot|s_{t+l}))\right]\right\}\tag{7.8}
Qsoftπ(st,at)=defr(st,at)+E(st+1,⋯)∼pπ(st+1,⋯∣st,at){l=0∑∞γt+l[rt+l+αH(π(⋅∣st+l))]}(7.8)
再定义策略
π
\pi
π的soft state value为
V
s
o
f
t
π
(
s
t
)
=
d
e
f
α
log
∫
exp
(
1
α
Q
π
(
s
t
,
a
′
)
)
d
a
′
(7.9)
V^{\pi}_{\mathrm{soft}}(s_t)\overset{\mathrm{def}}{=}\alpha \log\int\exp\left(\frac{1}{\alpha}Q^{\pi}(s_t,a^{\prime})\right)da^{\prime}\tag{7.9}
Vsoftπ(st)=defαlog∫exp(α1Qπ(st,a′))da′(7.9)
结合
(
7.7
)
,
(
7.10
)
(7.7),(7.10)
(7.7),(7.10),可以得到
π
(
a
t
∣
s
t
)
=
exp
(
1
α
Q
s
o
f
t
π
(
s
t
,
a
t
)
)
exp
(
1
α
V
s
o
f
t
π
(
s
t
)
)
=
exp
(
1
α
(
Q
s
o
f
t
π
(
s
t
,
a
t
)
−
V
s
o
f
t
π
(
s
t
)
)
)
(7.10)
\pi(a_t|s_t)=\frac{\exp\left(\frac{1}{\alpha}Q^{\pi}_{\mathrm{soft}}(s_t,a_t)\right)}{\exp\left(\frac{1}{\alpha}V^{\pi}_{\mathrm{soft}}(s_t)\right)}=\exp\left(\frac{1}{\alpha}(Q^{\pi}_{\mathrm{soft}}(s_t,a_t)-V^{\pi}_{\mathrm{soft}}(s_t))\right)\tag{7.10}
π(at∣st)=exp(α1Vsoftπ(st))exp(α1Qsoftπ(st,at))=exp(α1(Qsoftπ(st,at)−Vsoftπ(st)))(7.10)
其中
1
α
V
π
(
s
t
)
\frac{1}{\alpha}V^{\pi}(s_t)
α1Vπ(st)为配分函数的对数,由该式不难看出
V
s
o
f
t
π
(
s
t
)
=
Q
s
o
f
t
π
(
s
t
,
a
t
)
−
α
log
(
a
t
∣
s
t
)
(7.11)
\begin{align*} V^{\pi}_{\mathrm{soft}}(s_t)&=Q^{\pi}_{\mathrm{soft}}(s_t,a_t)-\alpha\log(a_t|s_t)\\ \end{align*}\tag{7.11}
Vsoftπ(st)=Qsoftπ(st,at)−αlog(at∣st)(7.11)
为增强计算的鲁棒性,也可将
(
7.11
)
(7.11)
(7.11)写成
V
s
o
f
t
π
(
s
t
)
=
E
a
t
∼
π
(
a
t
∣
s
t
)
[
Q
s
o
f
t
π
(
s
t
,
a
t
)
−
α
log
(
a
t
∣
s
t
)
]
(7.12)
V^{\pi}_{\mathrm{soft}}(s_t)=\mathbb{E}_{a_t\sim\pi(a_t|s_t)}[Q^{\pi}_{\mathrm{soft}}(s_t,a_t)-\alpha\log(a_t|s_t)]\tag{7.12}
Vsoftπ(st)=Eat∼π(at∣st)[Qsoftπ(st,at)−αlog(at∣st)](7.12)
soft Q value和soft state value之间的关系为
Q
s
o
f
t
π
(
s
t
,
a
t
)
=
r
(
s
t
,
a
t
)
+
γ
E
s
t
+
1
∼
p
(
s
t
+
1
∣
s
t
,
a
t
)
[
V
s
o
f
t
π
(
s
t
+
1
)
]
(7.13)
Q^{\pi}_{\mathrm{soft}}(s_t,a_t)=r(s_t,a_t)+\gamma\mathbb{E}_{s_{t+1}\sim p(s_{t+1}|s_{t},a_{t})}\left[V^{\pi}_{\mathrm{soft}}(s_{t+1})\right]\\\tag{7.13}
Qsoftπ(st,at)=r(st,at)+γEst+1∼p(st+1∣st,at)[Vsoftπ(st+1)](7.13)
上式也称为soft贝尔曼方程。
7.3 soft策略迭代
soft策略迭代算法由二条引理和一条定理给出,其中引理一指导策略评估,引理二指导策略提升,而最后的定理则保证经过不断交替策略评估与策略提升,策略将收敛于最优策略,下面逐条说明。
为说明引理一,首先定义贝尔曼回溯算子
T
π
\mathcal{T}^{\pi}
Tπ:对于任意映射
Q
:
S
×
A
→
R
Q:\mathcal{S}\times\mathcal{A}\rightarrow\mathbb{R}
Q:S×A→R
T
π
Q
(
s
t
,
a
t
)
=
r
(
s
t
,
a
t
)
+
γ
E
s
t
+
1
∼
p
(
s
t
+
1
∣
s
t
,
a
t
)
[
V
(
s
t
+
1
)
]
(7.14)
\mathcal{T}^{\pi}Q(s_t,a_t)=r(s_t,a_t)+\gamma\mathbb{E}_{s_{t+1}\sim p(s_{t+1}|s_{t},a_{t})}[V(s_{t+1})]\tag{7.14}
TπQ(st,at)=r(st,at)+γEst+1∼p(st+1∣st,at)[V(st+1)](7.14)
其中
V
(
s
t
)
=
E
a
t
∼
π
(
a
t
∣
s
t
)
[
Q
(
s
t
,
a
t
)
−
log
π
(
a
t
∣
s
t
)
]
(7.15)
V(s_t)=\mathbb{E}_{a_t\sim\pi(a_t|s_t)}[Q(s_t,a_t)-\log\pi(a_t|s_t)]\tag{7.15}
V(st)=Eat∼π(at∣st)[Q(st,at)−logπ(at∣st)](7.15)
引理一(soft策略评估)
{\color{brown}引理一\text{(soft策略评估)}}
引理一(soft策略评估):对一个贝尔曼回溯算子
T
π
\mathcal{T}^{\pi}
Tπ,任意给定一个初始映射
Q
0
:
S
×
A
→
R
Q_0:\mathcal{S}\times\mathcal{A}\rightarrow\mathbb{R}
Q0:S×A→R以及
∣
A
∣
<
∞
|\mathcal{A}|<\infty
∣A∣<∞,并定义
Q
k
+
1
=
T
π
Q
k
Q_{k+1}=\mathcal{T}^{\pi}Q_{k}
Qk+1=TπQk,则当
k
→
∞
k\rightarrow\infty
k→∞时,序列
{
Q
k
}
\{Q_{k}\}
{Qk}收敛于策略
π
\pi
π的soft Q value
再说明引理二,首先定义
π
n
e
w
=
arg
min
π
∈
Π
D
K
L
(
π
(
⋅
∣
s
t
)
∥
exp
(
Q
π
o
l
d
(
⋅
∣
s
t
)
)
Z
π
o
l
d
)
=
arg
min
π
∈
Π
E
a
t
∼
π
(
a
t
∣
s
t
)
[
log
(
π
(
a
t
∣
s
t
)
exp
(
1
α
Q
π
o
l
d
(
⋅
∣
s
t
)
)
Z
π
o
l
d
)
]
=
arg
min
π
∈
Π
E
a
t
∼
π
(
a
t
∣
s
t
)
[
log
π
(
a
t
∣
s
t
)
−
1
α
Q
π
o
l
d
(
a
t
∣
s
t
)
+
log
Z
π
o
l
d
]
=
arg
min
π
∈
Π
E
a
t
∼
π
(
a
t
∣
s
t
)
[
log
π
(
a
t
∣
s
t
)
−
1
α
Q
π
o
l
d
(
a
t
∣
s
t
)
]
(7.16)
\begin{align*} \pi_{\mathrm{new}} &=\underset{\pi\in\Pi}{\arg\min}\,D_{KL}\left(\pi(\cdot|s_t)\left\|\frac{\exp(Q^{\pi_{\mathrm{old}}}(\cdot|s_t))}{Z^{\pi_{\mathrm{old}}}}\right.\right)\\ &=\underset{\pi\in\Pi}{\arg\min}\,\mathbb{E}_{a_t\sim\pi(a_t|s_t)}\left[\log\left(\frac{\pi(a_t|s_t)}{\frac{\exp(\frac{1}{\alpha}Q^{\pi_{\mathrm{old}}}(\cdot|s_t))}{Z^{\pi_{\mathrm{old}}}}}\right)\right]\\ &=\underset{\pi\in\Pi}{\arg\min}\,\mathbb{E}_{a_t\sim\pi(a_t|s_t)}\left[\log\pi(a_t|s_t)-\frac{1}{\alpha}Q^{\pi_{\mathrm{old}}}(a_t|s_t)+\log Z^{\pi_{\mathrm{old}}}\right]\\ &=\underset{\pi\in\Pi}{\arg\min}\,\mathbb{E}_{a_t\sim\pi(a_t|s_t)}\left[\log\pi(a_t|s_t)-\frac{1}{\alpha}Q^{\pi_{\mathrm{old}}}(a_t|s_t)\right]\\ \end{align*}\tag{7.16}
πnew=π∈ΠargminDKL(π(⋅∣st)
Zπoldexp(Qπold(⋅∣st)))=π∈ΠargminEat∼π(at∣st)[log(Zπoldexp(α1Qπold(⋅∣st))π(at∣st))]=π∈ΠargminEat∼π(at∣st)[logπ(at∣st)−α1Qπold(at∣st)+logZπold]=π∈ΠargminEat∼π(at∣st)[logπ(at∣st)−α1Qπold(at∣st)](7.16)
其中
Z
π
o
l
d
Z^{\pi_{\mathrm{old}}}
Zπold为归一化因子。可以看出,上式要求新策略下的动作分布与玻尔兹曼分布尽可能接近。
引理二(soft策略提升) {\color{brown}引理二\text{(soft策略提升)}} 引理二(soft策略提升):对任意 π o l d ∈ Π \pi_{\mathrm{old}}\in\Pi πold∈Π,令 π n e w \pi_{\mathrm{new}} πnew为 ( 7.16 ) (7.16) (7.16)的解,则 Q π n e w ( s t , a t ) ⩾ Q π o l d ( s t , a t ) Q^{\pi_{\mathrm{new}}}(s_t,a_t)\geqslant Q^{\pi_{\mathrm{old}}}(s_t,a_t) Qπnew(st,at)⩾Qπold(st,at)
定理(soft策略迭代) {\color{brown}定理\text{(soft策略迭代)}} 定理(soft策略迭代):交替应用soft策略评估和soft策略提升,任意初始策略 π \pi π收敛到最优策略 π ∗ \pi^{\ast} π∗,即对任意 π ∈ Π \pi\in\Pi π∈Π和 ( s t , a t ) ∈ S × A (s_t,a_t)\in\mathcal{S}\times\mathcal{A} (st,at)∈S×A,且 ∣ A ∣ < ∞ |\mathcal{A}|<\infty ∣A∣<∞,满足 Q π ∗ ( s t , a t ) > Q π ( s t , a t ) Q^{\pi^{\ast}}(s_t,a_t)>Q^{\pi}(s_t,a_t) Qπ∗(st,at)>Qπ(st,at)
尽管上述理论可以找到最优策略,但只能在表格情况下执行算法,因此后面对该方法进行近似,以适用于连续空间领域,即使用神经网络来近似Q值。
7.4 SAC算法
SAC(Soft Actor Critic)算法中,采用的优化框架为
max
π
E
π
[
∑
t
=
0
T
r
(
s
t
,
a
t
)
]
subject to
H
(
π
(
⋅
∣
s
t
)
)
⩾
H
0
\begin{align*} &\underset{\pi}{\max}\mathbb{E}_{\pi}\left[\sum_{t=0}^{T}r(s_t,a_t)\right]\qquad\text{subject to}\,\,\,H(\pi(\cdot|s_t))\geqslant H_0\tag{7.17} \end{align*}
πmaxEπ[t=0∑Tr(st,at)]subject toH(π(⋅∣st))⩾H0(7.17)
通过引入对偶变量
α
t
\alpha_t
αt,可将上式的求解过程等价于从
t
=
T
−
1
t=T-1
t=T−1到
t
=
0
t=0
t=0,交替优化
π
t
∗
=
arg
max
π
t
E
(
s
t
,
a
t
)
∼
p
π
t
(
s
t
,
a
t
)
[
Q
∗
(
s
t
,
a
t
)
+
α
t
H
(
π
t
(
⋅
∣
s
t
)
)
−
α
t
H
0
]
α
t
∗
=
arg
max
α
t
E
(
s
t
,
a
t
)
∼
p
π
t
(
s
t
,
a
t
)
[
α
t
H
(
π
t
∗
(
⋅
∣
s
t
)
)
−
α
t
H
0
]
\begin{align*} \pi_{t}^{\ast}&=\underset{\pi_{t}}{\arg\max}\,\mathbb{E}_{(s_t,a_t)\sim p^{\pi_t}(s_t,a_t)}[Q^{\ast}(s_t,a_t)+\alpha_t H(\pi_t(\cdot|s_t))-\alpha_t H_0]\tag{7.18}\\ \alpha_t^{\ast}&=\underset{\alpha_{t}}{\arg\max}\,\mathbb{E}_{(s_t,a_t)\sim p^{\pi_t}(s_t,a_t)}[\alpha_t H(\pi^{\ast}_t(\cdot|s_t))-\alpha_t H_0]\tag{7.19} \end{align*}
πt∗αt∗=πtargmaxE(st,at)∼pπt(st,at)[Q∗(st,at)+αtH(πt(⋅∣st))−αtH0]=αtargmaxE(st,at)∼pπt(st,at)[αtH(πt∗(⋅∣st))−αtH0](7.18)(7.19)
其中
p
π
t
(
s
t
,
a
t
)
p^{\pi_t}(s_t,a_t)
pπt(st,at)表示在策略
π
t
\pi_t
πt下在
t
t
t时刻状态动作对为
(
s
t
,
a
t
)
(s_t,a_t)
(st,at)的概率,
Q
Q
Q函数定义如下
Q
(
s
T
,
a
T
)
=
Q
∗
(
s
T
,
a
T
)
=
r
(
s
T
,
a
T
)
Q
(
s
t
,
a
t
)
=
r
(
s
t
,
a
t
)
+
E
s
t
+
1
∼
p
(
s
t
+
1
∣
s
t
,
a
t
)
,
a
t
+
1
∼
π
t
+
1
(
a
t
+
1
∣
s
t
+
1
)
[
Q
(
s
t
+
1
,
a
t
+
1
)
−
α
t
log
π
t
+
1
(
a
t
+
1
∣
s
t
+
1
)
]
Q
∗
(
s
t
,
a
t
)
=
r
(
s
t
,
a
t
)
+
E
s
t
+
1
∼
p
(
s
t
+
1
∣
s
t
,
a
t
)
,
a
t
+
1
∼
π
t
+
1
∗
(
a
t
+
1
∣
s
t
+
1
)
[
Q
(
s
t
+
1
,
a
t
+
1
)
−
α
t
log
π
t
+
1
∗
(
a
t
+
1
∣
s
t
+
1
)
]
(7.20)
\begin{align*} Q(s_T,a_T)&=Q^{\ast}(s_T,a_T)=r(s_T,a_T)\\ Q(s_t,a_t)&=r(s_t,a_t)+\mathbb{E}_{s_{t+1}\sim p(s_{t+1}|s_t,a_{t}),a_{t+1}\sim\pi_{t+1}(a_{t+1}|s_{t+1})}[Q(s_{t+1},a_{t+1})-\alpha_t \log\pi_{t+1}(a_{t+1}|s_{t+1})]\\ Q^{\ast}(s_t,a_t)&=r(s_t,a_t)+\mathbb{E}_{s_{t+1}\sim p(s_{t+1}|s_t,a_{t}),a_{t+1}\sim\pi^{\ast}_{t+1}(a_{t+1}|s_{t+1})}[Q(s_{t+1},a_{t+1})-\alpha_t \log\pi^{\ast}_{t+1}(a_{t+1}|s_{t+1})]\\ \end{align*}\tag{7.20}
Q(sT,aT)Q(st,at)Q∗(st,at)=Q∗(sT,aT)=r(sT,aT)=r(st,at)+Est+1∼p(st+1∣st,at),at+1∼πt+1(at+1∣st+1)[Q(st+1,at+1)−αtlogπt+1(at+1∣st+1)]=r(st,at)+Est+1∼p(st+1∣st,at),at+1∼πt+1∗(at+1∣st+1)[Q(st+1,at+1)−αtlogπt+1∗(at+1∣st+1)](7.20)
可以看到,
Q
Q
Q函数的递推关系与soft 策略评估一致,策略优化的形式在稍加转换后也与soft 策略提升一致
SAC是一个Actor-Critic类算法,其中包含 5 个神经网络 \color{red}5个神经网络 5个神经网络,分别为两个用于避免Q值的过高估计的训练动作价值网络,以及用于这两个网络各自对应的目标动作价值网络,和一个策略网络。
根据soft 策略评估方法,任意一个训练动作价值网络
Q
w
j
,
j
=
1
,
2
Q_{w_j},j=1,2
Qwj,j=1,2的损失函数为
L
(
w
j
)
=
E
(
s
t
,
a
t
,
r
t
+
1
,
s
t
+
1
)
∼
R
[
(
Q
w
j
(
s
t
,
a
t
)
−
(
r
t
+
min
j
=
1
,
2
Q
w
j
−
(
s
t
+
1
,
a
t
+
1
)
−
α
log
π
θ
(
a
t
+
1
∣
s
t
+
1
)
)
)
2
]
(7.21)
\begin{align*} L(w_j) &=\mathbb{E}_{(s_t,a_t,r_{t+1},s_{t+1})\sim\mathcal{R}}\left[(Q_{w_j}(s_t,a_t)-(r_{t}+ \min_{j=1,2}Q_{w^{-}_{j}}(s_{t+1},a_{t+1})-\alpha\log\pi_{\theta}(a_{t+1}|s_{t+1})))^2\right]\\ \end{align*}\tag{7.21}
L(wj)=E(st,at,rt+1,st+1)∼R[(Qwj(st,at)−(rt+j=1,2minQwj−(st+1,at+1)−αlogπθ(at+1∣st+1)))2](7.21)
其中取
min
\min
min是为了避免Q值估计过高,下同。
根据soft 策略提升方法,策略网络
π
θ
\pi_{\theta}
πθ的损失函数可写为
L
(
θ
)
=
E
s
t
∼
R
,
a
t
∼
π
θ
(
a
t
∣
s
t
)
[
α
log
π
θ
(
a
t
∣
s
t
)
−
min
j
=
1
,
2
Q
w
j
(
s
t
,
a
t
)
]
(7.22)
L(\theta)=\mathbb{E}_{s_t\sim\mathcal{R},a_t\sim\pi_{\theta}(a_t|s_t)}[\alpha\log\pi_{\theta}(a_t|s_t)-\min_{j=1,2}Q_{w_j}(s_t,a_t)]\tag{7.22}
L(θ)=Est∼R,at∼πθ(at∣st)[αlogπθ(at∣st)−j=1,2minQwj(st,at)](7.22)
注意,SAC的策略网络输出的并不是动作本身的概率,而是高斯分布的均值
μ
θ
(
s
t
)
\mu_{\theta}(s_t)
μθ(st)和标准差
σ
θ
(
s
t
)
\sigma_{\theta}(s_t)
σθ(st),得到高斯分布参数后根据
a
t
∼
N
(
μ
θ
(
s
t
)
,
σ
θ
2
(
s
t
)
)
a_t\sim\mathcal{N}(\mu_{\theta}(s_t),\sigma^2_{\theta}(s_t))
at∼N(μθ(st),σθ2(st))进行采样得到动作
虽然采样的过程和策略参数
θ
\theta
θ有关,但因为
a
t
a_t
at无法表示为
θ
\theta
θ的确定性函数,故采样过程不可导,即
a
t
a_t
at无法对
θ
\theta
θ求导。而要通过
(
7.22
)
(7.22)
(7.22)优化策略参数,必须知道动作对策略参数的导数。因此采用
重参数化技巧(reparameterization trick)
\color{magenta}\text{{重参数化技巧}(reparameterization trick)}
重参数化技巧(reparameterization trick),先从一个单位高斯分布
ϵ
t
∼
N
(
0
,
1
)
\epsilon_t\sim\mathcal{N}(0,1)
ϵt∼N(0,1)中采样,再将采样结果乘以标准差
σ
θ
\sigma_{\theta}
σθ再加上均值
μ
θ
\mu_{\theta}
μθ,再考虑到动作的输出常会被限制在固定范围,如
(
−
1
,
1
)
(-1,1)
(−1,1),故
u
t
=
μ
θ
(
s
t
)
+
σ
θ
(
s
t
)
∗
ϵ
t
a
t
=
t
a
n
h
(
u
t
)
\begin{align*} u_t&=\mu_{\theta}(s_t)+\sigma_{\theta}(s_t)*\epsilon_t\tag{7.23}\\ a_t&=\mathrm{tanh}(u_t)\tag{7.24} \end{align*}
utat=μθ(st)+σθ(st)∗ϵt=tanh(ut)(7.23)(7.24)
通过重参数化技巧,将采样过程转换为了以
θ
\theta
θ为参数的确定映射,记为
a
t
=
f
θ
(
ϵ
t
;
s
t
)
a_t=f_{\theta}(\epsilon_t;s_t)
at=fθ(ϵt;st),此时
a
t
a_t
at对
θ
\theta
θ可导。可以策略网络的重新写出损失函数为
L
(
θ
)
=
E
s
t
∼
R
,
ϵ
t
∼
N
(
0
,
1
)
[
α
log
π
θ
(
f
θ
(
ϵ
t
;
s
t
)
∣
s
t
)
−
min
j
=
1
,
2
Q
w
j
(
s
t
,
f
θ
(
ϵ
t
;
s
t
)
)
]
(7.24)
L(\theta)=\mathbb{E}_{s_t\sim\mathcal{R},\epsilon_t\sim\mathcal{N}(0,1)}[\alpha\log\pi_{\theta}(f_{\theta}(\epsilon_t;s_t)|s_t)-\min_{j=1,2}Q_{w_j}(s_t,f_{\theta}(\epsilon_t;s_t))]\tag{7.24}
L(θ)=Est∼R,ϵt∼N(0,1)[αlogπθ(fθ(ϵt;st)∣st)−j=1,2minQwj(st,fθ(ϵt;st))](7.24)
下面解释在上面中并未详细说明的
log
π
θ
(
a
t
∣
s
t
)
\log\pi_{\theta}(a_t|s_t)
logπθ(at∣st)的形式:设
u
t
u_t
ut的概率分布是
μ
(
u
t
∣
s
t
)
\mu(u_t|s_t)
μ(ut∣st),根据复合函数的概率分布法则,动作
a
t
a_t
at的概率为
π
(
a
t
∣
s
t
)
=
μ
(
t
a
n
h
−
1
(
a
t
)
∣
s
t
)
∣
d
e
t
(
t
a
n
h
−
1
(
a
t
)
d
a
t
)
∣
=
μ
(
u
t
∣
s
t
)
∣
d
e
t
(
d
u
t
d
a
t
)
∣
=
μ
(
u
t
∣
s
t
)
∣
d
e
t
(
(
d
a
t
d
u
t
)
−
1
)
∣
=
μ
(
u
t
∣
s
t
)
∣
d
e
t
(
d
a
t
d
u
t
)
∣
−
1
(7.25)
\begin{align*} \pi(a_t|s_t)&=\mu(\mathrm{tanh}^{-1}(a_t)|s_t)\left|\mathrm{det}\left(\frac{\mathrm{tanh}^{-1}(a_t)}{da_t}\right)\right|\\ &=\mu(u_t|s_t)\left|\mathrm{det}\left(\frac{du_t}{da_t}\right)\right|\\ &=\mu(u_t|s_t)\left|\mathrm{det}\left(\left(\frac{da_t}{du_t}\right)^{-1}\right)\right|\\ &=\mu(u_t|s_t)\left|\mathrm{det}\left(\frac{da_t}{du_t}\right)\right|^{-1}\\ \end{align*}\tag{7.25}
π(at∣st)=μ(tanh−1(at)∣st)
det(dattanh−1(at))
=μ(ut∣st)
det(datdut)
=μ(ut∣st)
det((dutdat)−1)
=μ(ut∣st)
det(dutdat)
−1(7.25)
上式中第二个等号开始只是数值上的相等,而非分布本身,由于
d
a
t
d
u
t
=
d
i
a
g
(
1
−
t
a
n
h
2
(
u
t
)
)
\frac{da_t}{du_t}=\mathrm{diag}(\mathbf{1}-\mathrm{tanh}^2(u_t))
dutdat=diag(1−tanh2(ut)),故
log
π
θ
(
a
t
∣
s
t
)
=
log
μ
(
u
t
∣
s
t
)
−
∑
i
=
1
D
log
(
1
−
t
a
n
h
2
(
u
t
i
)
)
(7.26)
\log\pi_{\theta}(a_t|s_t)=\log\mu(u_t|s_t)-\sum_{i=1}^{D}\log(1-\mathrm{tanh}^2(u_t^{i}))\tag{7.26}
logπθ(at∣st)=logμ(ut∣st)−i=1∑Dlog(1−tanh2(uti))(7.26)
其中
D
D
D表示动作
a
t
a_t
at的维度,也是中间变量
u
t
u_t
ut的维度。
上面说明了SAC中训练动作价值网络和策略网络的更新方式,而目标网络的更新方式与DDPG中相同。
此外,根据 ( 7.19 ) (7.19) (7.19)可以写出对偶变量 α t \alpha_t αt的损失函数
L ( α t ) = E s t ∼ R , a t ∼ π θ ( a t ∣ s t ) [ − α log π ( a t ∣ s t ) − α H 0 ] (7.27) L(\alpha_t)=\mathbb{E}_{s_t\sim\mathcal{R},a_t\sim\pi_{\theta}(a_t|s_t)}[-\alpha\log\pi(a_t|s_t)-\alpha H_0]\tag{7.27} L(αt)=Est∼R,at∼πθ(at∣st)[−αlogπ(at∣st)−αH0](7.27)
SAC算法的伪代码如下:
1 初始化策略网络参数 θ \theta θ和两个价值网络参数 w 1 , w 2 w_1,w_2 w1,w2
2 复制相同参数到目标策略网络参数 θ − \theta^{-} θ−和目标价值网络参数 w − w^{-} w−,即令 θ − ← θ , w j − ← w j , j = 1 , 2 \theta^{-}\leftarrow \theta,\,\,w^{-}_j\leftarrow w_j,\,j=1,2 θ−←θ,wj−←wj,j=1,2
3 获取环境初始状态 s 0 s_0 s0
4 如果策略网络参数或价值网络参数没有收敛,循环执行
5 根据当前策略决定的动作分布 π θ ( a t ∣ s t ) \pi_{\theta}(a_t|s_t) πθ(at∣st)中抽样动作 a t a_t at
6 执行动作 a t a_t at,得到奖励 r t r_t rt,进入下一个状态 s t + 1 s_{t+1} st+1
7 将 ( s t , a t , r t , s t + 1 ) (s_t,a_t,r_t,s_{t+1}) (st,at,rt,st+1)放入经验回放池 R \mathcal{R} R
8 从经验回放池 R \mathcal{R} R中抽样 N N N个元组 { ( s i , a i , r i , s i + 1 ) } i = 1 , ⋯ , N \{(s_i,a_i,r_i,s_{i+1})\}_{i=1,\cdots,N} {(si,ai,ri,si+1)}i=1,⋯,N,并采样 a i + 1 ∼ π θ ( a i + 1 ∣ s i + 1 ) a_{i+1}\sim\pi_{\theta}(a_{i+1}|s_{i+1}) ai+1∼πθ(ai+1∣si+1)
9 对每个元组,通过目标网络计算 y i = r i + min j = 1 , 2 Q w j − ( s i + 1 , a i + 1 ) − α log π θ ( a i + 1 ∣ s i + 1 ) y_i=r_{i}+ \min_{j=1,2}Q_{w^{-}_{j}}(s_{i+1},a_{i+1})-\alpha\log\pi_{\theta}(a_{i+1}|s_{i+1}) yi=ri+minj=1,2Qwj−(si+1,ai+1)−αlogπθ(ai+1∣si+1)
10 对两个价值网络
Q
w
j
,
j
=
1
,
2
Q_{w_j},j=1,2
Qwj,j=1,2构造相同的损失函数
L
(
w
j
)
=
1
N
∑
i
=
1
N
(
y
i
−
Q
w
j
(
s
i
,
a
i
)
)
2
L(w_j)=\frac{1}{N}\sum_{i=1}^{N}(y_i-Q_{w_j}(s_i,a_i))^2
L(wj)=N1i=1∑N(yi−Qwj(si,ai))2
11 自动推导梯度并更新价值网络参数
w
←
w
−
η
w
∇
w
L
(
w
)
w\leftarrow w-\eta_{w}\nabla_{w}L(w)
w←w−ηw∇wL(w)
12 采用重参数化技巧采样动作
a
~
t
\tilde{a}_{t}
a~t,用以下损失函数更新策略网络
π
θ
\pi_{\theta}
πθ
L
(
θ
)
=
1
N
∑
i
=
1
N
Q
w
(
α
log
π
θ
(
a
~
t
∣
s
t
)
−
min
j
=
1
,
2
Q
w
j
(
s
t
,
a
t
)
)
L(\theta)=\frac{1}{N}\sum_{i=1}^{N}Q_{w}(\alpha\log\pi_{\theta}(\tilde{a}_{t}|s_t)-\min_{j=1,2}Q_{w_j}(s_t,a_t))
L(θ)=N1i=1∑NQw(αlogπθ(a~t∣st)−j=1,2minQwj(st,at))
13 自动推导梯度并更新价值网络参数
θ
←
θ
−
η
θ
∇
θ
L
(
θ
)
\theta\leftarrow\theta-\eta_{\theta}\nabla_{\theta}L(\theta)
θ←θ−ηθ∇θL(θ)
14 构造
α
\alpha
α的损失函数
L
(
α
)
=
1
N
∑
i
=
1
N
(
−
α
log
π
(
a
t
∣
s
t
)
−
α
H
0
)
L(\alpha)=\frac{1}{N}\sum_{i=1}^{N}(-\alpha\log\pi(a_t|s_t)-\alpha H_0)
L(α)=N1i=1∑N(−αlogπ(at∣st)−αH0)
13 自动推导梯度并更新价值网络参数
α
←
α
−
η
α
∇
α
L
(
α
)
\alpha\leftarrow\alpha-\eta_{\alpha}\nabla_{\alpha}L(\alpha)
α←α−ηα∇αL(α)
14 采用软更新的方式更新目标网络参数
w
1
−
←
ϕ
w
1
+
(
1
−
ϕ
)
w
1
−
w
2
−
←
ϕ
w
2
+
(
1
−
ϕ
)
w
2
−
\begin{align*} w^{-}_1&\leftarrow\phi w_1+(1-\phi)w^{-}_1\\ w^{-}_2&\leftarrow\phi w_2+(1-\phi)w^{-}_2\\\\ \end{align*}
w1−w2−←ϕw1+(1−ϕ)w1−←ϕw2+(1−ϕ)w2−
参考
[1] Reinforcement Learning with Deep Energy-Based Policies
[2] Soft Actor-Critic Algorithms and Applications
[3] Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor
[4] 最前沿:深度解读Soft Actor-Critic 算法
[5] Lil’Log Policy Gradient Algorithms
[6] 动手学强化学习