最前沿:深度解读SoftActorCritic算法

加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动!

作者:FloodSung

智能单元

机器人学习RobotLearning正在快速的发展,其中深度强化学习deepreinforcementlearning(DRL),特别是面向连续控制continouscontrol的DRL算法起着重要的作用。在这一领域中,目前可以说有三类行之有效的modlefreeDRL算法:

PPO算法是目前最主流的DRL算法,同时面向离散控制和连续控制,在OpenAIFive上取得了巨大成功。但是PPO是一种on-policy的算法,也就是PPO面临着严重的sampleinefficiency,需要巨量的采样才能学习,这对于真实的机器人训练来说,是无法接受的。

DDPG及其拓展则是DeepMind开发的面向连续控制的offpolicy算法,相对PPO更sampleefficient。DDPG训练的是一种确定性策略deterministicpolicy,即每一个state下都只考虑最优的一个动作。DDPG的拓展版D4PG从paper中的结果看取得了非常好的效果,但是并没有开源,目前github上也没有人能够完全复现Deepmind的效果。

SoftActor-Critic(SAC)是面向MaximumEntropyReinforcementlearning开发的一种offpolicy算法,和DDPG相比,SoftActor-Critic使用的是随机策略stochasticpolicy,相比确定性策略具有一定的优势(具体后面分析)。SoftActor-Critic在公开的benchmark中取得了非常好的效果,并且能直接应用到真实机器人上。最关键的是,SoftActor-Critic是完全开源的,因此,深入理解SoftActor-Critic算法具有非常重要的意义,也是本篇blog的目的。

Paper:

Codes:

下面我们来详细解读一下SAC的算法及其具体实现。本文的阅读需要有基本的DRL算法基础知识。

对于一般的DRL,学习目标很直接,就是学习一个policy使得累加的reward期望值最大:

而最大熵RL,除了上面的基本目标,还要求policy的每一次输出的action熵entropy最大:

这样做的基本目的是什么呢?让策略随机化,即输出的每一个action的概率尽可能分散,而不是集中在一个action上。不了解entropy的同学可以看看wiki-信息熵

我们知道DDPG训练得到的是一个deterministicpolicy确定性策略,也就是说这个策略对于一种状态state只考虑一个最优的动作。所以,stochasticpolicy相对deterministicpolicy有什么优势呢?

Stochasticpolicy随机策略在实际机器人控制上往往是更好的做法。比如我们让机器人抓取一个水杯,机器人是有无数条路径去实现这个过程的,而并不是只有唯一的一种做法。因此,我们就需要drl算法能够给出一个随机策略,在每一个state上都能输出每一种action的概率,比如有3个action都是最优的,概率一样都最大,那么我们就可以从这些action中随机选择一个做出action输出。最大熵maximumentropy的核心思想就是不遗落到任意一个有用的action,有用的trajectory。对比DDPG的deterministicpolicy的做法,看到一个好的就捡起来,差一点的就不要了,而最大熵是都要捡起来,都要考虑。

基于最大熵的RL算法有什么优势?

以前用deterministicpolicy的算法,我们找到了一条最优路径,学习过程也就结束了。现在,我们还要求熵最大,就意味着神经网络需要去explore探索所有可能的最优路径,这可以产生以下多种优势:

1)学到policy可以作为更复杂具体任务的初始化。因为通过最大熵,policy不仅仅学到一种解决任务的方法,而是所有all。因此这样的policy就更有利于去学习新的任务。比如我们一开始是学走,然后之后要学朝某一个特定方向走。

2)更强的exploration能力,这是显而易见的,能够更容易的在多模态reward(multimodalreward)下找到更好的模式。比如既要求机器人走的好,又要求机器人节约能源

3)更robust鲁棒,更强的generalization。因为要从不同的方式来探索各种最优的可能性,也因此面对干扰的时候能够更容易做出调整。(干扰会是神经网络学习过程中看到的一种state,既然已经探索到了,学到了就可以更好的做出反应,继续获取高reward)

既然最大熵RL算法这么好,我们当然应该研究它了。而实际上,在之前的DRL算法A3C中,我们其实已经用了一下最大熵:

在训练policy的时候,A3C加了entropy项,作为一个regularizer,让policy更随机。不过A3C这么做主要是为了更好做exploration,整体的训练目标依然只考虑reward。这和SoftActor-Critic的设定还是不一样的,SoftActor-Critic是真正最大熵DRL算法。

我们先回顾一下dynamicprogramming中Bellmanbackupequation,参考www0.cs.ucl.ac.uk/staff

那么对于最大熵(MaxEnt)的目标,其实可以把熵也作为reward的一部分,我们在计算q值时(记住q是累加reward的期望,传统rl的目标等价于让q最大),就需要计算每一个state的熵entropy(entropy的公式如下图所示):

Recall一下DynamicProgrammingBackup:

对应Q值的公式是

根据公式(4),我们可以得到SoftBellmanBackup的更新公式:

(6)

上面公式(6)是直接使用dynamicprogramming,将entropy嵌入计算得到的结果。我们可以反过来先直接把entropy作为reward的一部分:

我们将(7)带入到公式(5)

(8)

可以得到一样的结果。

与此同时,我们知道:

因此,我们有:

至此我们理清楚了SACpaper原文中的公式(2)和(3):

并且(7)的做法直接证明了Lemma1SoftPolicyEvaluation(这个lemma为下一部分的softpolicyiteration提供支撑):

但是,我们注意到上面的整个推导过程都是围绕maximumentropy,和soft好像没有什么直接关系。所以,

为什么称为soft?哪里soft了?以及为什么softQfunction能够实现maximumentropy?

理解清楚这个问题是理解明白softq-learning及sac的关键!

SAC这篇paper直接跳过了softQ-function的定义问题,因此,要搞清楚上面的问题,我们从SoftQ-Learning的paper来寻找答案。

参考:

LearningDiverseSkillsviaMaximumEntropyDeepReinforcementLearning

上面的曲线很明显的说明了stochasticpolicy的重要性,面对多模的(multimodal)的Qfunction,传统的RL只能收敛到一个选择(左图),而更优的办法是右图,让policy也直接符合Q的分布。这里,最直接的一种办法就是定义这样的energy-basedpolicy:

为了连接softQfunction,我们可以设定

因此,我们有

这样的policy能够为每一个action赋值一个特定的概率符合Q值的分布,也就满足了stochasticpolicy的需求。

下面我们要发现(13)的形式正好就是最大熵RL的optimalpolicy最优策略的形式,而这实现了softqfunction和maximumentropy的连接。

实际上我们理解SoftQ-Learning及SoftActorCritic,要清楚上图三者的关系。在SoftQ-Learning那篇paper中,他是从SoftValueFunction的定义出发去连接Energy-BasedPolicy和MaximumEntropyObjective的关系。而在本blog中,我们从MaximumEntropyObjective出发,来连接其他两部分。

前面我们已经推导得到了公式(10),那么根据公式(10),我们可以直接推导得到policy的形式:

这和soft有什么关系呢?(16)其实是LogSumExp的积分形式,就是smoothmaximum/softmaximum(软的最大)。参考en.wikipedia.org/wiki/L

所以就可以定义

因此我们也就可以根据公式(9)定义soft的Q-function:

所以,为什么称为soft是从这里来的。

这里有一个常见的疑问就是这里的softmax和我们常见的softmax好像不一样啊。是的,我们在神经网络中常用的activationfunctionsoftmax实际上是softargmax,根据一堆logits找到对应的软的最大值对应的index。具体参看:en.wikipedia.org/wiki/S

上面的推导还只是面向policy的value和Q,我们下面要说明optimalpolicy也必然是energy-basedpolicy的形式。

这一部分的证明依靠Policyimprovementtheorem:

具体证明过程见softq-learning原文的A.1。

有了Theorem4,

我们就可以看到optimalpolicy必然是energybasedpolicy,也因此,我们有了softqlearningpaper中最开始的定义:

理清楚了上面的基本定义和联系,我们就可以研究怎么更新policy了,也就是policyiteration。

回顾一下一般的PolicyIteration:

在两步中进行循环迭代(我们直接使用Q值来说明):

2.Policyimprovement:更新policy:

基于同样的方法,我们有SoftPolicyIteration:

(22)

2.Softpolicyimprovement:更新policy:

(22)基于上一部分说的Lemma1SoftPolicyEvaluation,可收敛。

同样的,作者也专门证明了采用KLdivergence的方法一样能够保证policyimprovement,也就是Lemma2:

最后,就是证明上面的SoftPolicyIteration过程能保证policy收敛到最优,即Theorem1:

由此,基本的理论建设也就结束了,下面进入SoftActor-Critic的算法设计。

对于Q网络的更新,我们根据(10)可以得到:

(24)

对于Policy网络参数的更新,就是最小化KLdivergence:

这里的action我们采用reparameterizationtrick来得到,即

这样基本的SoftActor-Critic的更新方法也就得到了。

这里,SAC的作者构造了一个带约束的优化问题,让平均的entropy权重是有限制的,但是在不同的state下entropy的权重是可变的,即

对于这部分内容,PolicyGradientAlgorithms这个openai小姐姐的blog介绍得极其清楚,大家可以参考,最后得到temerature的loss:

由此,我们可以得到完整的SoftActor-Critic算法:

虽然上面把算法流程确定了,但是如何构造policy的神经网络还是比较复杂的。下图是带V网络的神经网络结构图:

我们主要来探究一下Policy网络的设计。

正常输出这样的高斯分布作为action的分布distribution是OK的,但是在实际中,这个action需要限定在一定范围内。因此,这里作者使用了squashingfunctiontanh,将action限制在(-1,1)之间,即

这里和上文的公式(26)对应,多了一个tanh。

那么这会导致分布的变化,从而影响loglikelihood的计算,而这是我们计算SAC的loss必须的。作者在paper中给出了计算方法如下:

1)SAC里的targetentropy设计为

即-动作数量。

2)SACpaper里完全没有说明的训练时的episode设置。SAC设置为每一个episode采样1000次然后训练1000次。

3)在代码中SAC使用logalpha作为更新的参数,而不是直接使用alpha如公式(25),这和输出logstd是一样的,使用log有很大的正负范围,更方便网络输出。否则alpha或者std都是正值。

4)SAC有一个很大的问题,它的policy的目的是趋近于玻尔兹曼分布,但是实际实现的时候,为了能够tractable,选择了输出一个高斯,也就是让高斯趋近于玻尔兹曼分布。这意味着SAC本质上还是unimodal的算法,而不是softq-learning的multi-modal。这使得SAC的创新性打了很大的折扣。但是算法效果确实还是不错的。

本文从理论到具体实现层面剖析了SoftActor-Critic这一目前极强的DRL算法,基本上理解了本文的分析,对于代码的实现也就可以了然于胸了。

THE END
1.计算机10大经典算法计算机经典算法在介绍了快速排序和归并排序这两种高效的排序算法后,我们现在来看看另一种重要的排序方法——堆排序。堆排序是一种基于完全二叉树结构的比较排序算法,它利用了堆的特性来进行高效排序20。其核心思想是将待排序的数据构造成一个大顶堆或小顶堆,然后逐步交换堆顶元素和堆尾元素,同时调整堆结构,最终得到有序序列21。https://blog.csdn.net/2401_86544677/article/details/143141716
2.共识算法介绍2、主流的共识算法有哪些? 3、目前主流区块链(比特币、以太坊等)分别采用哪种共识算法? 4、哪种共识算法最好? 1、什么是共识机制? 我们都知道,区块链可以看作一本记录所有交易的分布式公开帐簿,区块链网络中的每个参与者都把它看作一本所有权的权威记录。 https://www.jianshu.com/p/8b50304db034
3.Contents/premium.mdatmaster·Newslab2020/Contents·GitHub封城之后会留下什么? 582 知网、Sci-Hub与学术出版业的暴利 2022/4/21 “学者都是出版商的奴隶”; 学术出版行业背后的英国大亨; Sci-Hub能否挑战出版商霸权? 581 三个与对话、求真有关的项目 2022/4/16 Letter:公开、真诚的通信对话; Pairagraph:公共议题的回合辩论; https://github.com/Newslab2020/Contents/blob/master/premium.md
4.智能机器人系列报告三:技术的盛宴,服务机器人核心技术与模块解析激光雷达是“机器之眼”,能够获得周边环境的点云数据模型,现在多用于在测量中有一定精度要求的领域,或需要测量自身与人体距离的智能装备,在测量与人的距离这一功能上尚无完美替代方案。在目前主流的前沿机器人身上已经装备了激光雷达模块,如Atlas和pepper等。https://blog.sina.com.cn/s/blog_a816de580102wu8z.html?bsh_bid=1917182908
5.现在主流的软件开发技术有哪些?TensorFlow和PyTorch是两个流行的机器学习框架,它们提供了强大的工具和算法,用于开发各种智能应用和模型。 Scikit-learn: Scikit-learn是一个用于机器学习的Python库,包含了许多常用的算法和工具,使得机器学习的应用更加方便。 7. 云计算 AWS、Azure、Google Cloud: http://www.apppark.cn/t-49941.html
6.主流的哈希算法有哪几种?SHA-3(Secure Hash Algorithm 3):是美国国家标准与技术研究院(NIST)于2015年发布的新一代安全哈希算法,其基于 Keccak 算法,提供了多个摘要长度选项,如 SHA-3-224、SHA-3-256、SHA-3-384 和 SHA-3-512。 CRC32(Cyclic Redundancy Check):产生32位的哈希值,主要用于数据校验和错误检测,如文件校验、网络通信等https://www.nowcoder.com/discuss/621489203938930688
7.把这些计算机基础知识学完后,我飘了!RLE 算法的机制 接下来就让我们正式看一下文件的压缩机制。首先让我们来尝试对AAAAAABBCDDEEEEEF这 17 个半角字符的文件(文本文件)进行压缩。虽然这些文字没有什么实际意义,但是很适合用来描述RLE的压缩机制。 由于半角字符(其实就是英文字符)是作为 1 个字节保存在文件中的,所以上述的文件的大小就是 17 字节。如图https://maimai.cn/article/detail?fid=1400649709&efid=VmhIiOBVBH0ua86U1tJoEA
8.《SEO实战密码(第3版)》精华整理整个第3版600多页,就中国大陆人来看很臃肿,毕竟中国大陆以百度为主,书中包括外链、作弊方式等等很多都过时了,但这本书只有新增补充,并没有做太多相应的删减。 尽信书不如无书,学会带着自己思维去看去做会更好,SEO算法本就不是公开的,一旦公开可能又会有很多作弊手段出现,但现在百度官方给出了很多良好的建议https://lusongsong.com/yulu/wap.asp?id=7015
9.20年前100块≈现在310?通胀之下,准备多少钱才够养老?另外提醒大家:目前并没有官方统计的通货膨胀率,以下仅为两种网络主流算法,计算思路及结果仅供参考。 思路一:消费者物价指数(CPI算法) CPI(消费者物价指数),能很好地反映生活中那些消费品,如肉蛋奶、烟酒茶的价格变化,一定程度上,能反映通货膨胀率。 我们统计了从 2002 年开始,到 2021 年的 CPI 数据,各年度波动https://www.shenlanbao.com/caifu/1635471539614597120
10.web3:同态加密(一)SWHE方案稍弱,但也意味着开销会变得较小,容易实现,现在已经可以在实际中使用。 主流同态加密算法原理 满足有限运算同态性而不满足任意运算同态性的加密算法称为半同态加密。典型的半同态加密特性包括乘法同态、加法同态、有限次数全同态等。 乘法同态加密算法https://developer.aliyun.com/article/1154858
11.路飞学城1、对各种高精尖算法有较深研究; 2、精读Python源码,熟知Python解释器底层技术实现; 3、擅长领域:汇编、C/C++、Python、Java、逆向工程、机器学习与人工智能等; 教学大纲 包含Python工程师需要的全部技术要求 第一阶段:Python开发基础(3周) 可掌握的核心能力: 1、掌握文件操作、字符编码及转换、函数编程等开发人https://m.luffycity.com/light-course/python
12.电商主流推荐算法概要51CTO博客现在在京东、易迅、亚马逊等看到的主流推荐算法,一般都是基于物品自身相似性(不依赖于用户数据,没有冷启动问题)、基于用户浏览、喜欢、购买等数据的协同过滤推荐(用户纬度和商品纬度)。 其实这些推荐算法的核心思路,是很朴素的。 一、基于物品自身相似度:例如衣服A和衣服B,对于它们在分类、价格段、属性、风格、品牌定https://blog.51cto.com/u_16081606/6210192
13.主流大数据平台算法有哪些帆软数字化转型知识库以上这些大数据平台算法各有特长和应用场景,在选择时需要根据具体的业务需求、数据量级和实时性等因素进行权衡,以达到最佳效果。 相关问答FAQs: 主流大数据平台算法有哪些? Hadoop大数据平台算法:Hadoop是最常用的大数据平台之一,其算法包括MapReduce算法、Hive查询语言、HBase分布式数据库、Pig数据分析平台等。MapReduce是Hahttps://www.fanruan.com/blog/article/495/
14.EdgeDetection:C++实现的主流边缘检测算法(CannySobel3.5 双边滤波算法 三、图像增强 四、边缘检测 1. Canny算子 2. Sobel算子 3. Laplace算子 4. Roberts算子 五、MFC实现 1. 框架搭建 2. 功能实现 六、小结 摘要:本文主要介绍了几种主流的图像边缘检测算法,包括Canny算子、Sobel算子、Laplace算子、Roberts算子、Krisch算子、Prewitt算子、Susan角点检测算法等。另外https://gitee.com/yczha/EdgeDetection
15.中国“缺芯少魂”之痛难破解,打破AI核心技术瓶颈才有未来现在,全球AI领域,深度学习已经超越传统机器学习,成为主流算法。但是,机器学习仍未被取代,两者呈现互补的态势。随着深度学习与神经网络算法的结合,不仅降低了算法训练的门槛,更衍生出大量热门算法以及相应的底层构架。 与依赖于芯片的算力不同,算法由于开源代码、自动化工具等助力,门槛相对降低不少,因而成为初创公司不错的https://www.iyiou.com/news/20191129119131
16.几种主流贴图压缩算法的实现原理详解几种主流贴图压缩算法的实现原理详解 对于不同的项目其中关于贴图压缩这块需要针对不同的平台做不同的设置,下面就和大家介绍下在各种平台中常使用的几种贴图压缩格式及其细节,以便更加适宜地选择在特定设备下的压缩格式以便节省资源。关于移动平台和硬件设备与压缩格式的对应关系可以参考下这里,基本上比较清楚了。https://gwb.tencent.com/community/detail/123075