Soft Actor Critic
Contents
现有深度强化学习算法主要的问题有:
- 采样难,样本利用率低:对于一般的强化学习问题,学习得到想要的策略需要的样本以百万、千万记,而绝大多数on-policy算法在策略更新后丢弃旧的样本。
- 训练不稳定,收敛困难:off-policy目的在于利用不同于当下策略采集的样本来学习。
Idea
Soft Actor Critic是基于最大熵框架的off-policy、actor-critic算法。
Maximum Entropy Framework
“Succeed at the task, while behaving as random as possible”
Actor在最大化期望奖励的同时最大化熵:
- 更多的exploration避免遗漏更好的trajectory。
- 学习得到的策略更加鲁棒,因为学习过程中尽可能采取随机的策略(可以看做噪声更多),那么得到的策略在实际测试中会更加具有泛化性。
优化目标变为:
$$ J(\pi) = \sum_t E_{(s_t, a_t) \sim \rho_{\pi}} \left[ r(s_t, a_t) + \alpha H(\pi(\cdot | s_t)) \right] $$
其中$\alpha$是"temperature"参数,可以固定或者自动学习(对应不同版本的SAC算法)。
Bellman operator $\mathcal{T}$:
$$ \mathcal{T}^\pi Q(s_t, a_t) = r(s_t, a_t) + \gamma E_{s+1 \sim p} \left[ V (s_{t+1}) \right] $$
其中:
$$ V (s_{t+1}) = E_{a_t \sim \pi} \left[ Q (s_t, a_t) \right] - \alpha E_{a_t \sim \pi} \left[ \log \pi (a_t | s_t) \right] $$
下一个状态的价值等于所有动作价值加上当前状态熵的期望。
分布$X$的entropy定义为$H(X) = - E_x (\log(X))$。
Algorithm
SAC算法是Actor-Critic结构,因而包含:
- Soft值函数:$V_\psi$
- SoftQ函数: $Q_\theta$
- 策略: $\pi_\phi$
尽管同时学习$V_\psi$和$Q_\theta$显得多余,但可以稳定训练过程。
$V_\psi$的优化目标为最小化RSS:
$$ J_V (\psi) = E_{s_t \sim \mathcal{D}} \left[ \frac{1}{2} \left(V_\psi (s_t) - E_{a_t \sim \pi_\phi} \left[ Q_\theta (s_t, a_t) - \log \pi_\phi (a_t | s_t) \right] \right)^2 \right] $$
$Q_\theta$的优化目标为最小化RSS:
$$ J_Q (\theta) = E_{s_t \sim \mathcal{D}} \left[ \frac{1}{2} \left( Q_\theta (s_t, a_t) - r(s_t, a_t) - \gamma E_{s+1 \sim p} \left[ V (s_{t+1}) \right] \right)^2 \right] $$
$\psi$参数更新使用了Soft更新(Polyak),$\bar{\psi}$代表更新后的网络参数。
$$ J_\pi (\phi) = E_{s_t \sim \mathcal{D}} \left[ D_{KL} \left(\pi_\phi (\cdot|s_t) \mid \mid \frac{exp( Q_{\theta} (s_t, \cdot)}{Z_\theta} \right) \right] $$
$\frac{exp( Q_{\theta} (s_t, \cdot)}{Z_\theta}$是基于玻尔兹曼分布的探索策略,能够描述多模态策略,体现了Soft这一特点。 详见SAC。
SAC算法:
两个Q函数用来加速训练,损失计算中target是取二者Q中较小值。
Author Ruchen Xu
LastMod 2020-11-13