本专栏按照 https://lilianweng.github.io/lil-log/2018/04/08/policy-gradient-algorithms.html 顺序进行总结 。
带有自动热度调整的软演员-评论家算法
S A C w i t h A u t o m a t i c a l l y A d j u s t e d T e m p e r a t u r e \color{red}SAC \ with \ Automatically \ Adjusted \ Temperature SAC with Automatically Adjusted Temperature :[ paper:Soft Actor-Critic Algorithms and Applications | code ]
原理解析
SAC算法对于热度参数十分敏感。不幸的是,调整热度参数是一件很困难的事情。因为在随着策略由于训练变得更优的过程中或者在不同任务中进行训练时熵都会出现不可预测的变化。在SAC算法针对上述问题的改进可以建模为如下带约束的优化问题:在最大化期望累积回报的同时,策略应满足最小熵约束:
max
π
0
,
…
,
π
T
E
[
∑
t
=
0
T
r
(
s
t
,
a
t
)
]
s.t.
∀
t
,
H
(
π
t
)
≥
H
0
\max _{\pi_{0}, \ldots, \pi_{T}} \mathbb{E}\left[\sum_{t=0}^{T} r\left(s_{t}, a_{t}\right)\right] \text { s.t. } \forall t, \mathcal{H}\left(\pi_{t}\right) \geq \mathcal{H}_{0}
π0,…,πTmaxE[t=0∑Tr(st,at)] s.t. ∀t,H(πt)≥H0
其中 H 0 \mathcal{H}_{0} H0 表示预定义的最小策略熵阈值。
其中期望收益
E
[
∑
t
=
0
T
r
(
s
t
,
a
t
)
]
\mathbb{E}\left[\sum_{t=0}^{T} r\left(s_{t}, a_{t}\right)\right]
E[∑t=0Tr(st,at)] 可以分解为每一时间步回报的和。因为在时刻
t
t
t 的策略
π
t
π_t
πt 不会影响到之前时刻的策略
π
t
−
1
π_{t−1}
πt−1,我们可以从后往前逐步最大化收益——这其实就是动态规划了。
max
π
0
(
E
[
r
(
s
0
,
a
0
)
]
+
max
π
1
(
E
[
…
]
+
max
π
T
E
[
r
(
s
T
,
a
T
)
]
⏟
第一步最大化
)
⏟
第二步但也是最后一步最大化
)
⏟
最后一步最大化
\underbrace{\max_{\pi_0} \Big( \mathbb{E}[r(s_0, a_0)]+ \underbrace{\max_{\pi_1} \Big(\mathbb{E}[…] + \underbrace{\max_{\pi_T} \mathbb{E}[r(s_T, a_T)]}_\text{第一步最大化} \Big)}_\text{第二步但也是最后一步最大化} \Big)}_\text{最后一步最大化}
最后一步最大化
π0max(E[r(s0,a0)]+第二步但也是最后一步最大化
π1max(E[…]+第一步最大化
πTmaxE[r(sT,aT)]))
其中 γ = 1 γ=1 γ=1。
我们从最后一个时间步 T 开始最大化:
E
(
s
T
,
a
T
)
∼
ρ
π
[
r
(
s
T
,
a
T
)
]
s.t.
H
(
π
T
)
−
H
0
≥
0
\mathbb{E}_{\left(s_{T}, a_{T}\right) \sim \rho_{\pi}}\left[r\left(s_{T}, a_{T}\right)\right] \text { s.t. } \mathcal{H}\left(\pi_{T}\right)-\mathcal{H}_{0} \geq 0
E(sT,aT)∼ρπ[r(sT,aT)] s.t. H(πT)−H0≥0
首先,我们定义以下一些函数:
h
(
π
T
)
=
H
(
π
T
)
−
H
0
=
E
(
s
T
,
a
T
)
∼
ρ
π
[
−
log
π
T
(
a
T
∣
s
T
)
]
−
H
0
f
(
π
T
)
=
{
E
(
s
T
,
a
T
)
∼
ρ
π
[
r
(
s
T
,
a
T
)
]
,
if
h
(
π
T
)
≥
0
−
∞
,
otherwise
\begin{aligned} h(\pi_T) &= \mathcal{H}(\pi_T) - \mathcal{H}_0 = \mathbb{E}_{(s_T, a_T) \sim \rho_{\pi}} [-\log \pi_T(a_T\vert s_T)] - \mathcal{H}_0\\ f(\pi_T) &= \begin{cases} \mathbb{E}_{(s_T, a_T) \sim \rho_{\pi}} [ r(s_T, a_T) ], & \text{if }h(\pi_T) \geq 0 \\ -\infty, & \text{otherwise} \end{cases} \end{aligned}
h(πT)f(πT)=H(πT)−H0=E(sT,aT)∼ρπ[−logπT(aT∣sT)]−H0={E(sT,aT)∼ρπ[r(sT,aT)],−∞,if h(πT)≥0otherwise
因而优化问题就转变为如下形式:
f
(
π
T
)
s.t.
h
(
π
T
)
≥
0
f\left(\pi_{T}\right) \text { s.t. } h\left(\pi_{T}\right) \geq 0
f(πT) s.t. h(πT)≥0
为了解决带有不等式约束的最大化优化问题,我们可以构建一个带有拉格朗日乘子(也被称为“对偶变量”)
α
T
α_T
αT 的拉格朗日表达式:
L
(
π
T
,
α
T
)
=
f
(
π
T
)
+
α
T
h
(
π
T
)
L\left(\pi_{T}, \alpha_{T}\right)=f\left(\pi_{T}\right)+\alpha_{T} h\left(\pi_{T}\right)
L(πT,αT)=f(πT)+αTh(πT)
考虑如下情况,在给定策略 π T π_T πT 的情况下,我们尝试去找到最小化 L ( π T , α T ) L(π_T,α_T) L(πT,αT) 的 α T α_T αT 值,
- 如果约束被满足,即 h ( π T ) ≥ 0 h\left(\pi_{T}\right) \geq 0 h(πT)≥0 ,那么因为我们无法通过 α T α_T αT 控制 f ( π T ) f(π_T) f(πT) 的值因此最好将其设置为0(译者注:这里我有些无法理解,如果要最小化,那么当 h ( π T ) ≥ 0 h\left(\pi_{T}\right) \geq 0 h(πT)≥0 时 α T α_T αT 为负数应该会使得目标函数更小?)。因而, L ( π T , 0 ) = f ( π T ) L\left(\pi_{T}, 0\right)=f\left(\pi_{T}\right) L(πT,0)=f(πT)。
- 如果约束被违背了,即 h ( π T ) < 0 h\left(\pi_{T}\right)<0 h(πT)<0,我们可以通过令 α T → ∞ \alpha_{T} \rightarrow \infty αT→∞ 来使得 L ( π T , α T ) → − ∞ L\left(\pi_{T}, \alpha_{T}\right) \rightarrow-\infty L(πT,αT)→−∞。因而 L ( π T , ∞ ) = − ∞ = f ( π T ) L\left(\pi_{T}, \infty\right)=-\infty=f\left(\pi_{T}\right) L(πT,∞)=−∞=f(πT)。
无论哪种情况,我们都可以得到如下等式:
f
(
π
T
)
=
min
α
T
≥
0
L
(
π
T
,
α
T
)
f\left(\pi_{T}\right)=\min _{\alpha_{T} \geq 0} L\left(\pi_{T}, \alpha_{T}\right)
f(πT)=αT≥0minL(πT,αT)
同时,我们想要去最大化
f
(
π
T
)
f\left(\pi_{T}\right)
f(πT):
max
π
T
f
(
π
T
)
=
min
α
T
≥
0
max
π
T
L
(
π
T
,
α
T
)
\max _{\pi_{T}} f\left(\pi_{T}\right)=\min _{\alpha_{T} \geq 0} \max _{\pi_{T}} L\left(\pi_{T}, \alpha_{T}\right)
πTmaxf(πT)=αT≥0minπTmaxL(πT,αT)
因此,为了最大化
f
(
π
T
)
f\left(\pi_{T}\right)
f(πT) ,其对应的对偶问题罗列如下。注意为了保证
max
π
T
f
(
π
T
)
\max _{\pi_{T}} f\left(\pi_{T}\right)
maxπTf(πT) 是一个良定的操作(即
f
(
π
T
)
f(π_T)
f(πT) 不为
−
∞
−∞
−∞),约束必须要被满足。
max
π
T
E
[
r
(
s
T
,
a
T
)
]
=
max
π
T
f
(
π
T
)
=
min
α
T
≥
0
max
π
T
L
(
π
T
,
α
T
)
=
min
α
T
≥
0
max
π
T
f
(
π
T
)
+
α
T
h
(
π
T
)
=
min
α
T
≥
0
max
π
T
E
(
s
T
,
a
T
)
∼
ρ
π
[
r
(
s
T
,
a
T
)
]
+
α
T
(
E
(
s
T
,
a
T
)
∼
ρ
π
[
−
log
π
T
(
a
T
∣
s
T
)
]
−
H
0
)
=
min
α
T
≥
0
max
π
T
E
(
s
T
,
a
T
)
∼
ρ
π
[
r
(
s
T
,
a
T
)
−
α
T
log
π
T
(
a
T
∣
s
T
)
]
−
α
T
H
0
=
min
α
T
≥
0
max
π
T
E
(
s
T
,
a
T
)
∼
ρ
π
[
r
(
s
T
,
a
T
)
+
α
T
H
(
π
T
)
−
α
T
H
0
]
\begin{aligned} \max_{\pi_T} \mathbb{E}[ r(s_T, a_T) ] &= \max_{\pi_T} f(\pi_T) \\ &= \min_{\alpha_T \geq 0} \max_{\pi_T} L(\pi_T, \alpha_T) \\ &= \min_{\alpha_T \geq 0} \max_{\pi_T} f(\pi_T) + \alpha_T h(\pi_T) \\ &= \min_{\alpha_T \geq 0} \max_{\pi_T} \mathbb{E}_{(s_T, a_T) \sim \rho_{\pi}} [ r(s_T, a_T) ] + \alpha_T ( \mathbb{E}_{(s_T, a_T) \sim \rho_{\pi}} [-\log \pi_T(a_T\vert s_T)] - \mathcal{H}_0) \\ &= \min_{\alpha_T \geq 0} \max_{\pi_T} \mathbb{E}_{(s_T, a_T) \sim \rho_{\pi}} [ r(s_T, a_T) - \alpha_T \log \pi_T(a_T\vert s_T)] - \alpha_T \mathcal{H}_0 \\ &= \min_{\alpha_T \geq 0} \max_{\pi_T} \mathbb{E}_{(s_T, a_T) \sim \rho_{\pi}} [ r(s_T, a_T) + \alpha_T \mathcal{H}(\pi_T) - \alpha_T \mathcal{H}_0 ] \end{aligned}
πTmaxE[r(sT,aT)]=πTmaxf(πT)=αT≥0minπTmaxL(πT,αT)=αT≥0minπTmaxf(πT)+αTh(πT)=αT≥0minπTmaxE(sT,aT)∼ρπ[r(sT,aT)]+αT(E(sT,aT)∼ρπ[−logπT(aT∣sT)]−H0)=αT≥0minπTmaxE(sT,aT)∼ρπ[r(sT,aT)−αTlogπT(aT∣sT)]−αTH0=αT≥0minπTmaxE(sT,aT)∼ρπ[r(sT,aT)+αTH(πT)−αTH0]
我们可以迭代地计算最优的
π
T
π_T
πT 以及
α
T
α_T
αT。首先给定目前的
α
T
α_T
αT,通过最大化
L
(
π
T
⋆
,
α
T
)
L\left(\pi_{T}^{\star}, \alpha_{T}\right)
L(πT⋆,αT) 来得到最优的策略
π
T
⋆
\pi_{T}^{\star}
πT⋆。然后将
π
T
⋆
\pi_{T}^{\star}
πT⋆ 代入去最小化
L
(
π
T
⋆
,
α
T
)
L\left(\pi_{T}^{\star}, \alpha_{T}\right)
L(πT⋆,αT) 来计算
α
T
⋆
α_{T}^{\star}
αT⋆。想象一下我们用一个神经网络来表示策略,用另一个网络来表示热度参数,这个迭代过程就与训练演员-评论家算法时更新两者的网络参数比较类似了。
π
T
⋆
=
arg
max
π
T
E
(
s
T
,
a
T
)
∼
ρ
π
[
r
(
s
T
,
a
T
)
+
α
T
H
(
π
T
)
−
α
T
H
0
]
α
T
⋆
=
arg
min
α
T
≥
0
E
(
s
T
,
a
T
)
∼
ρ
π
⋆
[
α
T
H
(
π
T
⋆
)
−
α
T
H
0
]
\begin{aligned} \pi^{\star}_T &= \arg\max_{\pi_T} \mathbb{E}_{(s_T, a_T) \sim \rho_{\pi}} [ r(s_T, a_T) + \alpha_T \mathcal{H}(\pi_T) - \alpha_T \mathcal{H}_0 ] \\ \color{blue}{\alpha^{\star}_T} &\color{blue}{=} \color{blue}{\arg\min_{\alpha_T \geq 0} \mathbb{E}_{(s_T, a_T) \sim \rho_{\pi^{\star}}} [\alpha_T \mathcal{H}(\pi^{\star}_T) - \alpha_T \mathcal{H}_0 ]} \end{aligned}
πT⋆αT⋆=argπTmaxE(sT,aT)∼ρπ[r(sT,aT)+αTH(πT)−αTH0]=argαT≥0minE(sT,aT)∼ρπ⋆[αTH(πT⋆)−αTH0]
因而, max π T E [ r ( s T , a T ) ] = E ( s T , a T ) ∼ ρ π ⋆ [ r ( s T , a T ) + α T ⋆ H ( π T ⋆ ) − α T ⋆ H 0 ] \text{因而, }\max_{\pi_T} \mathbb{E} [ r(s_T, a_T) ] = \mathbb{E}_{(s_T, a_T) \sim \rho_{\pi^{\star}}} [ r(s_T, a_T) + \alpha^{\star}_T \mathcal{H}(\pi^{\star}_T) - \alpha^{\star}_T \mathcal{H}_0 ] 因而, maxπTE[r(sT,aT)]=E(sT,aT)∼ρπ⋆[r(sT,aT)+αT⋆H(πT⋆)−αT⋆H0]
现在,让我们回到软Q值函数:
Q
T
−
1
(
s
T
−
1
,
a
T
−
1
)
=
r
(
s
T
−
1
,
a
T
−
1
)
+
E
[
Q
(
s
T
,
a
T
)
−
α
T
log
π
(
a
T
∣
s
T
)
]
=
r
(
s
T
−
1
,
a
T
−
1
)
+
E
[
r
(
s
T
,
a
T
)
]
+
α
T
H
(
π
T
)
Q
T
−
1
⋆
(
s
T
−
1
,
a
T
−
1
)
=
r
(
s
T
−
1
,
a
T
−
1
)
+
max
π
T
E
[
r
(
s
T
,
a
T
)
]
+
α
T
⋆
H
(
π
T
⋆
)
; 代入最优策略
π
T
⋆
\begin{aligned} Q_{T-1}(s_{T-1}, a_{T-1}) &= r(s_{T-1}, a_{T-1}) + \mathbb{E} [Q(s_T, a_T) - \alpha_T \log \pi(a_T \vert s_T)] \\ &= r(s_{T-1}, a_{T-1}) + \mathbb{E} [r(s_T, a_T)] + \alpha_T \mathcal{H}(\pi_T) \\ Q_{T-1}^{\star}(s_{T-1}, a_{T-1}) &= r(s_{T-1}, a_{T-1}) + \max_{\pi_T} \mathbb{E} [r(s_T, a_T)] + \alpha_T^{\star} \mathcal{H}(\pi^{\star}_T) & \text{; 代入最优策略 }\pi_T^{\star} \end{aligned}
QT−1(sT−1,aT−1)QT−1⋆(sT−1,aT−1)=r(sT−1,aT−1)+E[Q(sT,aT)−αTlogπ(aT∣sT)]=r(sT−1,aT−1)+E[r(sT,aT)]+αTH(πT)=r(sT−1,aT−1)+πTmaxE[r(sT,aT)]+αT⋆H(πT⋆); 代入最优策略 πT⋆
因此,当我们进一步退回到 T−1 时间步时,期望收益如下:
max
π
T
−
1
(
E
[
r
(
s
T
−
1
,
a
T
−
1
)
]
+
max
π
T
E
[
r
(
s
T
,
a
T
]
)
=
max
π
T
−
1
(
Q
T
−
1
⋆
(
s
T
−
1
,
a
T
−
1
)
−
α
T
⋆
H
(
π
T
⋆
)
)
; 需
H
(
π
T
−
1
)
−
H
0
≥
0
=
min
α
T
−
1
≥
0
max
π
T
−
1
(
Q
T
−
1
⋆
(
s
T
−
1
,
a
T
−
1
)
−
α
T
⋆
H
(
π
T
⋆
)
+
α
T
−
1
(
H
(
π
T
−
1
)
−
H
0
)
)
; 对偶问题
=
min
α
T
−
1
≥
0
max
π
T
−
1
(
Q
T
−
1
⋆
(
s
T
−
1
,
a
T
−
1
)
+
α
T
−
1
H
(
π
T
−
1
)
−
α
T
−
1
H
0
)
−
α
T
⋆
H
(
π
T
⋆
)
\begin{aligned} &\max_{\pi_{T-1}}\Big(\mathbb{E}[r(s_{T-1}, a_{T-1})] + \max_{\pi_T} \mathbb{E}[r(s_T, a_T] \Big) \\ &= \max_{\pi_{T-1}} \Big( Q^{\star}_{T-1}(s_{T-1}, a_{T-1}) - \alpha^{\star}_T \mathcal{H}(\pi^{\star}_T) \Big) & \text{; 需 } \mathcal{H}(\pi_{T-1}) - \mathcal{H}_0 \geq 0 \\ &= \min_{\alpha_{T-1} \geq 0} \max_{\pi_{T-1}} \Big( Q^{\star}_{T-1}(s_{T-1}, a_{T-1}) - \alpha^{\star}_T \mathcal{H}(\pi^{\star}_T) + \alpha_{T-1} \big( \mathcal{H}(\pi_{T-1}) - \mathcal{H}_0 \big) \Big) & \text{; 对偶问题} \\ &= \min_{\alpha_{T-1} \geq 0} \max_{\pi_{T-1}} \Big( Q^{\star}_{T-1}(s_{T-1}, a_{T-1}) + \alpha_{T-1} \mathcal{H}(\pi_{T-1}) - \alpha_{T-1}\mathcal{H}_0 \Big) - \alpha^{\star}_T \mathcal{H}(\pi^{\star}_T) \end{aligned}
πT−1max(E[r(sT−1,aT−1)]+πTmaxE[r(sT,aT])=πT−1max(QT−1⋆(sT−1,aT−1)−αT⋆H(πT⋆))=αT−1≥0minπT−1max(QT−1⋆(sT−1,aT−1)−αT⋆H(πT⋆)+αT−1(H(πT−1)−H0))=αT−1≥0minπT−1max(QT−1⋆(sT−1,aT−1)+αT−1H(πT−1)−αT−1H0)−αT⋆H(πT⋆); 需 H(πT−1)−H0≥0; 对偶问题
与之前类似,我们有:
π
T
−
1
⋆
=
arg
max
π
T
−
1
E
(
s
T
−
1
,
a
T
−
1
)
∼
ρ
π
[
Q
T
−
1
⋆
(
s
T
−
1
,
a
T
−
1
)
+
α
T
−
1
H
(
π
T
−
1
)
−
α
T
−
1
H
0
]
α
T
−
1
⋆
=
arg
min
α
T
−
1
≥
0
E
(
s
T
−
1
,
a
T
−
1
)
∼
ρ
π
⋆
[
α
T
−
1
H
(
π
T
−
1
⋆
)
−
α
T
−
1
H
0
]
\begin{aligned} \pi^{\star}_{T-1} &= \arg\max_{\pi_{T-1}} \mathbb{E}_{(s_{T-1}, a_{T-1}) \sim \rho_\pi} [Q^{\star}_{T-1}(s_{T-1}, a_{T-1}) + \alpha_{T-1} \mathcal{H}(\pi_{T-1}) - \alpha_{T-1} \mathcal{H}_0 ] \\ \color{green}{\alpha^{\star}_{T-1}} &\color{green}{=} \color{green}{\arg\min_{\alpha_{T-1} \geq 0} \mathbb{E}_{(s_{T-1}, a_{T-1}) \sim \rho_{\pi^{\star}}} [ \alpha_{T-1} \mathcal{H}(\pi^{\star}_{T-1}) - \alpha_{T-1}\mathcal{H}_0 ]} \end{aligned}
πT−1⋆αT−1⋆=argπT−1maxE(sT−1,aT−1)∼ρπ[QT−1⋆(sT−1,aT−1)+αT−1H(πT−1)−αT−1H0]=argαT−1≥0minE(sT−1,aT−1)∼ρπ⋆[αT−1H(πT−1⋆)−αT−1H0]
绿色部分更新
α
T
−
1
⋆
\alpha_{T-1}^{\star}
αT−1⋆ 的公式与上面蓝色部分更新
α
T
⋆
\alpha_{T}^{\star}
αT⋆ 的公式具有相同的形式。通过不断重复上述过程,我们可以通过最小化相同的目标函数(译者注:这里的目标函数中的策略不是最优的)来学习每个时间步的最优热度参数:
J
(
α
)
=
E
a
t
∼
π
t
[
−
α
log
π
t
(
a
t
∣
π
t
)
−
α
H
0
]
J(\alpha)=\mathbb{E}_{a_{t} \sim \pi_{t}}\left[-\alpha \log \pi_{t}\left(a_{t} | \pi_{t}\right)-\alpha \mathcal{H}_{0}\right]
J(α)=Eat∼πt[−αlogπt(at∣πt)−αH0]
除了根据最小化
J
(
α
)
J(α)
J(α) 来显式地学习
α
α
α 之外本部分算法与SAC算法没有任何区别(见下图)。
算法实现
总体流程
而SAC with Automatically Adjusted Temperature则是对SAC的延申,其认为在SAC中给定对policy和entropy的固定组合会导致reward不断变化下训练不稳定。应当引入
α
\alpha
α 自动调整,在policy探索到新的区域时最后的action不清楚,应调大
α
\alpha
α 鼓励agent去探索更多空间,而当区域探索比较充分时,最有action已经比较确定,
α
\alpha
α 应当调小。
代码实现
略