当前位置: 首页 > news >正文

强化学习的前世今生(五)— SAC算法

书接前四篇
强化学习的前世今生(一)
强化学习的前世今生(二)
强化学习的前世今生(三)— 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)=Exp(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=1np(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π(atst)[logπ(atst)](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} π(atst)=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αlogexp(α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} π(atst)=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(atst)(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π(atst)[Qsoftπ(st,at)αlog(atst)](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+1p(st+1st,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×AR
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+1p(st+1st,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π(atst)[Q(st,at)logπ(atst)](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×AR以及 ∣ 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π(atst)[log(Zπoldexp(α1Qπold(st))π(atst))]=πΠargminEatπ(atst)[logπ(atst)α1Qπold(atst)+logZπold]=πΠargminEatπ(atst)[logπ(atst)α1Qπold(atst)](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=0Tr(st,at)]subject toH(π(st))H0(7.17)
通过引入对偶变量 α t \alpha_t αt,可将上式的求解过程等价于从 t = T − 1 t=T-1 t=T1 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+1p(st+1st,at),at+1πt+1(at+1st+1)[Q(st+1,at+1)αtlogπt+1(at+1st+1)]=r(st,at)+Est+1p(st+1st,at),at+1πt+1(at+1st+1)[Q(st+1,at+1)αtlogπt+1(at+1st+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+1st+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(θ)=EstR,atπθ(atst)[αlogπθ(atst)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)) atN(μθ(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) ϵtN(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(θ)=EstR,ϵtN(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πθ(atst)的形式:设 u t u_t ut的概率分布是 μ ( u t ∣ s t ) \mu(u_t|s_t) μ(utst),根据复合函数的概率分布法则,动作 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} π(atst)=μ(tanh1(at)st) det(dattanh1(at)) =μ(utst) det(datdut) =μ(utst) det((dutdat)1) =μ(utst) 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(1tanh2(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πθ(atst)=logμ(utst)i=1Dlog(1tanh2(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)=EstR,atπθ(atst)[αlogπ(atst)α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 θθ,wjwj,j=1,2

3 获取环境初始状态 s 0 s_0 s0

4 如果策略网络参数或价值网络参数没有收敛,循环执行

5 根据当前策略决定的动作分布 π θ ( a t ∣ s t ) \pi_{\theta}(a_t|s_t) πθ(atst)中抽样动作 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+1si+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+1si+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=1N(yiQwj(si,ai))2
11 自动推导梯度并更新价值网络参数 w ← w − η w ∇ w L ( w ) w\leftarrow w-\eta_{w}\nabla_{w}L(w) wwηwwL(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=1NQw(αlogπθ(a~tst)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=1N(αlogπ(atst)α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*} w1w2ϕ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] 动手学强化学习

相关文章:

  • 1.2 HarmonyOS NEXT分布式架构核心技术解析
  • JVM 性能调优
  • 鸿蒙OSUniApp 移动端直播流播放实战:打造符合鸿蒙设计风格的播放器#三方框架 #Uniapp
  • Linux之文件进程间通信信号
  • 多商户系统源码性能调优实战:从瓶颈定位到高并发架构设计!
  • ✨1.1.1 按位与运算替代求余运算优化场景
  • Oracle数据类型AnyType与AnyData
  • 直线模组在手术机器人中有哪些技术挑战?
  • nic_monitor-全面监控以太网、IB、RoCE网络流量的工具
  • 职坐标精选嵌入式AI物联网开源项目
  • LangChain【3】之进阶内容
  • 蓝牙攻防实战:蓝牙技术详解
  • 本地部署AI工作流
  • 【机器人】具身导航 VLN 最新论文汇总 | Vision-and-Language Navigation
  • mapbox高阶,PMTiles介绍,MBTiles、PMTiles对比,加载PMTiles文件
  • 如何科学测量系统的最高QPS?
  • 图书管理系统的设计与实现
  • RuoYi前后端分离框架集成手机短信验证码(二)之前端篇
  • 手机照片太多了存哪里?
  • 6年“豹变”,vivo S30系列引领手机进入场景“体验定义”时代
  • 颍州网站建设/网站推广网络推广
  • 网站开发及企业推广/站长分析工具
  • 北京做网站的大公司/英文网站建设
  • 重庆网站设计系统/自媒体平台app
  • 政府建设网站费用/搜索引擎有哪些技巧
  • 网上做公司网站怎么做/创建网站教程