强化学习的前世今生(五)— 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)=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 算法](https://zhuanlan.zhihu.com/p/70360272) \[5\] [Lil'Log Policy Gradient Algorithms](https://lilianweng.github.io/posts/2018-04-08-policy-gradient/) \[6\] [动手学强化学习](https://github.com/boyu-ai/Hands-on-RL)

相关推荐
GEEK零零七8 分钟前
Leetcode 1908. Nim 游戏 II
算法·leetcode·博弈论
合作小小程序员小小店11 分钟前
web安全开发,在线%机器学习异常流量检测系统%开发demo
人工智能·python·mysql·机器学习·sklearn
sbc-study21 分钟前
混沌映射(Chaotic Map)
开发语言·人工智能·python·算法
Huangdroid21 分钟前
LangChain完全指南:从入门到精通,打造AI应用开发新范式
人工智能·python·langchain
要努力啊啊啊23 分钟前
大语言模型中的注意力机制详解
人工智能·语言模型·自然语言处理
TimTu23 分钟前
RWKV-7 架构理解
人工智能·rwkv·deeplearning
Magnum Lehar40 分钟前
vulkan游戏引擎game_types.h和生成build.bat实现
java·算法·游戏引擎
Christophe Chen42 分钟前
strcat及其模拟实现
c语言·算法
后端小肥肠1 小时前
即梦3.0+Coze王炸联动:10w+小人国微观生活视频轻松量产!(附喂饭级教程)
人工智能·aigc·coze