上一篇文章介绍了利用确定策略来解决连续控制问题的DDPG,现在再来介绍一种非常牛的用随机策略来做连续控制的方法Soft Actor Critic (SAC) 。它是一种以off-policy的方式来优化随机策略的算法,它的核心特点是熵正则化, 策略的训练在最大化预期回报和最大化熵之间作了个权衡,在这一点上实际也跟exploration还是exploitation有重大关系,增加熵会导致更多探索,这可以加速之后的学习,还可以防止策略过早地收敛到一个糟糕的局部最优。
熵和随机策略
为了防止有些人不太清楚熵的概念,在正式开始讲SAC之前,我稍微介绍一下熵的概念,以及随机策略的好处。
这里的熵指的是信息熵,它代表一个随机变量所有可能取值的自信息 的加权求和:
正如上式所示,随机变量越是随机,熵就越大。根据热力学第二定律,自然界本身无时无刻不处在于一个熵增的过程之中,即不断走向混沌,而人类的奋斗进程则是对抗自然的熵减过程,他期望变得明确和有序,强化学习的过程也是如此。
一般的,强化学习的目标在于最大化奖励,即最大化动作状态价值 ,确定策略可以直接选择最大 的 来行动,但是这样就会使得操作模式是固化的,比如训练一个机械臂去捡东西,实际运动轨迹可以多种多样,而确定策略就会使这个动作变得很单调。 并且如果是在对抗的环境中,这种固定化的操作也容易被对手利用而存在漏洞,而基于策略 随机采样的动作 来行动就可以有效避免这一点,并且 的熵越大,也便代表动作越随机,越能在同一情况下做出不同的动作,让对手无法轻易预测,当然在训练时鼓励熵增带来的探索优化的好处也是不言而喻的。
随机策略的Actor Critic方法
actor-critic方法依赖于策略梯度,目标是利用梯度上升来让最大化,因为期望不好求,于是就用蒙特卡洛方法来近似:
假设动作 是 维的,那么策略 使用个高斯分布 连乘的方式来近似 :
而其中的 和 使用神经网络来近似:
然后根据得到的个高斯分布来采样得到行动, 将其代入上面的, 便可以得到 , 现在还剩下 需要求。这个我们使用actor-critic中的critic对应的价值网络 来近似,于是整个网络可以表示为:
然后用td算法来最小化target-q 和 q的差距来优化价值网络的参数,整个训练过程就算跑通了。
熵正则化
相对于A3C之类的算法只给策略网络增加了熵正则,SAC给价值网络也增加了熵正则,这样鼓励产生更多的状态空间,进一步增加了探索性,使得模型更具鲁棒性。它的做法是通过修改了普通策略学习的目标函数,在每一步的回报中增加了策略的熵,于是目标就变成了
于是策略梯度就变成了:
然后训练方式基本和普通的actor-critic架构一致...
处理高估问题
如果只是像上面那样的网络来训练,很明显会存在高估的问题,在最大化Q值时会导致高估,而在通过自身网络来计算TD目标的时候又将高估无限传导进一步导致了高估。因此,为了解决高估问题,我们必须要斩断这种传导以及最大化带来的高估。SAC采用了一个一个类似TD3算法中的clipped double-Q 技巧。
如上图所示,SAC使用两个Q网络,并通过取最小的Q值的方式来避免最大化带来的高估,并且使用延迟的价值网络(通过Polyak平均)来缓解bootstraping带来的高估无限传递。具体是这样一个训练过程:
- 通过策略网络采样动作进行游戏,记录transition(state,action,reward,next_state)到 play buffer中
- 从play buffer获取训练数据,计算策略网络和两个Q网络,通过td算法来更新Q网络,使用Q值中较小的那个来更新V网络,再得到的V值后再使用梯度上升来更新策略网络,最后再用使用Polyak平均更新目标V网络。
另外,注意一点,上面提到的那个策略熵平衡系数 可以手工设置超参数,也可以使用自动的方式调整的,工业上倾向于自动的方式。
参考资料
- Soft Actor-Critic
- Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor, Haarnoja et al, 2018
- Soft Actor-Critic Algorithms and Applications, Haarnoja et al, 2018
- Learning to Walk via Deep Reinforcement Learning, Haarnoja et al, 2018