在线策略算法的采样效率比较低,我们通常倾向于离线学习策略。虽然 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 将强化学习的目标改写为一个带约束的优化问题:
也就是最大化期望回报,同时约束熵的均值大于 。通过数学技巧简化之后,得到 的损失函数:
其中 的经验公式:
算法流程如下:
