参考视频:周博磊强化学习纲要

阅读本文前需要对强化学习model-free领域有一定的了解,可以查看我之前的文章:《强化学习实践教学》,《强化学习纲要(周博磊课程)》

之前介绍的算法例如DQN,DDPG,PPO都是**model-free(无模型)**的,这也是比较多人的研究领域,这些算法是智能体直接和环境互动获得数据,不需要拟合环境模型,智能体对环境的认知只能通过和环境不断大量的交互来实现。这样做的优点是通过无数次与环境的交互可以保证智能体得到最优解。往往在游戏这样的没有采样成本的环境中都可以用model-free。

接下来我介绍强化学习的另一个领域model-based(基于模型),在这个领域中,智能体通过与环境进行交互获得数据,根据这些数据对环境进行建模拟合出一个模型,然后智能体根据模型来生成样本并利用RL算法优化自身。一旦模型拟合出来,智能体就可以根据该模型来生成样本,因此智能体和环境直接的交互次数会急剧减少,缺点是拟合的模型往往存在偏差,因此model-based的算法通常不保证能收敛到最优解。但是在现实生活中是需要一定的采样成本的,因此采样效率至关重要,因此model-free是一个提升采样效率的重要方式。

model-based的强化学习算法分为两类,一类是值函数优化(value optimization),一类是策略优化(policy optinmization)。

在model-based RL中不仅仅有原来model-free中的结构,还多了一个model,因此原本在model-free中用来训练价值函数和策略函数的experience有了第二个用处,那就是model learning,拟合出一个适当的环境模型。


环境模型的构成

环境通常由两部分构成,第一就是状态转移矩阵,也就是说在知道现在的状态和采取的动作的情况下,转移到其他各个状态的概率。第二就是奖励函数,在知道现在的状态和采取的动作的情况下,我们可以得到的奖励是多少。

例如在围棋中的规则是十分清楚的,因此状态之间的转移也是十分清楚的,因此能够打败人类的围棋AI AlphaGO也是用model-based强化学习算法得到的。还有一种是物理模型,现实中的物理模型往往有固定的计算公式,也可以轻松得到其状态转移。

通常假定状态转移和奖励函数是相互独立的关系。


环境模型的训练

那么如何训练一个环境使其符合预期呢?

这里我们只需要用监督学习的方法,收集真实环境中的数据St,At→Rt+1,St+1{S_t,A_t \rightarrow R_{t+1},S_{t+1}}St​,At​→Rt+1​,St+1​,通过收集很多组这样的数据就能把这个当成样本,输入到环境的神经网络中进行学习。

这里列举几个常用的模型:

  1. Table Lookup Model
  2. Linear Expectation Model
  3. Linear Gaussian Model
  4. Gaussian Process Model
  5. Deep Belief Network Model

我们通常要对模型的准确率进行评估,如果准确率低,那么应当采用model-free的方法。


Dyna

这是Richard Sutton在1991年提出的算法,在现阶段的强化学习算法中并不足够强,但是是我们理解model-based方法的例子。在通过真实的经验数据学习出来的环境模型中,我们刻意采集大量的虚拟数据,这样就能和填补真实数据采集不到的空白,一起去训练值函数模型和策略网络。


Model-based 的策略优化(Policy Optimization)

在model-free的policy gradient中,条件转移概率是不需要的。但是在model-based知道转移概率的情况下,就能改进我们的策略优化。

基于环境模型的策略优化受控制论的影响是非常深远的。因为控制问题也是优化一个controller,而环境通常叫做system dynamics,可以定义成知道现在状态和采取的控制措施,得到的下一个状态。这也是最优控制(optimal controls)的内容,在满足动态转移条件的情况下去优化控制方法,降低cost函数。这和强化学习有很深远的联系。
argmina1,...,aT∑t=1Tc(st,at)subjecttost=f(st−1,at−1)arg min_{a_1,...,a_T} \sum_{t=1}^T c(s_t,a_t) \ \ \ \ subject \ to \ s_t = f(s_{t-1},a_{t-1}) argmina1​,...,aT​​t=1∑T​c(st​,at​)    subject to st​=f(st−1​,at−1​)
在环境模型未知的情况下,我们可以结合模型学习和轨迹优化两种方法。

第一种算法是用监督学习训练出环境模型之后,直接采用控制算法(如LQR)来计算最优路径。

第二种算法是为了防止训练数据采样不充分,在训练出环境模型之后,自己产生新的数据加入训练当中。

第三种算法是一种非常有名的算法MPC(Model Predictive Control),是自动驾驶和控制中的常用算法。我们对整个轨迹进行优化,但是我们实际执行时只执行第一步,然后把这一步的数据加入到训练数据集中,个人理解是第一步的误差都是比较小的,数据都比较可靠。


最后第四种算法是把policy learning、model learning、optimal control结合起来。

  1. 初始化策略函数产生随机策略对真实环境的数据进行收集。

  2. 用收集的数据训练自己的环境模型。

  3. 通过环境模型产生的数据来对策略进行优化。

  4. 用优化后的策略去环境模型中产生新的轨迹,并将新的轨迹数据加入训练数据当中

  5. 返回第二条。

下面是两种模型的选择:


model-based RL在机器人的应用

首先是摄像机捕捉画面得到一个3D坐标,我们需要把3D坐标转换成机械臂各个部位旋转的角度,我们可以把奖励函数设置成和Target坐标的距离来进行训练。这里用了Gaussin Process来做环境模型。像这种低成本的机械臂有很大的误差,需要对不确定性有很好的建模。


model-based强化学习入门相关推荐

  1. 多智能体强化学习入门

    参考文章:万字长文:详解多智能体强化学习的基础和应用 .多智能体强化学习入门(一)--基础知识与博弈 推荐文章:多智能体强化学习路线图 (MARL Roadmap) 推荐综述论文:An Overvie ...

  2. 用深度强化学习玩atari游戏_(一)深度强化学习·入门从游戏开始

    1.在开始正式进入学习之前,有几个概念需要澄清,这样有利于我们对后续的学习有一个大致的框架感 监督型学习与无监督型学习 深度强化学习的范畴 监督型学习是基于已有的带有分类标签的数据集合,来拟合神经网络 ...

  3. 【强化学习入门】梯度赌博机算法中,偏好函数更新:梯度上升公式是精确梯度上升的随机近似的证明

    本文证明强化学习入门问题:K摇臂赌博机的梯度赌博机算法中,偏好函数更新公式:Ht+1(At)=Ht(At)+α(Rt−Rt‾)(1−πt(At))H_{t+1}(A_t) = H_t(A_t) + \ ...

  4. 强化学习入门这一篇就够了!!!万字长文

    强化学习 强化学习入门这一篇就够了万字长文带你明明白白学习强化学习... 强化学习入门这一篇就够了 强化学习 前言 一.概率统计知识回顾 1.1 随机变量和观测值 1.2 概率密度函数 1.3 期望 ...

  5. 【ziuno】强化学习入门—超级马里奥

    强化学习入门-超级马里奥 对象抽取:马里奥.金币.板栗仔(蘑菇怪) 术语 智能体-Agent:马里奥 状态(S或s)-State:当前游戏画面 动作(A或a)-Action:智能体(马里奥)的,左.右 ...

  6. 强化学习入门8—深入理解DDPG

    文章目录 Deep Deterministic Policy Gradient 简介 网络结构 算法流程 小结 本文是强化学习入门系列的第八篇,前面我们讲Actor-Critic时提到了DDPG.DD ...

  7. 强化学习入门简单实例 DQN

    [强化学习入门 第一讲 MDP](https://zhuanlan.zhihu.com/p/25498081) [随笔分类 - 0084. 强化学习](https://www.cnblogs.com/ ...

  8. 强化学习入门知识与经典项目分析1.3

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  9. 【David Silver强化学习公开课之一】强化学习入门

    本文是David Silver强化学习公开课第一课的总结笔记.第一课主要解释了强化学习在多领域的体现,主要解决什么问题,与监督学习算法的区别,完整的算法流程由哪几部分组成,其中的agent又包含什么内 ...

  10. Silver-Slides Chapter 1 - 强化学习入门:基本概念介绍

    一些知识点 机器学习 = 监督学习 + 无监督学习 + 强化学习 RL的不同之处: There is no supervisor, only a reward signal Feedback is d ...

最新文章

  1. Android Studio 如何导入第三方jar包(整理)
  2. 小程序: 在同一个文件夹中配置多个页面
  3. 3.过滤——高斯滤波器之Matlab、Octave实战、保持两个高斯直行_5
  4. springboot细节挖掘(配置Swagger2)
  5. 零基础web前端和python哪个好学一些?
  6. 培养逻辑思维的app_久趣数学思维V1.4.1-久趣数学思维APP下载
  7. sql server使用的注意点及优化点 自备
  8. wincc7.5下载安装教程(Win10系统)
  9. 以太网和wifi协议
  10. MATLAB聚类分析学习笔记
  11. jSignature网页手写签名
  12. NetCore利用CsvHelper解析支付宝对账单
  13. ipa文件如何下载安装OR如何设置IPA文件下载链接
  14. YP.2.7 Other Representations(双语)
  15. 美团2020后台校招题目--美团骑手包裹区间分组
  16. picker多选 vant_浅谈vant组件Picker 选择器选单选问题
  17. 在AVD上运行程序时,程序闪退并报错unfortunately,xx has stopped
  18. 毕业论文知识点记录(四)——MaxEnt模型
  19. iOS GPUImage研究序一:内置滤镜
  20. 基于3D Sensor的触控与悬控高性能方案

热门文章

  1. 发送邮件被对方服务器退回_如何更好地给老外发邮件,可以了解下
  2. 广告策略评估指标(算法实习day2)
  3. 沉默的潜意识音频Creator软件
  4. 计算机会计课程设计范文,会计课程设计心得体会范文
  5. 带你快速看完9.8分神作《Effective Java》—— 并发篇(工作里的这些坑你都遇到过吗?)
  6. 新浪云python示例_新浪云的基本配置
  7. 用ajax请求本地的json失效,通过jquery的ajax请求本地的json文件方法
  8. phpnow mysql升级,phpnow升级apache版本
  9. RNA 23. SCI文章中表达基因Cox模型的风险因子关联图(ggrisk)
  10. 快速入门Flink (7) —— 小白都喜欢看的Flink流处理之DataSources和DataSinks(转载)