SAC

SAC:Soft Actor-Critic
原文:《Soft Actor-Critic:
Off-Policy Maximum Entropy Deep Reinforcement
Learning with a Stochastic Actor》

代码:https://github.com/rail-berkeley/softlearning (原作者实现)
其他代码实现: vitchyr/rlkitopenai/spinninguphill-a/stable-baselinespytorch-soft-actor-critic(OAC作者的参考代码)

简介:

SAC属于Continuous State Space、Continuous Action Space领域
而连续领域中最有效的三类方法:

  • TRPO,PPO:目标都是在PG算法的优化过程中,使得性能单调上升,并使得上升的幅度尽量大。
  • DDPG及其拓展(D4PG,TD3等):DPG的critic用于寻找最优策略(准确度非常影响策略),actor用于优化当前策略,因为需要Q对action求导,所以不适合用于离散动作空间的任务,引入critic可以更加off-poicy;D4PG引入分布式critic,并使用多个actor共同与环境交互;TD3参考了double Q的思想来优化ctitic,延缓actor的更新,并计算critic的优化目标时在action上加一个小扰动使得Q(s,a)函数对a更平滑。
  • Soft Q-Learning, Soft Actor-Critic

简单说说PPO

  • 在传统的PG算法中引入AC框架,但更接近PG,用于stochastic policy,本身就具有探索能力不需要加扰动,所以critic仅仅是预测状态好坏的工具,影响policy调整的是真正的return,所以不需要求Q(s,a)对a的导数,用V(s)来代替return即可,还便于计算单步决策的Advantage。
  • 引入 importance sampling技巧,使PG算法成为可以利用过往数据的off-policy的算法,但实际上严格约束了策略参数的更新速度,更新步伐不能太大,所以学者们认为PPO还是一种on-policy的算法,需保证训练的policy和生成数据的policy一致,对过往policy生成的数据难以再利用,所以sample effciency这个指标比较低(这个指标是衡量RL的重要指标)
  • 使用了GAE,batch training,replay buffer 等提高算法性能的技巧
  • PPO在OpenAI Five上取得了巨大成功。

SAC

  • 出自BAIR和Google Brain,作者Tuomas Haarnoja是Pieter AbbeelSergey Levine的学生。这是他们ICML2018工作的扩展。
  • SAC宣称是第一个off-policy + actor critic + maximum entropy的RL算法。(最早应该是ACER有结合所有这些概念)
  • SAC的基于最大熵强化学习框架MER,他的熵增目标函数包含了策略和来自真实系统的动力学性能,不仅优化最大化期望(第一项),还优化最大化期望的熵(第二项):
  • α=0就是传统的预期汇报目标函数
  • α>0可以将熵看做策略的先验,或者正则项,或者探索和利用之间的平衡
  • 两个网络:一个参数化高斯策略,一个参数化Q函数。

SAC 特点

  • (1)Actor-critic框架(用两个网络分别近似policy和value function/Q function)
  • (2)Off-policy(提高样本效率)。对标on-policy效率低,对标fully off-policy的DDPG很难应用到高维任务中,同时对超参很敏感难以泛用到大量具体问题也不用玉座AlphaStar。而SAC结合了off-policy和stochastic actor。
  • (3)最大化entropy(熵)来保证稳定性和exploration。对标A3C只是把entropy当做正则项

最大化熵强化学习(Maximum Entropy Reinforcement Learning)MERL

  • 什么是entropy:SAC中的熵可以理解为混乱度,无序度,随机程度,熵越高就表示越混乱,其包含的信息量就更多。比如硬币正反面概率分别为0.1和0.9,那么结果的确定性高一些,熵就低一些,正反面概率分别为0.5和0.5,那么结果就很不确定,熵就相对较高。引入熵可以让策略(policy)尽可能随机,agent可以更充分地探索状态空间,避免早早落入局部最优。
  • 这是一种尝试让预期回报最大化(标准的强化学习目标),同时也让策略熵最大化的框架。熵更高的策略具有更高的随机性,这意味着最大熵强化学习更偏向取得高回报策略中随机性最高的策略。
  • 为什么这种方法用在机器人学习中很好呢?最重要的原因是,最大熵优化的策略鲁棒性更高(更稳定):如果策略在训练过程中能够允许高度随机的动作,那么它在测试时候也就更有可能顺利地应对预期之外的扰动。不过更机智的是,最大熵训练不仅可以提高算法对超参数的鲁棒性(稳定性),也可以提高采样效率。
  • 引入熵之前,普通RL算法目标:
  • 引入熵之后,SAC算法目标:
  • α是温度参数,控制优化目标更关注奖励还是熵,好处1:鼓励exploration,好处2:学到near-optimal行为

Energy Based Policy(EBP)
MERL采用了独特的策略模型。为了适应更复杂的任务,MERL中的策略不再是以往的高斯分布形式,而是用基于能量的模型(energy-based model)来表示策略。让EBP与值函数联系起来,设定能量函数

,所以策略

  • 基于能量的模型在面对多模态(multimodal)的值函数Q(s,a)时,具有更强的策略表达能力,而一般的高斯分布只能将决策集中在Q值更高的部分,忽略其他次优解。
  • 曲线很明显的说明了stochastic policy的重要性,面对多模的(multimodal)的Q function,传统的RL只能收敛到一个选择(左图),而更优的办法是右图,让policy也直接符合Q的分布。


    高斯分布策略(左)与基于能量的策略(右)的区别

理论推导思路

  • soft policy iteration再tabular情况下的收敛性理论推导:先证明Qk会收敛到policy的soft Q,再证明π_new比π_old有改进,最后证明重复交替使用soft policy ecaluation和soft policy improvement,最终policy会收敛到最优。
  • tabular可以收敛,那么使用神经网络去近似 soft Q-function和 policy 也能有比较好的收敛性质。
  • 实现思路和EM算法很像,先固定policy去提升Q,再固定Q去优化policy

SAC更新方式

  • soft Q function的更新和普通Q learning的方法一样是更新Bellman残差,只不过V(s)包含了entropy项,有点像 one-step sarsa加了个entropy


    Q网络

    Policy网络的更新方法是最小化上面提到的KL-散度。


    Policy 网络
  • Policy网络输出的是高斯分布的均值和协方差,但只是根据均值和协方差去采样action是不可导的,这里用到一个variational autoencoder里常用的reparameterization trick。简单来说就是不直接根据均值和协方差采样,而是先从一个高斯分布里采样,然后再把采样值乘于协方差再加上均值(如下图)。这样网络就变成可导的了。


    reparameterization trick
  • 所以,近似梯度就是

SAC的自动熵调整(Automating Entropy Adjustment)

  • SAC 借鉴了一些前人的trick来提升性能,比如 double Q network, target network。但最重要的一个改进是自动熵调整
  • 熵应该在不同的状态下有不一样大小的熵:
    (1)比如在最优动作还没确定的状态熵应该比较大
    (2)在最优动作已经能确定的状态下熵应该取比较小的值。
  • 作者把优化问题构造为一个带约束的优化问题:最大化Returns的同时,保持策略的熵大于一个阈值。用到了拉格朗日乘子法和动态规划来求解最好的温度系数α
  • 虽然理论上要精确地解决这个问题需要迭代优化上面提到的带约束优化问题。可是实际中,他们还是通过函数近似和随机梯度下降来近似求解。

SAC的实际算法

  • 为了减少policy improvement时的偏差,他们采用了一个常用的trick,两个网络去近似Soft Q-function
  • 在优化Actor参数的时候,使用Q值比较小的网络作为Critic来减少偏差和高估
  • 温度参数 (也就是上一节优化问题中的拉格朗日乘子),则通过最小化下式求解:
SAC伪代码
  • 神经网络结构图
  • SAC同时学习几个网络:
    (1)action value Q:采用TD3的double Q方法,选取最小值供V和π使用,减弱高估计
    (2)state value V 和 target V,供Q学习使用
    (3)policy π:学习分布的高斯参数,实际产出action需要从分布中采样。
    https://nervanasystems.github.io/coach/components/agents/policy_optimization/sac.html

SAC总结

  • 细究之前,可以认为SAC是RL+熵正则项,让动作更随机,熵再PPO和A3C里都有见过
  • 但是SAC有完备的理论作为支撑,加上了熵的L2正则项和不加是两类问题,但理想的基于能量的策略模型依然没有在实际上实现,只能用复杂的方式去近似EBP,最终实际的策略模型还是用的高斯分布式。

SAC表现

  • 谷歌在两个任务中对算法进行了评估:1)Ghost Robotics 环境中 Minitaur 四足机器人的行走;2)用一个三指Dynamixel Claw转动阀门。
  • 要求:高样本学习,鲁棒性强(遇到扰动也稳定)

参考资料

https://zhuanlan.zhihu.com/p/52526801
https://zhuanlan.zhihu.com/p/85003758
推导细节和实现细节:https://zhuanlan.zhihu.com/p/70360272
https://spinningup.openai.com/en/latest/algorithms/sac.html
SAC实验任务和表现:https://blog.csdn.net/jiawoxuexiqq30294961/article/details/87304961
强化学习算法SAC的学习探究及基于百度PARL的实战(非常简洁):https://www.huaweicloud.com/articles/1d0333fd58123a05695ddcc8b4532c86.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,294评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,780评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,001评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,593评论 1 289
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,687评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,679评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,667评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,426评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,872评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,180评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,346评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,019评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,658评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,268评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,495评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,275评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,207评论 2 352

推荐阅读更多精彩内容