SAC算法解析

如题所述

第1个回答  2022-06-16

上一篇文章介绍了利用确定策略来解决连续控制问题的DDPG,现在再来介绍一种非常牛的用随机策略来做连续控制的方法 Soft Actor Critic (SAC) 。它是一种以off-policy的方式来优化随机策略的算法,它的核心特点是 熵正则化 , 策略的训练在最大化预期回报和最大化熵之间作了个权衡,在这一点上实际也跟exploration还是exploitation有重大关系,增加熵会导致更多探索,这可以加速之后的学习,还可以防止策略过早地收敛到一个糟糕的局部最优。

为了防止有些人不太清楚熵的概念,在正式开始讲SAC之前,我稍微介绍一下熵的概念,以及随机策略的好处。

这里的熵指的是信息熵 ,它代表一个随机变量 所有可能取值的自信息 的加权求和:

正如上式所示,随机变量越是随机,熵就越大。根据热力学第二定律,自然界本身无时无刻不处在于一个熵增的过程之中,即不断走向混沌,而人类的奋斗进程则是对抗自然的熵减过程,他期望变得明确和有序,强化学习的过程也是如此。

一般的,强化学习的目标在于最大化奖励,即最大化动作状态价值 ,确定策略可以直接选择最大 的 来行动,但是这样就会使得操作模式是固化的,比如训练一个机械臂去捡东西,实际运动轨迹可以多种多样,而确定策略就会使这个动作变得很单调。 并且如果是在对抗的环境中,这种固定化的操作也容易被对手利用而存在漏洞,而基于策略 随机采样的动作 来行动就可以有效避免这一点,并且 的熵越大,也便代表动作越随机,越能在同一情况下做出不同的动作,让对手无法轻易预测,当然在训练时鼓励熵增带来的探索优化的好处也是不言而喻的。

actor-critic方法依赖于策略梯度,目标是利用梯度上升来让 最大化,因为期望不好求,于是就用蒙特卡洛方法来近似:

假设动作 是 维的,那么策略 使用 个高斯分布 连乘的方式来近似 :

而其中的 和 使用神经网络来近似:

相对于A3C之类的算法只给策略网络增加了熵正则,SAC给价值网络也增加了熵正则,这样鼓励产生更多的状态空间,进一步增加了探索性,使得模型更具鲁棒性。它的做法是通过修改了普通策略学习的目标函数,在每一步的回报中增加了策略的熵,于是目标就变成了

于是策略梯度就变成了:

然后训练方式基本和普通的actor-critic架构一致...

如果只是像上面那样的网络来训练,很明显会存在高估的问题,在最大化Q值时会导致高估,而在通过自身网络来计算TD目标的时候又将高估无限传导进一步导致了高估。因此,为了解决高估问题,我们必须要斩断这种传导以及最大化带来的高估。SAC采用了一个一个类似TD3算法中的clipped double-Q 技巧。

如上图所示,SAC使用两个Q网络,并通过取最小的Q值的方式来避免最大化带来的高估,并且使用延迟的价值网络(通过Polyak平均)来缓解bootstraping带来的高估无限传递。具体是这样一个训练过程:

另外,注意一点,上面提到的那个策略熵平衡系数 可以手工设置超参数,也可以使用自动的方式调整的,工业上倾向于自动的方式。

相似回答