SAC:柔性动作

编程入门 行业动态 更新时间:2024-10-14 20:20:03

SAC:<a href=https://www.elefans.com/category/jswz/34/1753562.html style=柔性动作"/>

SAC:柔性动作

基本概念

SAC

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

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

Actor网络的输入为状态,输出为动作概率 π ( a t , s t ) \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中采出的数据 ( s t , a t , s t + 1 , r t + 1 ) (s_t,a_t,s_{t+1},r_{t+1}) (st​,at​,st+1​,rt+1​)进行Critic网络的更新,基于最优贝尔曼方程,用 U t ( q ) = r t + γ v ( s t + 1 ) U_t^{(q)}=r_t+\gamma v(s_{t+1}) Ut(q)​=rt​+γv(st+1​)作为状态 s t s_t st​ 的真实价值估计,而用实际采用的动作 a 2 a_2 a2​的 q i ( s t , a 2 ) q_i(s_t,a_2) qi​(st​,a2​)值 i ∈ ( 0 , 1 ) i\in(0,1) i∈(0,1)作为状态 s t s_t st​的预测价值估计,最后用MSEloss作为Loss函数,对神经网络 Q 0 Q_0 Q0​, Q 1 Q_1 Q1​进行训练。

MSELoss意味着对从经验池buffer中取一个batch的数据进行了求平均的操作。

V Critic网络的更新过程:

也是从经验池中拿出数据 ( s t , a t , s t + 1 , r t + 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函数,对神经网络 V V V进行训练。

Actor网络的更新过程:

对Actor网络训练的loss稍微有些复杂,其表达式为:


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

注意: a t ′ a_t' at′​并不是在buffer中取出的数据 ( s t , a t , s t + 1 , r t + 1 ) (s_t,a_t,s_{t+1},r_{t+1}) (st​,at​,st+1​,rt+1​)中的 a t a_t at​,而是重新用Actor网络 π \pi π预测的所有可能的动作,因此对于离散动作空间,常有以下的等价计算方法:

SAC算法的伪代码如下图所示:

更多推荐

SAC:柔性动作

本文发布于:2024-02-06 16:49:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1750328.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:柔性   动作   SAC

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!