0 论文信息
1 对于 SAC 的逐步解析
传统的强化学习可以简单认为其是最大化奖励的预期总和 : ∑tE(st,at)∼ρπ[r(st,at)]sum_t mathbb{E}_{left(mathbf{s}_t, mathbf{a}_tright) sim rho_pi}left[rleft(mathbf{s}_t, mathbf{a}_tright)right],如同之前在《DBC 论文阅读补充》中所写,作者补充了熵来让让强化学习取得更好的效果 (采用拉格朗日乘子法) :
J(π)=∑t=0TE(st,at)∼ρπ[r(st,at)+αH(π(⋅∣st))]begin{align}
J(pi)=sum_{t=0}^T mathbb{E}_{left(mathbf{s}_t, mathbf{a}_tright) sim rho_pi}left[rleft(mathbf{s}_t, mathbf{a}_tright)+alpha mathcal{H}left(pileft(cdot mid mathbf{s}_tright)right)right]
end{align}
αalpha 即拉格朗日参数也被称为温度参数,一般会选一个较为合适的后续进行整体优化。接下来就是看如何在此基础上推出 Soft Actor-Critic (SAC) 的算法。
Bellman 方程回顾 在之前的《从马尔可夫决策到 DQN 算法族(上)》中,我们提到过 Bellman 方程,其表述如下 :
在马尔可夫奖励过程中,一个状态的期望回报 (即从这个状态出发的未来累积奖励的期望) 被称为这个状态的价值 (value)。所有状态的价值就组成了价值函数 (value function),价值函数的输入为某个状态,输出为这个状态的价值。我们将价值函数写成 V(s)=E[Gt∣St=s]V(s)=mathbb{E}left[G_t mid S_t=sright],展开为 :
V(s)=E[Gt∣St=s]=E[Rt+γRt+1+γ2Rt+2+…∣St=s]=E[Rt+γ(Rt+1+γRt+2+…)∣St=s]=E[Rt+γGt+1∣St=s]=E[Rt+γV(St+1)∣St=s]begin{aligned}
V(s) & =mathbb{E}left[G_t mid S_t=sright] \
& =mathbb{E}left[R_t+gamma R_{t+1}+gamma^2 R_{t+2}+ldots mid S_t=sright] \
& =mathbb{E}left[R_t+gammaleft(R_{t+1}+gamma R_{t+2}+ldotsright) mid S_t=sright] \
& =mathbb{E}left[R_t+gamma G_{t+1} mid S_t=sright] \
& =mathbb{E}left[R_t+gamma Vleft(S_{t+1}right) mid S_t=sright]
end{aligned}
在上式的最后一个等号中,一方面,即时奖励的期望正是奖励函数的输出,即 E[Rt∣St=s]=r(s)mathbb{E}left[R_t mid S_t=sright]=r(s);另一方面,等式中剩余部分 E[γV(St+1)∣St=s]mathbb{E}left[gamma Vleft(S_{t+1}right) mid S_t=sright] 可以根据从状态 ss 出发的转移概率得到,即可以得到
V(s)=r(s)+γ∑s′∈Sp(s′∣s)V(s′)begin{align}
V(s)=r(s)+gamma sum_{s^{prime} in S} pleft(s^{prime} mid sright) Vleft(s^{prime}right)
end{align}
式 (2) 即被称为 Bellman 方程。
在软策略迭代的策略评估步骤中,作者希望根据公式 (1) 中的最大熵目标计算策略 πpi 的值。对于固定策略,soft-Q valuetext{soft-}Q text{ value} 可以使用迭代计算,从任意函数 Q:S×A→RQ: mathcal{S} times mathcal{A} rightarrow mathbb{R} 开始,反复应用修正的 Bellman 备份算子 Tπmathcal{T}^{pi} :
TπQ(st,at)≜r(st,at)+γEst+1∼p[V(st+1)]begin{align}
mathcal{T}^pi Qleft(mathbf{s}_t, mathbf{a}_tright) triangleq rleft(mathbf{s}_t, mathbf{a}_tright)+gamma mathbb{E}_{mathbf{s}_{t+1} sim p}left[Vleft(mathbf{s}_{t+1}right)right]
end{align}
其中 :
V(st)=Eat∼π[Q(st,at)−logπ(at∣st)]begin{align}
Vleft(mathbf{s}_tright)=mathbb{E}_{mathbf{a}_t sim pi}left[Qleft(mathbf{s}_t, mathbf{a}_tright)-log pileft(mathbf{a}_t mid mathbf{s}_tright)right]
end{align}
其中 V(st)Vleft(mathbf{s}_tright) 是软状态值函数。通过重复应用 Tπmathcal{T}^{pi},可以得到任意策略 πpi 的软值函数,有如下引力 :
引理 1 (软策略评估) 考虑方程 (3) 中的软 Bellman 备份算子 Tπmathcal{T}^{pi} 和 ∣A∣<∞|mathcal{A}|<infty 的映射 Q0:S×A→RQ^0: mathcal{S} times mathcal{A} rightarrow mathbb{R},定义 Qk+1=TπQkQ^{k+1}=mathcal{T}^pi Q^k。当 k→∞k rightarrow infty 时,序列 QkQ^k 收敛于 πpi 的 soft-Q valuetext{soft-}Q text{ value}。
在策略改进步骤中,向新 QQ 函数的指数方向更新策略。这种特定的更新选择可以保证在其软价值方面产生改进的策略。由于在实践中更喜欢易于处理的策略,因此将额外地将策略限制为一些策略集 ΠPi,这些策略可以对应于一些实例,参数化的分布族,高斯分布。为了考虑 π∈ΠpiinPi 的约束,将改进的策略投影到期望的策略集合中。虽然原则上可以选择任何投影,在此直接使用 KL 散度定义的信息投影。换句话说,在策略改进步骤中,对于每个状态,根据更新策略 :
πnew =argminπ′∈ΠDKL(π′(⋅∣st)∥exp(Qπold (st,⋅))Zπold (st))begin{align}
pi_{text {new }}=arg min _{pi^{prime} in Pi} mathrm{D}_{mathrm{KL}}left(pi^{prime}left(cdot mid mathbf{s}_tright) | frac{exp left(Q^{pi_{text {old }}}left(mathbf{s}_t, cdotright)right)}{Z^{pi_{text {old }}}left(mathbf{s}_tright)}right)
end{align}
根据 KL 散度的思想,即希望策略 π′(⋅∣st)pi^{prime}left(cdot mid mathbf{s}_tright) 的分布更接近 exp(Qπold (st,⋅))Zπold (st)frac{exp left(Q^{pi_{text {old }}}left(mathbf{s}_t, cdotright)right)}{Z^{pi_{text {old }}}left(mathbf{s}_tright)} 的分布。其中配分函数 Zπold(st)Z^{pi_{mathrm{old}}}left(mathrm{s}_tright) 将分布归一化,虽然它通常是难以处理的,但它对新策略的梯度没有贡献,因此可以忽略。对于这个投影,可以证明,相对于方程 (1) 中的目标,新的投影策略比旧策略具有更高的值。在引理 2 中将这个结果形式化 :
引理 2 (软策略的改善) 设 πold∈Πpi_{mathrm{old}} in Pi,设 πoldpi_{mathrm{old}} 为式 (5) 定义的最小化问题的优化器。则对于所有 (st,at)∈S×Aleft(mathbf{s}_t, mathbf{a}_tright) in mathcal{S} times mathcal{A} 且 ∣A∣<∞|mathcal{A}|<infty,都有 Qπnew (st,at)≥Qπold (st,at)Q^{pi_{text {new }}}left(mathbf{s}_t, mathbf{a}_tright) geq Q^{pi_{text {old }}}left(mathbf{s}_t, mathbf{a}_tright)。
完整的软策略迭代算法在软策略评估和软策略改进步骤之间交替,可证明在 ΠPi 的策略中收敛到最优最大熵策略 (定理 1)。尽管该算法可以证明找到了最优解,但目前只能在表格情况下以其精确形式执行它。因此,作者接下来将近似连续域的算法,需要依靠函数逼近器来表示 QQ 值,并运行这两个步骤,直到收敛至边际效应。该近似产生了一种新的实用算法,称为 soft Actor-Critic (SAC)。
定理 1 (软策略迭代) 从任意 π∈ΠpiinPi 重复应用软策略评估和软策略改进收敛于策略 π∗pi^*,使得对于所有 π∈ΠpiinPi 和 (st,at)∈S×Aleft(mathbf{s}_t, mathbf{a}_tright) in mathcal{S} times mathcal{A},假设 ∣A∣<∞|mathcal{A}|<infty,Qπ∗(st,at)≥Qπ(st,at)Q^{pi^*}left(mathbf{s}_t, mathbf{a}_tright) geq Q^{pi}left(mathbf{s}_t, mathbf{a}_tright)。
如上所述,大型连续域要求推导出软策略迭代的实用近似 (因为实际情况多是连续的)。为此,作者将对 QQ 函数和策略使用函数逼近器,而不是运行评估和改进收敛,而是在使用随机梯度下降优化两个网络之间交替。作者考虑一个参数化状态值函数 Vψ(st)V_psileft(mathbf{s}_tright)、soft−Qtext{soft}-Q 函数 Qθ(st,at)Q_thetaleft(mathbf{s}_t, mathbf{a}_tright) 和一个易于处理的策略 πϕ(at∣st)pi_phileft(mathbf{a}_t mid mathbf{s}_tright)。这些网络的参数是 ψ,θ,ϕpsi,theta,phi。例如,价值函数可以建模为表征神经网络,策略被建模为具有神经网络给出的均值和协方差的高斯分布。接下来,对于这些参数向量的更新规则进行推导。
状态值函数近似于软值。原则上不需要为状态值构建一个单独的函数逼近器,因为它与根据公式 (4) 的 QQ 函数和策略有关。这个量可以从当前策略的单个动作样本中估计,而不引入偏差,但在实践中,包括软值的单独函数逼近器可以稳定训练,便于与其他网络同时训练。训练软值函数以最小化平方残差
JV(ψ)=Est∼D[12(Vψ(st)−Eat∼πϕ[Qθ(st,at)−logπϕ(at∣st)])2]begin{align}
J_V(psi)=mathbb{E}_{mathbf{s}_t sim mathcal{D}}left[frac{1}{2}left(V_psileft(mathbf{s}_tright)-mathbb{E}_{mathbf{a}_t sim pi_phi}left[Q_thetaleft(mathbf{s}_t, mathbf{a}_tright)-log pi_phileft(mathbf{a}_t mid mathbf{s}_tright)right]right)^2right]
end{align}
其中 Dmathcal{D} 是先前采样状态和动作的分布,或重放缓冲区。公式 (6) 的梯度可以用无偏估计量估计
∇^ψJV(ψ)=∇ψVψ(st)(Vψ(st)−Qθ(st,at)+logπϕ(at∣st))begin{align}
hat{nabla}_psi J_V(psi)=nabla_psi V_psileft(mathbf{s}_tright)left(V_psileft(mathbf{s}_tright)-Q_thetaleft(mathbf{s}_t, mathbf{a}_tright)+log pi_phileft(mathbf{a}_t mid mathbf{s}_tright)right)
end{align}
其中动作根据当前策略进行采样,而不是重放缓冲区。可以训练软 QQ 函数参数以最小化软 Bellman 残差
JQ(θ)=E(st,at)∼D[12(Qθ(st,at)−Q^(st,at))2]begin{align}
J_Q(theta)=mathbb{E}_{left(mathbf{s}_t, mathbf{a}_tright) sim mathcal{D}}left[frac{1}{2}left(Q_thetaleft(mathbf{s}_t, mathbf{a}_tright)-hat{Q}left(mathbf{s}_t, mathbf{a}_tright)right)^2right]
end{align}
其中
Q^(st,at)=r(st,at)+γEst+1∼p[Vψˉ(st+1)]begin{align}
hat{Q}left(mathbf{s}_t, mathbf{a}_tright)=rleft(mathbf{s}_t, mathbf{a}_tright)+gamma mathbb{E}_{mathbf{s}_{t+1} sim p}left[V_{bar{psi}}left(mathbf{s}_{t+1}right)right]
end{align}
可以再次用随机梯度进行优化
∇^θJQ(θ)=∇θQθ(at,st)(Qθ(st,at)−r(st,at)−γVψˉ(st+1))begin{align}
hat{nabla}_theta J_Q(theta)=nabla_theta Q_thetaleft(mathbf{a}_t, mathbf{s}_tright)left(Q_thetaleft(mathbf{s}_t, mathbf{a}_tright)-rleft(mathbf{s}_t, mathbf{a}_tright)-gamma V_{bar{psi}}left(mathbf{s}_{t+1}right)right)
end{align}
该更新利用了目标值网络 VψˉV_{bar{psi}},其 ψˉbar{psi} 可以是值网络权重的指数移动平均值。或者可以更新目标权重以定期匹配当前值函数权重。最后,可以通过直接最小化公式 (5) 中预期的 KL 散度来学习策略参数
Jπ(ϕ)=Est∼D[DKL(πϕ(⋅∣st)∥exp(Qθ(st,⋅))Zθ(st))]begin{align}
J_pi(phi)=mathbb{E}_{mathbf{s}_t sim mathcal{D}}left[mathrm{D}_{mathrm{KL}}left(pi_phileft(cdot mid mathbf{s}_tright) | frac{exp left(Q_thetaleft(mathbf{s}_t, cdotright)right)}{Z_thetaleft(mathbf{s}_tright)}right)right]
end{align}
有几个选项可以最小化 JπJ_{pi}。策略梯度方法的典型解决方案是使用似然比梯度估计器,它不需要通过策略和目标密度网络反向传播梯度。然而在例子中,目标密度是 QQ 函数,它由神经网络表示,可以区分,因此应用重新参数化技巧很方便,从而导致方差估计器较低。为此,使用神经网络变换重新参数化策略
at=fϕ(ϵt;st)begin{align}
mathbf{a}_t=f_phileft(epsilon_t ; mathbf{s}_tright)
end{align}
其中 ϵtepsilon_t 是一个输入噪声向量,从一些固定分布中采样,例如球形高斯分布。我们现在可以将公式 (11) 中的目标重写为
Jπ(ϕ)=Est∼D,ϵt∼N[logπϕ(fϕ(ϵt;st)∣st)−Qθ(st,fϕ(ϵt;st))]begin{align}
J_pi(phi)=mathbb{E}_{mathbf{s}_t sim mathcal{D}, epsilon_t sim mathcal{N}}left[log pi_phileft(f_phileft(epsilon_t ; mathbf{s}_tright) mid mathbf{s}_tright)-Q_thetaleft(mathbf{s}_t, f_phileft(epsilon_t ; mathbf{s}_tright)right)right]
end{align}
其中 πϕpi_{phi} 是根据 fϕf_{phi} 隐式定义的,注意到分区函数独立于 ϕphi,因此可以省略。同时对于公式 (13) 借助以下估计
∇^ϕJπ(ϕ)=∇ϕlogπϕ(at∣st)+(∇atlogπϕ(at∣st)−∇atQ(st,at))∇ϕfϕ(ϵt;st)begin{align}
hat{nabla}_phi J_pi(phi)=nabla_phi log pi_phileft(mathbf{a}_t mid mathbf{s}_tright)+left(nabla_{mathbf{a}_t} log pi_phileft(mathbf{a}_t mid mathbf{s}_tright)-nabla_{mathbf{a}_t} Qleft(mathbf{s}_t, mathbf{a}_tright)right) nabla_phi f_phileft(epsilon_t ; mathbf{s}_tright)
end{align}
其中 atmathbf{a}_t 在 fϕ(ϵt;st)f_phileft(epsilon_t ; mathbf{s}_tright) 上进行评估。这种无偏梯度估计器将 DDPG 风格策略梯度扩展到任何易于处理的随机策略。
Algorithm 1 Soft Actor-Critic
- Initialize parameter vectors ψ,ψˉ,θ,ϕpsi, bar{psi}, theta, phi.
- for each iteration do
- for each environment step do
- at∼πϕ(at∣st)mathbf{a}_t sim pi_phileft(mathbf{a}_t mid mathbf{s}_tright)
- st+1∼p(st+1∣st,at)mathbf{s}_{t+1} sim pleft(mathbf{s}_{t+1} mid mathbf{s}_t, mathbf{a}_tright)
- D←D∪{(st,at,r(st,at),st+1)}mathcal{D} leftarrow mathcal{D} cupleft{left(mathbf{s}_t, mathbf{a}_t, rleft(mathbf{s}_t, mathbf{a}_tright), mathbf{s}_{t+1}right)right}
- end for
- for each gradient step do
- ψ←ψ−λV∇^ψJV(ψ)psi leftarrow psi-lambda_V hat{nabla}_psi J_V(psi)
- θi←θi−λQ∇^θiJQ(θi)theta_i leftarrow theta_i-lambda_Q hat{nabla}_{theta_i} J_Qleft(theta_iright) for i∈{1,2}i in{1,2}
- ϕ←ϕ−λπ∇^ϕJπ(ϕ)phi leftarrow phi-lambda_pi hat{nabla}_phi J_pi(phi)
- ψˉ←τψ+(1−τ)ψˉbar{psi} leftarrow tau psi+(1-tau) bar{psi}
- end for
- for each environment step do
- end for
2 感想
感觉即使想法并不难理解,还是使用了很多的小技巧,整体的推导看下来并没有一种直观的理解,后续我会继续努力理解的。之后会把后续的理解进行更新。
参考资料 (References)
- Soft Actor-Critic:Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor
- 从马尔可夫决策到 DQN 算法族(上)
- DBC 论文阅读补充