在线策略算法的采样效率比较低,我们通常倾向于离线学习策略。虽然 DDPG 是离线策略算法,但是它训练非常不稳定,收敛性比较差,对超参数敏感,难以适应复杂环境

2018 年 SAC (soft-Actor-Critic) 被提出。在无模型的强化学习算法中,SAC 是一个非常高效的算法,属于最大熵强化学习的范畴。

最大熵强化学习

熵表示对一个随机变量的随机程度的度量,对于一个随机变量 ,其概率密度为 ,对应的熵

越大(接近 1)时,熵越近 0,代表随机程度小

最大熵强化学习

最大熵强化学习有两个目标:1. 最大化累积奖励;2. 是的策略更加随机化

策略更加随机化,就是通过控制策略的熵来实现的,我们在强化学习的目标中加入一项熵的正则项

优化的目标需要同时满足这两个条件,这是一个凸优化问题,可以使用拉格朗日乘数法通过列方程组来求解,求解结果

结果是新的 策略是基于 的 softmax 的动作分布

为了接近这个分布,在做策略提升的时候,我们把它转化成 KL 散度最小化的问题,来拟合这个动作分布

重复使用 soft 策略评估和策略提升,最终策略可以收敛到最大熵强化学习目标中的最优策略

但是 soft 策略更新只适合表格型的情况,对于连续动作空间,需要参数化策略 和函数 来近似迭代

SAC

SAC 中使用两个 Q 动作价值函数和一个 策略函数建模。基于 Double DQN 的思想使用两个网络, 每次选择输出值更小的网络, 来缓解过高估计的问题,损失函数为

动作价值函数的更新方式和 DDPG 一致,使用一步 TD 作为目标值,其中下一步的动作和价值使用目标 Actor 和目标 Critic 网络来评估

策略 的损失函数由 KL 散度得到,化简后

正好是最大化收益的负数

对于连续动作空间,SAC 算法的策略输出高斯分布的均值和标准差。但是直接从高斯分布中采样动作,是不可导的, 因此要用到重参数化技巧 做法是 先从一个单位的高斯分布中采样,然后乘上标准差,再加上均值. 这样可以认为是策略高斯分布的采样,且这样是可导的

自动调整熵正则项

SAC 算法中,如何选择熵正则化系数很重要,不同状态下需要不同大小的熵:

  • 当最优动作确定性很大时(动作概率接近 1),熵需要比较小
  • 当最优动作不确定性很大时(动作概率远离 1),熵需要比较大,来激发更多探索

为了自动调整熵正则项,SAC 将强化学习的目标改写为一个带约束的优化问题:

也就是最大化期望回报,同时约束熵的均值大于 。通过数学技巧简化之后,得到 的损失函数:

其中 的经验公式:

算法流程如下: image.png image.png image.png