基本概念

SAC

SAC全称Soft Actor-Critic,中文名柔性动作-评价。SAC算法解决的问题是离散动作空间和连续动作空间的强化学习问题,是off-policy的强化学习算法。

SAC和TD3的网络结构类似,主网络都拥有1个Actor网络和2个Critic网络。但是,对于SAC来说,目标网络只有两个Critic网络,没有Actor网络。也就是说,SAC有1个Actor网络和4个Critic网络。

Actor网络的输入为状态,输出为动作概率π(at,st)\pi(a_t,s_t)π(at,st)(对于离散动作空间而言)或者动作概率分布参数(对于连续动作空间而言);
Critic网络的输入为状态,输出为状态的价值。其中V Critic网络的输出为v(s)v(s)v(s),代表状态价值对的估计; Q Critic 网络的输出为q(a,s)q(a,s)q(a,s),代表动作-状态对价值的估计 。
在这里插入图片描述
Q Critic网络的更新过程:
在这里插入图片描述

从经验池buffer中采出的数据(st,at,st+1,rt+1)(s_t,a_t,s_{t+1},r_{t+1})(st,at,st+1,rt+1)进行Critic网络的更新,基于最优贝尔曼方程,用Ut(q)=rt+γv(st+1)U_t^{(q)}=r_t+\gamma v(s_{t+1})Ut(q)=rt+γv(st+1)作为状态sts_tst真实价值估计,而用实际采用的动作 a2a_2a2qi(st,a2)q_i(s_t,a_2)qi(st,a2)i∈(0,1)i\in(0,1)i(0,1)作为状态sts_tst预测价值估计,最后用MSEloss作为Loss函数,对神经网络Q0Q_0Q0Q1Q_1Q1进行训练。

MSELoss意味着对从经验池buffer中取一个batch的数据进行了求平均的操作。
在这里插入图片描述
V Critic网络的更新过程:
在这里插入图片描述
也是从经验池中拿出数据(st,at,st+1,rt+1)(s_t,a_t,s_{t+1},r_{t+1})(st,at,st+1,rt+1)进行V Critic网络的更新,用V Critic网络的输出作为预测值,用含熵的式子进行状态价值估计,即下式作为V Critic网络输出的真实值
在这里插入图片描述
最后用MSEloss作为Loss函数,对神经网络VVV进行训练。
在这里插入图片描述
Actor网络的更新过程:
在这里插入图片描述
对Actor网络训练的loss稍微有些复杂,其表达式为:

在这里插入图片描述
α\alphaα是熵的奖励系数,它决定熵lnπ(at+1∣st;θ)ln\pi(a_{t+1}|s_t;\theta)lnπ(at+1st;θ)的重要性,越大越重要。BBB为经验池buffer,即求Loss的时候还需要对经验池中取出的样本取平均。这样能够体现取出的样本平均意义下的好坏。

注意:at′a_t'at并不是在buffer中取出的数据(st,at,st+1,rt+1)(s_t,a_t,s_{t+1},r_{t+1})(st,at,st+1,rt+1)中的ata_tat,而是重新用Actor网络 π\piπ预测的所有可能的动作,因此对于离散动作空间,常有以下的等价计算方法:
在这里插入图片描述
SAC算法的伪代码如下图所示:
在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐