📓十三、SAC算法
2025-2-14
| 2025-2-14
字数 1626阅读时长 5 分钟
type
status
password
date
slug
summary
category
URL
tags
icon
Soft Actor-Critic (SAC) 是一种基于策略梯度的深度强化学习算法,它具有最大化奖励与最大化熵(探索性)的双重目标。SAC 通过引入熵正则项,使策略在决策时具有更大的随机性,从而提高探索能力。

一、9.5.1 熵正则

通常应用于策略网络,增加策略的探索性,使策略网络输出的概率分布的熵不要太小。熵只依赖于状态与策略网络参数
 

二、基本思想

价值函数定义

  • 状态价值函数
    • 动作价值函数
      💡
      注意与目标函数 有区别 熵正则中定义目标函数为
      其中是个超参数,需要手动调。

      价值评估

      贝尔曼方程

      策略提升

      SAC中的策略不再是以往的高斯分布形式,而是用基于能量的模型(energy-based model)来表示策略:
      下图展示了一般的高斯分布策略(左)与基于能量的策略(右)的区别。可以看出基于能量的模型在面对多模态(multimodal)的值函数()时,具有更强的策略表达能力,而一般的高斯分布只能将决策集中在值更高的部分,忽略其他次优解
      notion image

      三、离散动作空间的具体实现

      价值评估

      如果在SAC中,我们只打算维持一个值函数,那么可以只用(13.6)式进行值迭代;如果需要同时维持两个值函数,就使用(13.7)(13.9)进行值迭代。

      策略提升

      通过KL散度令策略值分布进行靠近,策略优化公式为:
      其中表示可选的策略集合,实际上就是带参数的高斯分布的集合。函数作为配分函数,用于归一化分布。

      四、连续动作空间的具体实现

      在 SAC 算法中,我们为两个动作价值函数(参数分别为)和一个策略函数(参数为)建模。

      Critic更新

      基于 Double DQN 的思想,SAC 使用两个网络,但每次用网络时会挑选一个值小的网络,从而缓解值过高估计的问题。任意一个函数的损失函数为:
      其中,是策略过去收集的数据,因为 SAC 是一种离线策略算法。为了让训练更加稳定,这里使用了目标网络,同样是两个目标网络,与两个网络一一对应。SAC 中目标网络的更新方式与 DDPG 中的更新方式一样。

      Actor更新

      策略的损失函数由 KL 散度得到,化简后为:
      可以理解为最大化函数,因为有

      损失函数推导

      对连续动作空间的环境,SAC 算法的策略输出高斯分布的均值和标准差,但是根据高斯分布来采样动作的过程是不可导的。因此,我们需要用到重参数化技巧(reparameterization trick)。重参数化的做法是先从策略高斯分布采样,生成动作。并计算在动作的概率我们将其表示为,其中是一个噪声随机变量。同时考虑到两个函数,重写策略的损失函数:

      Actor网络设计

      notion image

      自动调整熵正则项

      在 SAC 算法中,如何选择熵正则项的系数非常重要。在不同的状态下需要不同大小的熵:在最优动作不确定的某个状态下,熵的取值应该大一点;而在某个最优动作比较确定的状态下,熵的取值可以小一点。为了自动调整熵正则项,SAC 将强化学习的目标改写为一个带约束的优化问题:
      也就是最大化期望回报,同时约束熵的均值大于。通过一些数学技巧化简后,得到的损失函数:
      即当策略的熵低于目标值时,训练目标会使的值增大,进而在上述最小化损失函数的过程中增加了策略熵对应项的重要性;而当策略的熵高于目标值时,训练目标会使的值减小,进而使得策略训练时更专注于价值提升。

      算法流程

      用随机的网络参数分别初始化 Critic 网络 和 Actor 网络复制相同的参数,分别初始化目标网络 初始化经验回放池 for 序列  do 获取环境初始状态 for 时间步  do 根据当前策略选择动作 执行动作,获得奖励,环境状态变为存入回放池 for 训练轮数  do 中采样个元组 对每个元组,用目标网络计算,其中 对两个 Critic 网络都进行如下更新:对,最小化损失函数 用重参数化技巧采样动作,然后用以下损失函数更新当前 Actor 网络:
      更新熵正则项的系数 更新目标网络:
      end for end for end for
       
    • 强化学习
    • 十四、对状态的不完全观测十二、PPO算法
      Loading...