PETS:伯克利大神Sergey Levine指导的概率集成轨迹采样算法

简介: 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 robotics2016年提出来的End-to-end training of deep visuomotor policies

  很显然,由于模型采样成本极高,因此学一个模型就变得顺理成章,由此衍生出了一系列基于模型的强化学习文章。通过与所学的模型交互从而减少采样的复杂性。更细致地来说,是通过在所学模型中对未来发生的事情进行想象,专业术语叫做规划,planning

  基于模型的强化学习还有一个好处在于,它可以做到奖励独立,因为学的是状态转移。所以如果是在相同的环境中,而任务不同的话,他的泛化能力是非常强的。比如说,对于同一个机器人,对于某个特定的任务,奖励函数固定,而换了一个任务的话,奖励函数就改变了。这个时候如果还需要与环境进行交互采样的话,效率就未免太低了。

  因此从上述论述中不难发现,在基于模型的强化学习算法中,如何学一个模型是至关重要的,也就是说所构建模型的表征能力往往能决定基于模型的强化学习算法在最终性能上的表现。

  高斯过程对于model的不确定性表征具有极强的学习能力,而神经网络能够处理大规模高维的数据,但是对于少量数据容易过拟合。高斯函数也有弊端,就是基准分布是一个平滑的高斯核,而神经网络能够表达更复杂的函数近似。作者将二者结合,在基准控制任务中取得了SOTA的结果


所采用的方法?

大体思路


  如上图所示,Model是多个概率动态模型(上图中是两个),每一个动态模型都能够很好地去表征环境的不确定性。有了模型之后就可以往前进行轨迹采样(trajectory sampling)。规划的时候用MPC算法即可,计算出一个最优的动作序列,然后只采用这个最优序列的第一个动作,然后不断地进行规划。

  PETS能够处理的不确定性是两种:1. aleatoric:系统本身所带来的不确定性。2. epistemic:由于数据限制所带来的不确定性。


具体方法


  对于一个概率动态模型来说,下一个状态的条件分布可以表示为:

image.png

 因此如果学到了动态模型(dynamics modelf ~ \widetilde{f}f)的话,我们就通过给定候选动作序列去预测出一个状态轨迹的分布,再计算候所有选动作序列上的期望奖励就可以选出最优的动作序列。


  1. 概率神经网络(P PP):输出的神经元参数化为一个概率分布函数,用于处理aleatoric uncertainty,也就是环境模型本身带来的不确定性。其loss函数定义为:

image.png

此时的loss函数可以表示为:

image.pngimage.png

方差的输出可能为任意值,就可能产生非负的输出,导致后期的规划终端,因此做的时候常常会对其取个log,这样还是会有可能使得其坍缩为零,或者趋向于无穷大。作者在实验中发现,对其设置边界效果较好:

image.png

整体算法可表示为


代码实现


  1. tensorflow实现https://github.com/kchua/handful-of-trials
  2. pytorch实现https://github.com/quanvuong/handful-of-trials-pytorch
相关文章
|
5天前
|
存储 机器学习/深度学习 算法
R语言贝叶斯Metropolis-Hastings采样 MCMC算法理解和应用可视化案例
R语言贝叶斯Metropolis-Hastings采样 MCMC算法理解和应用可视化案例
|
11天前
|
机器学习/深度学习 算法 前端开发
【Python机器学习专栏】集成学习算法的原理与应用
【4月更文挑战第30天】集成学习通过组合多个基学习器提升预测准确性,广泛应用于分类、回归等问题。主要步骤包括生成基学习器、训练和结合预测结果。算法类型有Bagging(如随机森林)、Boosting(如AdaBoost)和Stacking。Python中可使用scikit-learn实现,如示例代码展示的随机森林分类。集成学习能降低模型方差,缓解过拟合,提高预测性能。
|
17天前
|
算法 数据可视化 Python
Python用MCMC马尔科夫链蒙特卡洛、拒绝抽样和Metropolis-Hastings采样算法
Python用MCMC马尔科夫链蒙特卡洛、拒绝抽样和Metropolis-Hastings采样算法
|
19天前
|
算法 数据可视化
R语言马尔可夫MCMC中的METROPOLIS HASTINGS,MH算法抽样(采样)法可视化实例
R语言马尔可夫MCMC中的METROPOLIS HASTINGS,MH算法抽样(采样)法可视化实例
R语言马尔可夫MCMC中的METROPOLIS HASTINGS,MH算法抽样(采样)法可视化实例
|
23天前
|
机器学习/深度学习 数据采集 算法
ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测
ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测
|
23天前
|
算法 数据可视化 Python
Python贝叶斯推断Metropolis-Hastings(M-H)MCMC采样算法的实现
Python贝叶斯推断Metropolis-Hastings(M-H)MCMC采样算法的实现
|
24天前
|
算法 C++ Python
R语言RSTAN MCMC:NUTS采样算法用LASSO 构建贝叶斯线性回归模型分析职业声望数据
R语言RSTAN MCMC:NUTS采样算法用LASSO 构建贝叶斯线性回归模型分析职业声望数据
|
24天前
|
机器学习/深度学习 算法 前端开发
Scikit-learn进阶:探索集成学习算法
【4月更文挑战第17天】本文介绍了Scikit-learn中的集成学习算法,包括Bagging(如RandomForest)、Boosting(AdaBoost、GradientBoosting)和Stacking。通过结合多个学习器,集成学习能提高模型性能,减少偏差和方差。文中展示了如何使用Scikit-learn实现这些算法,并提供示例代码,帮助读者理解和应用集成学习提升模型预测准确性。
|
24天前
|
机器学习/深度学习 算法 C++
R语言贝叶斯MCMC:GLM逻辑回归、Rstan线性回归、Metropolis Hastings与Gibbs采样算法实例
R语言贝叶斯MCMC:GLM逻辑回归、Rstan线性回归、Metropolis Hastings与Gibbs采样算法实例
|
24天前
|
机器学习/深度学习 算法 Python
使用Python实现集成学习算法:Bagging与Boosting
使用Python实现集成学习算法:Bagging与Boosting
22 0