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

article/2025/8/2 16:07:38

书接前四篇
强化学习的前世今生(一)
强化学习的前世今生(二)
强化学习的前世今生(三)— 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] 动手学强化学习


http://www.hkcw.cn/article/BHCLQxfGbx.shtml

相关文章

优质电子实验记录本如何确保数据不泄密?

实验数据是企业和科研机构的核心资产&#xff0c;承载着创新成果与竞争优势&#xff0c;选择合适的实验记录载体至关重要。本文从传统纸质记录的安全性优劣势出发&#xff0c;对比分析普通电子实验记录本存在的安全问题&#xff0c;详细阐述优质电子实验记录本如何构建数据防护…

RFID 助力钢铁钢帘线生产效率质量双提升

RFID 助力钢铁钢帘线生产效率质量双提升 应用背景 钢铁钢帘线广泛应用于建筑、公路、桥梁、隧道、海洋工程等领域。&#xff0c;其质量和生产效率直接影响性能与安全性。在钢铁钢帘线的生产过程中&#xff0c;面临着诸多挑战。传统生产模式下&#xff0c;各生产环节信息传递不…

4.5V~100V, 3.8A 峰值电流限, 非同步, 降压转换器,LA1823完美替换MP9487方案

一&#xff1a;综述 LA1823 是一款易用的非同步&#xff0c;降压转换器。 该模块集成了 500mΩ 低导通阻抗的高侧 MOSFET。LA1823 使用 COT 控制技术。此种控制方式有利于快速动态响应,同时简化了反馈环路的设计。LA1823 可以提供最大 2A 的持续负载电流。LA1823有150kHz/240kH…

多杆合一驱动城市空间治理智慧化

引言&#xff1a;城市“杆林困境”与智慧化破局 走在现代城市的街道上&#xff0c;路灯、监控、交通信号灯、5G基站等杆体林立&#xff0c;不仅侵占公共空间&#xff0c;更暴露了城市治理的碎片化问题。如何让这些“沉默的钢铁”升级为城市的“智慧神经元”&#xff1f;答案在…

ElasticSearch迁移至openGauss

Elasticsearch 作为一种高效的全文搜索引擎&#xff0c;广泛应用于实时搜索、日志分析等场景。而 openGauss&#xff0c;作为一款企业级关系型数据库&#xff0c;强调事务处理与数据一致性。那么&#xff0c;当这两者的应用场景和技术架构发生交集时&#xff0c;如何实现它们之…

搭建 Select 三级联动架构-东方仙盟插件开发 JavaScript ——仙盟创梦IDE

三级级联开卡必要性 在 “东方仙盟” 相关插件开发中&#xff0c;使用原生 HTML 和 JavaScript 实现三级联动选择&#xff08;如村庄 - 建筑 - 单元的选择&#xff09;有以下好处和意义&#xff0c;学校管理&#xff1a; 对游戏体验的提升 增强交互性&#xff1a;玩家能够通…

SpringBoot+vue+SSE+Nginx实现消息实时推送

一、背景 项目中消息推送&#xff0c;简单的有短轮询、长轮询&#xff0c;还有SSE&#xff08;Server-Sent Events&#xff09;、以及最强大复杂的WebSocket。 至于技术选型&#xff0c;SSE和WebSocket区别&#xff0c;网上有很多&#xff0c;我也不整理了&#xff0c;大佬的链…

软件测试的分类

为什么要软件测试分类呢&#xff1f; 软件测试是软件生命周期中的一个重要的环节&#xff0c;基本伴随着软件整个生命周期&#xff0c;对软件测试分类后&#xff0c;我们可以根据软件生命不同阶段&#xff0c;进行对应的测试&#xff0c;这样就有助于我们条理分明&#xff0c;…

<PLC><socket><西门子>基于西门子S7-1200PLC,实现手机与PLC通讯(通过websocket转接)

前言 本系列是关于PLC相关的博文,包括PLC编程、PLC与上位机通讯、PLC与下位驱动、仪器仪表等通讯、PLC指令解析等相关内容。 PLC品牌包括但不限于西门子、三菱等国外品牌,汇川、信捷等国内品牌。 除了PLC为主要内容外,PLC相关元器件如触摸屏(HMI)、交换机等工控产品,如…

实现一个免费可用的文生图的MCP Server

概述 文生图模型为使用 Cloudflare Worker AI 部署 Flux 模型&#xff0c;是参照视频https://www.bilibili.com/video/BV1UbkcYcE24/?spm_id_from333.337.search-card.all.click&vd_source9ca2da6b1848bc903db417c336f9cb6b的复现Cursor MCP Server实现是参照文章https:/…

Windows安装Miniconda

Windows安装miniconda 下载安装常用命令配置powershellVSCode配置虚拟环境 下载 进入官网 https://www.anaconda.com/download/success 下载windows版本的miniconda Miniconda3-latest-Windows-x86_64.exe 安装 一直点击下一步&#xff0c;可以选择安装路径 配置环境变量…

华为OD机试真题——二叉树中序遍历(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现

2025 A卷 200分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式! 2025华为OD真题目录+全流程解析/备考攻略/经验分享 华为OD机试真题《二叉树中序遍历》: 目录 …

现代密码学 | 高级加密标准(AES)

接下来我们将讨论目前大多数计算机和硬件基础设施所使用的最重要的加密算法&#xff0c;例如高级加密标准&#xff08;AES&#xff09;、里弗斯特-沙米尔-阿德曼算法&#xff08;RSA&#xff09;、椭圆曲线加密&#xff08;ECC&#xff09;、基于格的加密、&#xff08;环&…

cocos creator资源管理器,资源动态加载和释放

cocos 2.4.11版本 cocos 动态加载的资源需要自己增加引用和减少引用计数 cc.Asset.addRef 和 cc.Asset.decRef 注意&#xff1a; 1.使用当前代码管理资源&#xff0c;要区分项目中的静态资源和动态资源&#xff0c;静态资源就是预制体或者场景中的资源&#xff0c;代码中动态…

认识scratch,scratch是什么,如何使用

scratch是图形编程&#xff0c;将编程简化为积木的堆叠和嵌套&#xff0c;无需手写代码&#xff0c;只需清晰的逻辑即可完成自己的代码设计。通过它可以制作简单的小游戏等。 如图所示&#xff0c;这个就是scratch打开的界面&#xff0c;整个界面分为左中右三个部分&#xff0c…

HarmonyOS实战:腾讯IM之聊天详情页面搭建(二)

前言 鸿蒙版本腾讯 IM 的聊天功能十分复杂&#xff0c;需要开发者手动实现整个聊天对话的业务代码&#xff0c;这对开发者来说是个不小的挑战。本篇文章先从最基础的聊天对话列表开始教你一步一步实现完整的聊天功能&#xff0c;建议点赞收藏&#xff01; 实现效果 先看本文…

IM系统的负载均衡

1.IM场景的负载均衡 2.方案总览 SDK层想要连接一个TCP网关或者WebSocket网关的方案 SDK单地址:在SDK中写死某个网关的IP或者域名,缺点是更换地址需要重新打包SDK SDK多地址:防止某一个地址嗝屁了写上多个地址用足保持高可用 暴露接口给客户端:SDK层访问接口动态获得地址 注…

动态规划之网格图模型(一)

文章目录 动态规划之网格图模型&#xff08;一&#xff09;LeetCode 64. 最小路径和思路Golang 代码 LeetCode 62. 不同路径思路Golang 代码 LeetCode 63. 不同路径 II思路Golang 代码 LeetCode 120. 三角形最小路径和思路Golang 代码 LeetCode 3393. 统计异或值为给定值的路径…

血糖监测仪解决方案推荐芯片-NRF52832/HS6621/OM6626

随着糖尿病患者数量的增加和人们健康意识的提升&#xff0c;血糖监测仪成为了日常健康管理的重要设备。市场对便携、智能且易于使用的血糖监测仪需求持续增长&#xff0c;而无线通信技术&#xff0c;尤其是蓝牙技术&#xff0c;已成为现代血糖监测仪的核心组件&#xff0c;提供…

基于Vite的前端自动化部署方案

&#x1f468; 作者简介&#xff1a;大家好&#xff0c;我是Taro&#xff0c;全栈领域创作者 ✒️ 个人主页&#xff1a;唐璜Taro &#x1f680; 支持我&#xff1a;点赞&#x1f44d;&#x1f4dd; 评论 ⭐️收藏 文章目录 前言一、主流解决方案二、了解SCP概念三、自动化部署…