PETS:伯克利大神Sergey Levine指导的概率集成轨迹采样算法
文章目录
- 所解决的问题?
- 背景
- 所采用的方法?
- 大体思路
- 具体方法
- 代码实现
- 论文题目:Deep Reinforcement Learning in a Handful of Trials using Probabilistic Dynamics Models
所解决的问题?
基于模型的强化学习算法由于要使用一个深度神经网络去学习一个环境model
,而纯神经网络这种大参数的近似函数求解会带来很多缺陷,比如说计算开销,对于环境的不确定性无法很好的表征,由于参数量比较大,其求解相对来说也并不会很容易。
作者通过一个不确定的动态模型(uncertainty-aware dynamics models
)来处理环境的不确定性,使得其能够相对来说不需要很大的神经网络来处理环境的不确定性。所提出的算法就是基于轨迹采样的概率集成算法,英文描述为probabilistic ensembles with trajectory sampling
,简写为PETS
。通过采样的不确定性来处理环境的动态模型的这样一种特性。
背景
无模型强化学习算法最大的弊端就是采样昂贵,这就限制了其很大一部分应用都处于仿真领域,当然也存在一些极少数的例外,像2009
年提出来的Policy search for motor primitives in robotics
和2016
年提出来的End-to-end training of deep visuomotor policies
。
很显然,由于模型采样成本极高,因此学一个模型就变得顺理成章,由此衍生出了一系列基于模型的强化学习文章。通过与所学的模型交互从而减少采样的复杂性。更细致地来说,是通过在所学模型中对未来发生的事情进行想象,专业术语叫做规划,planning
。
基于模型的强化学习还有一个好处在于,它可以做到奖励独立,因为学的是状态转移。所以如果是在相同的环境中,而任务不同的话,他的泛化能力是非常强的。比如说,对于同一个机器人,对于某个特定的任务,奖励函数固定,而换了一个任务的话,奖励函数就改变了。这个时候如果还需要与环境进行交互采样的话,效率就未免太低了。
因此从上述论述中不难发现,在基于模型的强化学习算法中,如何学一个模型是至关重要的,也就是说所构建模型的表征能力往往能决定基于模型的强化学习算法在最终性能上的表现。
高斯过程对于model
的不确定性表征具有极强的学习能力,而神经网络能够处理大规模高维的数据,但是对于少量数据容易过拟合。高斯函数也有弊端,就是基准分布是一个平滑的高斯核,而神经网络能够表达更复杂的函数近似。作者将二者结合,在基准控制任务中取得了SOTA
的结果。
所采用的方法?
大体思路
如上图所示,Model
是多个概率动态模型(上图中是两个),每一个动态模型都能够很好地去表征环境的不确定性。有了模型之后就可以往前进行轨迹采样(trajectory sampling
)。规划的时候用MPC
算法即可,计算出一个最优的动作序列,然后只采用这个最优序列的第一个动作,然后不断地进行规划。
PETS
能够处理的不确定性是两种:1. aleatoric
:系统本身所带来的不确定性。2. epistemic
:由于数据限制所带来的不确定性。
具体方法
对于一个概率动态模型来说,下一个状态的条件分布可以表示为:
fθ(st+1∣st,at)=Pr(st+1∣st,at;θ)f_{\boldsymbol{\theta}}\left(s_{t+1} \mid s_{t}, \boldsymbol{a}_{t}\right)=\operatorname{Pr}\left(s_{t+1} \mid s_{t}, \boldsymbol{a}_{t} ; \boldsymbol{\theta}\right)fθ(st+1∣st,at)=Pr(st+1∣st,at;θ)
因此如果学到了动态模型(dynamics model
f~\widetilde{f}f)的话,我们就通过给定候选动作序列去预测出一个状态轨迹的分布,再计算候所有选动作序列上的期望奖励就可以选出最优的动作序列。
- 概率神经网络(PPP):输出的神经元参数化为一个概率分布函数,用于处理
aleatoric uncertainty
,也就是环境模型本身带来的不确定性。其loss
函数定义为:
lossP(θ)=−∑n=1Nlogf~θ(sn+1∣sn,an)\operatorname{loss}_{\mathrm{P}}(\boldsymbol{\theta})=-\sum_{n=1}^{N} \log \widetilde{f}_{\boldsymbol{\theta}}\left(\boldsymbol{s}_{n+1} \mid \boldsymbol{s}_{n}, \boldsymbol{a}_{n}\right)lossP(θ)=−n=1∑Nlogfθ(sn+1∣sn,an)
举个具体的例子,输入是sns_{n}sn和ana_{n}an,输出是一个参数化的高斯分布:
f~=Pr(st+1∣st,at)=N(μθ(st,at),Σθ(st,at))\tilde{f}=\operatorname{Pr}\left(s_{t+1} \mid s_{t}, a_{t}\right)=\mathcal{N}\left(\mu_{\theta}\left(s_{t}, a_{t}\right), \Sigma_{\theta}\left(s_{t}, a_{t}\right)\right)f~=Pr(st+1∣st,at)=N(μθ(st,at),Σθ(st,at))
此时的loss
函数可以表示为:
lossGauss (θ)=∑n=1N[μθ(sn,an)−sn+1]⊤Σθ−1(sn,an)[μθ(sn,an)−sn+1]+logdetΣθ(sn,an)\operatorname{loss}_{\text {Gauss }}(\boldsymbol{\theta})=\sum_{n=1}^{N}\left[\mu_{\boldsymbol{\theta}}\left(\boldsymbol{s}_{n}, \boldsymbol{a}_{n}\right)-\boldsymbol{s}_{n+1}\right]^{\top} \boldsymbol{\Sigma}_{\boldsymbol{\theta}}^{-1}\left(\boldsymbol{s}_{n}, \boldsymbol{a}_{n}\right)\left[\mu_{\boldsymbol{\theta}}\left(\boldsymbol{s}_{n}, \boldsymbol{a}_{n}\right)-\boldsymbol{s}_{n+1}\right]+\log \operatorname{det} \boldsymbol{\Sigma}_{\boldsymbol{\theta}}\left(\boldsymbol{s}_{n}, \boldsymbol{a}_{n}\right)lossGauss (θ)=n=1∑N[μθ(sn,an)−sn+1]⊤Σθ−1(sn,an)[μθ(sn,an)−sn+1]+logdetΣθ(sn,an)
方差的输出可能为任意值,就可能产生非负的输出,导致后期的规划终端,因此做的时候常常会对其取个log
,这样还是会有可能使得其坍缩为零,或者趋向于无穷大。作者在实验中发现,对其设置边界效果较好:
ogvar=max_logvar−tf.nn.softplus(max_logvar−logvar)logvar=min_logvar+tf.nn.softplus(logvar−min_logvar)var=tf.exp(logvarogvar = max\_logvar - tf.nn.softplus (max\_logvar - logvar)\\ logvar = min\_logvar + tf.nn.softplus (logvar - min\_logvar)\\ var = tf.exp(logvarogvar=max_logvar−tf.nn.softplus(max_logvar−logvar)logvar=min_logvar+tf.nn.softplus(logvar−min_logvar)var=tf.exp(logvar
集成(PEPEPE):定义BBB个
bootstrap models
,预测的概率分布可以表示为f~θ=1B∑b=1Bf~θb\widetilde{f}_{\boldsymbol{\theta}}=\frac{1}{B} \sum_{b=1}^{B} \tilde{f}_{\boldsymbol{\theta}_{b}}fθ=B1∑b=1Bf~θb。基于所学模型进行规划和控制:一旦模型f~θ\widetilde{f}_{\boldsymbol{\theta}}fθ学好之后,我们就可以利用它,在给定候选策略at:t+T≐{at,…,at+T}\boldsymbol{a}_{t: t+T} \doteq\left\{\boldsymbol{a}_{t}, \ldots, \boldsymbol{a}_{t+T}\right\}at:t+T≐{at,…,at+T}的情况下来去预测未来。基于
MPC
算法选择最优的动作argmaxat:t+T∑τ=tt+TEf~[r(sτ,aτ)\arg \max _{\boldsymbol{a}_{t: t+T}} \sum_{\tau=t}^{t+T} \mathbb{E}_{\widetilde{f}}\left[r\left(\boldsymbol{s}_{\tau}, \boldsymbol{a}_{\tau}\right)\right.argmaxat:t+T∑τ=tt+TEf[r(sτ,aτ)。常用sampling shooting method
来实现计算最优的动作序列,但是作者用CEM
方法采样动作。
整体算法可表示为:
代码实现
- tensorflow实现:https://github.com/kchua/handful-of-trials
- pytorch实现:https://github.com/quanvuong/handful-of-trials-pytorch
PETS:伯克利大神Sergey Levine指导的概率集成轨迹采样算法相关推荐
- 伯克利大神一人投中16篇!ICLR 2021论文接收统计出炉
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转载自:机器之心 | 作者:魔王 ICLR 2021 会议 ...
- 伯克利大神一人投中16篇:ICLR 2021论文接收统计出炉
点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要10分钟 Follow小博主,每天更新前沿干货 ICLR 2021 会议中投稿量和论文接收量最多的作者和机构都有哪些?这个 GitHub 项目 ...
- 求解,某M1水卡数据计算分析/大神们求指导!
标题-某M1水卡数据计算分析 洗澡水真的是好贵啊! 用Proxmark3解了一下水卡的数据,发现只有6扇区和7扇区数据有变化. 看了些资料发现 6扇区0块 第1 2位表示金额.现在卡里有2位数的钱 没 ...
- 新人报道,写的东西还请大神们多指导!也希望能让和我一样的同事少走弯路。...
大家好!我刚工作,经验还很有限,写的东西都是自己在工作过程中遇到的问题,花了很多时间来解决之后的一些总结,可能比较浅显也比较简单,有什么不足的地方还请大家指正,有好的方法也欢迎大家留言,小生先谢过啦! ...
- 不被大神Hinton认同,否定现有同行成果,谷歌这篇烧脑研究最终拿下ICML2019最佳论文...
晓查 栗子 安妮 发自 凹非寺 量子位 出品 | 公众号 QbitAI ICML 2019最佳论文来了! 今年,共有3424篇论文提交到这场一年一度的机器学习国际顶会上,大会共接收了774篇.有两篇论 ...
- php请求api获取返回值,我用curl请求接口获取返回值,但是不成功,大神给看看怎么调取?...
接口地址 http://mp.vservice.com.cn/service/OutWebService?wsdl 接口调用方 callService(String serviceName,Strin ...
- #今日论文推荐# 强化学习大牛Sergey Levine新作:三个大模型教会机器人认路
#今日论文推荐# 强化学习大牛Sergey Levine新作:三个大模型教会机器人认路 内置大模型的机器人,在不看地图的情况下,学会了按照语言指令到达目的地,这项成果来自强化学习大牛 Sergey L ...
- 强化学习大牛Sergey Levine新作:三个大模型教会机器人认路
来源:机器之心 内置大模型的机器人,在不看地图的情况下,学会了按照语言指令到达目的地,这项成果来自强化学习大牛 Sergey Levine 的新作. 给定一个目的地,在没有导航轨迹的情况下顺利到达,有 ...
- 姚班大神陈立杰最新动向:MIT毕业后将进入诺奖摇篮,成为UC伯克利Miller研究员...
晓查 发自 凹非寺 量子位 | 公众号 QbitAI 据知情人士透露,陈立杰今从MIT博士毕业后,将加入加州大学伯克利分校,成为该校Miller研究所研究员. 陈立杰是清华大学姚班知名校友,2016年 ...
- 遗传算法优化BP神经网络出现输入参数不足,是什么原因啊,求大神指导,代码如下
用遗传算法优化BP神经网络,在加粗那行出现输入参数不足,是什么原因啊,求大神指导,代码如下 function err=Bpfun(x,P,T,hiddennum,P_test,T_test) fid= ...
最新文章
- 系统开出出现问题~~~\WINDOWS\SYSTEM32\CONFIG\SYSTEM 损坏或丢失无法开机
- Oracle 跨库 查询 复制表数据
- php 复选框默认选中的值,PHP复选框默认值是什么 - php
- 实现主成分分析和白化
- 转基因大豆提高大豆油脂产量80%
- C# 处理应用程序减少内存占用
- 「转载」蘑菇街消息系统上云实践
- 计算机教学提问的观课量表,观课议课|如何使用观察和记录量表
- 塔式太阳能热发电技术在我国发展现状与前景分析
- Unity手游实战:从0开始SLG——本地化篇(一)聊聊游戏本地化
- Python本地文件合并(csv)
- 微信域名检测接口文档
- 宏基笔记本怎么进入BIOS界面
- 如何对电脑屏幕进行监控?
- zCloud使用技巧:如何使用性能下钻功能分析SQL性能问题
- Unity相机旋转和人物朝向
- APUE读书笔记-第十章-信号
- VHDL和Verilog HDL的区别
- 从曾经的一家独大到现在的群雄逐鹿,大数据时代的数据库圈为啥如此之乱?
- 已知等价关系求商集_等价关系习题
热门文章
- 删除分卷php逻辑,Linux LVM(逻辑卷管理)删除详解
- 游戏筑基开发之menset底层实现及C语言项目常见问题解决方案(C语言)
- OSPF区域外路由的计算过程与FA值实验
- hash通信(python多线程应用)采用md5加密
- Leetcode 刷题笔记(二十五) ——动态规划篇之背包问题:完全背包
- 用Vue-cli3+element+mockjs 实现后台管理权限系统及顶栏三级菜单显示
- SpringBoot+Shiro学习(七):Filter过滤器管理
- [HDU6315]Naive Operations(线段树+树状数组)
- 基于mpvue的toast组件
- 使用docker优雅的部署你的nuxtjs项目