【RLchina第四讲】Model-Based Reinforcement Learning(上)

简介: 【RLchina第四讲】Model-Based Reinforcement Learning(上)

 深度强化学习有一个很大的不足点,它在数据采样效率上面是非常低的。

在机器学习里面的采样效率说的是:如果采用某个训练集,训练集的大小和模型的最终性能是有关系的,如果想达到某个性能的话,就需要多大量的训练数据。所以说不同的机器学习模型,或者说机器学习算法它需要多大量的数据其实是一个衡量这个模型好不好的一个关键指标。

  由于强化学习本身就是以一种试错型的方式进行学习的,这个方式的学习算法就导致深度强化学习具有比较低的采样效率。因为如果智能体采样出来的新的数据不是特别能够帮助更新你的Q-Value,或者是更新你的Policy,那么这个采样对于整个Agent来说是利用率非常低的。

基于模型的强化学习

  所以在1718年开始就有一个新的方向,Model-Based RLModel-Based90年代初其实就有学者对其进行过研究。像Q-PlanningDyna-Q都是最早期的Model-Based RLModel这个概念在强化学习里面其实是比较特殊的,在平时说训练监督学习、无监督学习等算法中model就是预测数据模型本身,而在强化学习中,最终的输出是通过策略π \piπ实现的,但是我们从来不会把ploicyπ \piπ称之为model。我们是把环境称之为model。所以在强化的算法或者论文中,我们一般称之为环境的模型,如果是策略本身,它就称之为policy

  MBRL基本的套路就是我们依据经验数据训练一个model,然后基于这个model我们就可以在所学的这个model上面进行进一步的学习,比如像生成一些数据也好,还是传递一些梯度也好,去训练policy。通过这种方式我们就不必与真实的环境做交互,从而获得性能的提升。而当policyπ \piπ发生了改变的话,那么它和环境交互出来的data的分布本身也会发生改变。

  通常来说环境提供两个部分:

  1. state dynamicp ( s ′ ∣ s , a ) p(s^{\prime}|s,a)p(ss,a)
  2. Reward functionr ( s , a ) r(s,a)r(s,a)。这个奖励可以是一个数值,也可以是一个采样出来的分布。

  当给定某个具体的policyπ ( a ∣ s ) \pi(a \mid s)π(as),和真实环境进行交互。环境进行上述两个条件概率分布计算p ( s ′ , r ∣ s , a ) p\left(s^{\prime}, r \mid s, a\right)p(s,rs,a),去得到交互出来的数据{ ( s , a , r , s ′ ) } \left\{\left(s, a, r, s^{\prime}\right)\right\}{(s,a,r,s)}

  然后基于这个交互出来的数据去训练我的Q值函数。如果是基于模型的强化学习的话,那么我们需要学一个world modelp ^ ( s ′ , r ∣ s , a ) \hat{p}\left(s^{\prime}, r \mid s, a\right)p^(s,rs,a)。此时交互出来的数据是一个仿真数据simulated data。基于模拟数据,我们可以用无模型强化学习算法MFRL来进行学习:

  通过这种方式,我们就绕开了与环境进行直接交互所带来的一些问题、弊端。

无模型RL V.S. 基于模型的RL

  • Model-based RL

  1. 一旦模型被学习到了,之后就可以用On-Policy的方式进行学习,可以一直无限次进行交互,能够避免Off-Policy带来的一些问题。2. 当然最大的好处还是极大地减少与真实环境的交互,像Batch RLOffline RL中就经常会采用到MBRL中的一些方法。3. 与MFRL相比具有较高的采样效率。4. 由于模型具有误差,那么会产生模型的累计误差。

  • Model-free RL

  1. 无模型强化学习最大的好处就在于它拥有最好的效果,因为所有的数据都是真实的。2. 有时候会显现出数据的不稳定性,因为数据本身的采样并不是基于某个期望下进行的,而是随着策略π \piπ改变而改变的。3. 缺陷就在于较低的采样效率,并且需要超大的算力平台。


基于模型的强化学习:黑盒模型和白盒模型


  所谓的黑盒模型说的是,训练的模型只是用来采样数据。它里面到底是如何去计算statereward,我们并不关心。我们只将其看作一个产生无穷无尽的训练数据的黑盒。然后我们产生完数据之后都是用model-free的方法来训练policy。像Dyna-QMPC、和MBPO这样一些经典的算法都是Blackbox的。

  另外一类算法是白盒模型,白盒模型相比于黑盒模型,他的区别在于state dynamicp ϕ ( s ′ ∣ s , a )已知。假设当前policy的参数是θπ θ 。我们可以直接优化states ssvalue值,对于states ′ 求导(不是对于V ( s ′ ) 的参数求导)。为什么可以对s ′ 求导呢?因为s ′ 可以看作p ϕ ( s ′ ∣ s , a ) 的输出,这个时候用链式法则就可以进一步对a 求导,a 此时又是policyπ θ 的输出了,于是我们又可以在policy上面再通过链式法则对θ 进行求导:

image.png

 所以一旦把这个盒子打开,变成了一个白盒的话,我们就可以使用概率密度梯度两种信息来进行学习。白盒模型也可以像黑盒模型一样去sample更多的data。这些工作有MAACSVGPILCO等等这些算法。

从Dyna算法介绍基于模型的强化学习

  学model的时候通常会采用supervised learning一类的算法进行学习。另外一类是通过计算状态转移分布p ϕ ( s ′ ∣ s , a ) 来实现的。如果我们学一个模型,然后构造(construct value function)的话,可能会带来两方面的误差,第一个是模型本身带来的误差,另外一个是value function带来的误差。

  1. Q-Planning

  首先通过随机的智能体采样得到数据,然后学一个modelp ^ ( s ′ , r ∣ s , a ) 。之后要做的是:

  选择一个状态S 和一个动作A ,然后将其送入sample model中去,去获得下一个奖励reward和下一个状态S ′ 。这样通过S A 就构建了一个四元< S , A , R , S ′ > 。有了这样一个四元组之后,我们就可以去做Q-Learning

  1. Dyna

  Dyna-Q中还可以通过实际环境中获得的经验做学习。

  拿到一个状态S ,然后依据Q 函数探索得到一个动作A 。有了这个采样到的动作之后,我们将其在真实环境中执行,得到真实的奖励R RR和真实的下一个状态S 。这样也能获得一个四元组,之后就可以依据更新公式对Q 函数进行进一步的更新。之后在假定模型是确定行环境的时候,我们直接就可以依据数据训练Model了。

  之后重复n 步,从之前的观测状态S 中随机选择一个,之后从动作A 中随机选择一个,依据模型M o d e l ( S , A ) 计算得到奖励和下一个状态,再做一步Q 更新。所以在Dyna-Q中做的是1步的MFRLn 步的MFRL但是每次模型只往前推进一步

基于模型的强化学习有几个很重要的问题

  1. 基于所学的这样一个非完美模型能不能改进我们的数据效率呢?
  2. 基于深度学习所训练的环境模型肯定不是那么准确的,这个时候我们还能不能去相信我们的模型呢?如何去相信模型采样所得到的数据呢?
  3. 如何使用我们的模型,从而获得更好的策略呢?


随机打靶算法:RS,PETS,POPLIN


  在有了模型之后,能不能在近乎不学习policy的情况下能够去获得比较高的性能。因为我们有模型,这样我们就能从模型中直接进行搜索,得到最好的action

  有了model之后,通过做任何形式的action,模型都会给予反馈,告诉你当前这个决策好不好。shooting method说的就是给定当模型p ( s ′ , r ∣ s , a ) ,对于每个状态前states ,和一个候选(candidate)动作a 。可以构建一个长度为T TTaction sequence


image.png

  有了状态和所有的动作序列之后,就可以和环境进行交互,产生相应的episode

image.png

 基于上述采样样本,我们可以估计Q 值函数并得到策略π ( s )


image.png

 这个时候我们根本就没学习,有了一个模型之后,之后模拟计算,走到终局或者指定的T TT步,看看哪个候选动作a aa能够获得较大的收益,就选哪个。当智能体走到了真正的s 1 s_{1}s1之后再做一遍这个操作。这个也叫做MPC

Random Shooting(RS)

  在RS算法中,action sequence是随机采样得到的,它有一些好处,第一个好处就是这个action sequence它可以非常简单得到。它甚至不管你的state是啥,先可以把动作序列给做出来。在这个过程中是不做学习的,没有梯度的计算。它也不太需要去考虑task到底有多长这样。

  同样这种做法带来的坏处也很明显,像variance就很大,因为搜索的空间很大,而只采样了一条。一种可行的办法就是说,我们把每个action不看它state的情况下,整体来看它到底能带来更大的value还是更低的value。给它做成像一个二分类一样的东西,叫cross entropy method。就是对action做一些简单的分堆,采样的时候就期望去采样得到高reward或者高valueaction。这种方法与完全随机采样相比是能够获得更好的reward的。


PETS:Probabilistic Ensembles with Trajectory Sampling


  在2018年的NIPS上面发表了一篇RS类算法的文章PETS。它拿一系列可训练的高斯模型做了一个ensemble


image.png

  每一个高斯模型去采样下一个state的时候,他就是去follow一个mean和一个variance matrix。做一个Gaussian NN


image.png


本身的μ θ Σ θ都是用θ 参数化的神经网络。当给定当前s t , a t ,我就可以确定性地去计算到μ ,基于这个μΣ 我就可以采样接下来的这个s t + 1

  从上述论述我们可以看到每个模型都是一个Gaussian NN,我们有N NN个高斯做了一个Ensemble操作。这里其实是通过集成学习降低模型的variance,这里的variance并不是Σ \SigmaΣ,而是一些没有见过的数据导致的泛化性能的variance

  当我们有了N 个高斯的概率模型之后,我们就可以用这N 个概率模型去做trajectory sampling(TS)。这里所采样的trajectory sampling的方法其实是比较特殊的。因为我们有N 个高斯模型,所以我们可以直接采样出来一个高斯模型,走一步,得到一个新的高斯分布,在这个高斯分布里面,我们再采样一个新的state,接下来我们又要走下一步,走下一步的时候,我们又从这N NN个高斯模型里面去采样,这样就能够实现trajectory的前向传播。基于这N NN个高斯模型,我们就可以去做planning。在每一个time step上,MPC算法通过采样去计算多个最优动作序列,之后采用第一个action,然后重复上述的规划任务。这样的一种算法就称作Planning via Model Predictive Control



  这里采样获取动作的时候,采用的是CEM的方式来获取相对来说比较好的action。然后对每个动作序列去做一个评估,之后更新CEM。但是最终对于环境的执行来说,是执行最好的动作序列a t *中的第一个action。采样得到的数据重新加入到数据集中去。


相关文章
overleaf 插入图片,引用图片,图标标题Fig与文章引用Figure不一致解决
overleaf 插入图片,引用图片,图标标题Fig与文章引用Figure不一致解决
9993 0
|
机器学习/深度学习 存储 算法
I2A、MBMF、MVE、DMVE…你都掌握了吗?一文总结强化学习必备经典模型(三)
I2A、MBMF、MVE、DMVE…你都掌握了吗?一文总结强化学习必备经典模型
973 0
|
机器学习/深度学习 算法 vr&ar
南大最新综述论文:基于模型的强化学习
南大最新综述论文:基于模型的强化学习
582 0
|
9月前
|
机器学习/深度学习 存储 算法
近端策略优化(PPO)算法的理论基础与PyTorch代码详解
近端策略优化(PPO)是深度强化学习中高效的策略优化方法,广泛应用于大语言模型的RLHF训练。PPO通过引入策略更新约束机制,平衡了更新幅度,提升了训练稳定性。其核心思想是在优势演员-评论家方法的基础上,采用裁剪和非裁剪项组成的替代目标函数,限制策略比率在[1-ϵ, 1+ϵ]区间内,防止过大的策略更新。本文详细探讨了PPO的基本原理、损失函数设计及PyTorch实现流程,提供了完整的代码示例。
4055 10
近端策略优化(PPO)算法的理论基础与PyTorch代码详解
|
机器学习/深度学习 自然语言处理 PyTorch
PyTorch 中的动态图与静态图:理解它们的区别及其应用场景
【8月更文第29天】深度学习框架中的计算图是构建和训练神经网络的基础。PyTorch 支持两种类型的计算图:动态图和静态图。本文旨在阐述这两种计算图的区别、各自的优缺点以及它们在不同场景下的应用。
3275 0
|
IDE 网络安全 开发工具
IDE之pycharm:专业版本连接远程服务器代码,并配置远程python环境解释器(亲测OK)。
本文介绍了如何在PyCharm专业版中连接远程服务器并配置远程Python环境解释器,以便在服务器上运行代码。
3845 0
IDE之pycharm:专业版本连接远程服务器代码,并配置远程python环境解释器(亲测OK)。
|
机器学习/深度学习 自然语言处理 PyTorch
Transformers入门指南:从零开始理解Transformer模型
【10月更文挑战第29天】作为一名机器学习爱好者,我深知在自然语言处理(NLP)领域,Transformer模型的重要性。自从2017年Google的研究团队提出Transformer以来,它迅速成为NLP领域的主流模型,广泛应用于机器翻译、文本生成、情感分析等多个任务。本文旨在为初学者提供一个全面的Transformers入门指南,介绍Transformer模型的基本概念、结构组成及其相对于传统RNN和CNN模型的优势。
11585 1
|
机器学习/深度学习 并行计算 PyTorch
从零开始下载torch+cu(无痛版)
这篇文章提供了一个详细的无痛版教程,指导如何从零开始下载并配置支持CUDA的PyTorch GPU版本,包括查看Cuda版本、在官网检索下载包名、下载指定的torch、torchvision、torchaudio库,并在深度学习环境中安装和测试是否成功。
从零开始下载torch+cu(无痛版)
|
机器学习/深度学习 算法 物联网
大模型进阶微调篇(一):以定制化3B模型为例,各种微调方法对比-选LoRA还是PPO,所需显存内存资源为多少?
本文介绍了两种大模型微调方法——LoRA(低秩适应)和PPO(近端策略优化)。LoRA通过引入低秩矩阵微调部分权重,适合资源受限环境,具有资源节省和训练速度快的优势,适用于监督学习和简单交互场景。PPO基于策略优化,适合需要用户交互反馈的场景,能够适应复杂反馈并动态调整策略,适用于强化学习和复杂用户交互。文章还对比了两者的资源消耗和适用数据规模,帮助读者根据具体需求选择最合适的微调策略。
3695 5
|
机器学习/深度学习 人工智能 监控
一文读懂deepSpeed:深度学习训练的并行化
DeepSpeed 是由微软开发的开源深度学习优化库,旨在提高大规模模型训练的效率和可扩展性。通过创新的并行化策略、内存优化技术(如 ZeRO)及混合精度训练,DeepSpeed 显著提升了训练速度并降低了资源需求。它支持多种并行方法,包括数据并行、模型并行和流水线并行,同时与 PyTorch 等主流框架无缝集成,提供了易用的 API 和丰富的文档支持。DeepSpeed 不仅大幅减少了内存占用,还通过自动混合精度训练提高了计算效率,降低了能耗。其开源特性促进了 AI 行业的整体进步,使得更多研究者和开发者能够利用先进优化技术,推动了 AI 在各个领域的广泛应用。
下一篇
oss云网关配置