1 model-free & model-based

  • model-based(有模型) RL agent,它通过学习环境的状态转移来采取动作。
  • model-free(免模型) RL agent,它没有去直接估计环境状态的转移,也没有得到环境的具体转移变量。它通过学习价值函数和策略函数进行决策。Model-free 的模型里面没有一个环境转移的模型。

1.1 有模型强化学习

我们可以用马尔可夫决策过程来定义强化学习任务,并表示为四元组 <S,A,P,R>,即状态集合、动作集合、状态转移函数和奖励函数。

如果这四元组中所有元素均已知,且状态集合和动作集合在有限步数内是有限集,则机器可以对真实环境进行建模,通过学习状态转移函数来构建一个虚拟环境,以模拟真实环境的状态和交互反应。

具体来说,当智能体知道状态转移函数 和奖励函数后,它就能知道在某一状态下执行某一动作后能带来的奖励和环境的下一状态,这样智能体就不需要在真实环境中采取动作,直接在虚拟环境中学习和规划策略即可。这种学习方法称为有模型学习

1.2 无模型强化学习

然而在实际应用中,智能体并不是那么容易就能知晓马尔可夫决策过程中的所有元素的。

        通常情况下,状态转移函数和奖励函数很难估计,甚至连环境中的状态都可能是未知的,这时就需要采用免模型学习。

        免模型学习没有对真实环境进行建模,智能体只能在真实环境中通过一定的策略来执行动作,等待奖励和状态迁移,然后根据这些反馈信息来更新行为策略,这样反复迭代直到学习到最优策略。【让 agent 跟环境进行交互,采集到很多的轨迹数据】

1.3 有模型强化学习和无模型强化学习的区别

总的来说,有模型强化学习相比于无模型强化学习仅仅多出一个步骤,即对真实环境进行建模。(计算 状态转换概率等environment的状态)

因此,一些有模型的强化学习方法,也可以在免模型的强化学习方法中使用。

在实际应用中,如果不清楚该用有模型强化学习还是无模型强化学习,可以先思考一下,在智能体执行动作前,是否能对下一步的状态和奖励进行预测,如果可以,就能够对环境进行建模,从而采用有模型学习。

无模型强化学习通常属于数据驱动型方法,需要大量的采样来估计状态、动作及奖励函数,从而优化动作策略。例如,在 Atari 平台上的 Space Invader 游戏中,无模型的深度强化学习需要大约 2 亿帧游戏画面才能学到比较理想的效果。

相比之下,有模型强化学习可以在一定程度上缓解训练数据匮乏的问题,因为智能体可以在虚拟环境中进行训练。(虚拟环境中知道状态转移函数)

无模型学习的泛化性要优于有模型学习,原因是有模型学习算需要对真实环境进行建模,并且虚拟世界与真实环境之间可能还有差异,这限制了有模型学习算法的泛化性。

有模型的强化学习方法可以对环境建模,使得该类方法具有独特魅力,即“想象能力”。

在无模型学习中,智能体只能根据数据一步一步地采取策略,等待真实环境的反馈;而有模型学习可以在虚拟世界中预测出所有将要发生的事,并采取对自己最有利的策略。(因为有模型学习知道状态转移函数,就知道之后的状态)

2 基于概率(策略)和基于价值

基于概率(策略)是强化学习中最直接的一种, 他能通过分析所处的环境, 直接输出下一步要采取的各种动作的概率, 然后根据概率采取行动, 所以每种动作都有可能被选中, 只是可能性不同.

  • 这一类 agent 直接去学习 policy,就是说你直接给它一个状态,它就会输出这个动作的概率。
  • 在基于策略的 agent 里面并没有去学习它的价值函数。

基于策略迭代的强化学习方法中,智能体会制定一套动作策略(确定在给定状态下需要采取何种动作),并根据这个策略进行操作。

强化学习算法直接对策略进行优化,使制定的策略能够获得最大的奖励。

基于价值的方法【agent(value-based agent)】输出则是所有动作的价值, 我们会根据最高价值来选择动作。

  • 这一类 agent 显式地学习的是价值函数,
  • 隐式地学习了它的策略。策略是从我们学到的价值函数里面推算出来的

基于价值迭代的强化学习方法中,智能体不需要制定显式的策略,它维护一个价值表格或价值函数,并通过这个价值表格或价值函数来选取价值最大的动作。

基于价值迭代的方法只能应用在不连续的、离散的环境下(如围棋或某些游戏领域),对于行为集合规模庞大、动作连续的场景(如机器人控制领域),其很难学习到较好的结果(此时基于策略迭代的方法能够根据设定的策略来选择连续的动作)。

相比基于概率的方法, 基于价值的决策部分更为铁定, 毫不留情, 就选价值最高的, 而基于概率的, 即使某个动作的概率最高, 但是还是不一定会选到他.

我们现在说的动作都是一个一个不连续的动作,。而对于选取连续的动作, 基于价值的方法是无能为力的。我们可以能用一个概率分布在连续动作中选取特定动作, 这也是基于概率的方法的优点之一.

把 value-based 和 policy-based 结合起来就有了 Actor-Critic agent。这一类 agent 把它的策略函数和价值函数都学习了,然后通过两者的交互得到一个最佳的行为。(智能体会根据策略做出动作,而价值函数会对做出的动作给出价值,这样可以在原有的策略梯度算法的基础上加速学习过程,取得更好的效果。)

3 回合更新 和 单步更新

强化学习还能用另外一种方式分类, 回合更新和单步更新。

想象强化学习就是在玩游戏, 游戏回合有开始和结束.。回合更新指的是游戏开始后, 我们要等待游戏这一回合结束, 然后再总结这一回合中的所有转折点, 再更新我们的行为准则。

而单步更新则是在游戏进行中每一步都在更新, 不用等待游戏的结束, 这样我们就能边玩边学习了。

4 在线学习 和 离线学习

在线学习, 就是指我必须本人在场, 并且一定是本人边玩边学习。

离线学习是你可以选择自己玩, 也可以选择看着别人玩, 通过看别人玩来学习别人的行为准则。

离线学习同样是从过往的经验中学习, 但是这些过往的经历没必要是自己的经历, 任何人的经历都能被学习。(比如参数不同的network,类似于DQN的fixed network和回归训练的network)

比如

强化学习笔记:PPO 【近端策略优化(Proximal Policy Optimization)】_UQI-LIUWJ的博客-CSDN博客

中,policy gradient就是on-policy,我从θ中采样τ,然后 梯度上升更新θ;PPO博客中3.4是off-policy,我在θ‘中采样,然后 梯度上升更新θ。

参考资料:强化学习方法汇总 - 强化学习 (Reinforcement Learning) | 莫烦Python (mofanpy.com)

强化学习笔记4:强化学习分类相关推荐

  1. 学习笔记:强化学习与最优控制(Chapter 2)

    Approximation in Value Space 学习笔记:强化学习与最优控制(Chapter 2) Approximation in Value Space 1. 综述 2. 基于Value ...

  2. 深度强化学习笔记(二)——Q-learning学习与二维寻路demo实现

    深度强化学习笔记(二)--Q-learning学习与二维寻路demo实现 文章目录 深度强化学习笔记(二)--Q-learning学习与二维寻路demo实现 前言 理论 什么是Q-Learning 算 ...

  3. 深度学习入门之PyTorch学习笔记:深度学习介绍

    深度学习入门之PyTorch学习笔记:深度学习介绍 绪论 1 深度学习介绍 1.1 人工智能 1.2 数据挖掘.机器学习.深度学习 1.2.1 数据挖掘 1.2.2 机器学习 1.2.3 深度学习 第 ...

  4. ScalersTalk 机器学习小组第 21 周学习笔记(深度学习-10)

    ScalersTalk 机器学习小组第 21 周学习笔记(深度学习-10) Scalers点评:机器学习小组是成长会的内部小组,这是成长会机器学习小组第21周学习笔记,也是深度学习第10次的复盘笔记 ...

  5. 学习笔记:深度学习(3)——卷积神经网络(CNN)理论篇

    学习时间:2022.04.10~2022.04.12 文章目录 3. 卷积神经网络CNN 3.1 卷积神经网络的概念 3.1.1 什么是CNN? 3.1.2 为什么要用CNN? 3.1.3 人类的视觉 ...

  6. MATLAB学习笔记0:学习须知

    阅读前请注意: 1. 该学习笔记是华中师范大学HelloWorld程序设计协会2021年寒假MATLAB培训的学习记录,是基于培训课堂内容的总结归纳.拓展阅读.博客内容由 @K2SO4钾 撰写.编辑, ...

  7. 学习笔记:深度学习(6)——基于深度学习的语言模型

    学习时间:2022.04.22~2022.04.25 文章目录 5. 基于深度学习的语言模型 5.1 从NNLM到词嵌入 5.1.1 神经网络语言模型 NNLM 5.1.2 基于循环神经网络的语言模型 ...

  8. 学习笔记:CentOS7学习之二十二: 结构化命令case和for、while循环

    目录 学习笔记:CentOS7学习之二十二: 结构化命令case和for.while循环 22.1 流程控制语句:case 22.2 循环语句 22.1.2 for-do-done 22.3 whil ...

  9. 学习笔记:CentOS7学习之十六:LVM管理和ssm存储管理器使用

    目录 学习笔记:CentOS7学习之十六:LVM管理和ssm存储管理器使用 16.1 LVM的工作原理 16.1.1 LVM常用术语 16.1.2 LVM优点 16.2 创建LVM的基本步骤 16.2 ...

  10. 【长篇博文】Docker学习笔记与深度学习环境的搭建和部署(二)

    长篇博文记录学习流程不容易,请关注.转发.点赞.评论,谢谢! 上一篇文章:Docker学习笔记与深度学习环境的搭建和部署(一) 文章末尾附加nvidia455.23.cuda11.1.cudnn8.0 ...

最新文章

  1. python 字典排序 最大键_Python中的列表、元祖、字典、集合操作大全
  2. [linux]Linux挂载光盘,解压光盘内的tar安装包,并安装软件(Install VMware Tools in a Linux Guest)...
  3. (转载)BeanUtils.copyProperties() 用法
  4. python简单代码画皮卡丘-实现童年宝可梦,教你用Python画一只属于自己的皮卡丘...
  5. Maven:Maven 入门
  6. 【控制】《鲁棒控制-线性矩阵不等式处理方法》-俞立老师-第5章-不确定系统的分析与综合
  7. python实现数字形式转换
  8. Python爬虫-代理池-爬取代理入库并测试代理可用性
  9. Cache超清晰逻辑详解(cache的三种映射)
  10. 机器人总动员最后的bgm_引导你欣赏《机器人瓦力》的电影配乐
  11. 当前记录集不支持更新_不断中招的你还放心升级win10吗?wi10近期更新问题及解决办法...
  12. vfp报表纸张设置_VFP 9.0中实现多种自定义纸张格式的报表打印
  13. html分页 css,js+css实现的简单易用兼容好的分页
  14. Netflix:如何打造开放协作的实时 ETL 平台?
  15. Java贪吃蛇全代码
  16. android修改HOLO对话框风格
  17. 【SuperResolution】Spatial resolution的含义
  18. 提供一个在Selenium截网页长图的实现
  19. 宇宙无敌第一IED Visual studio 常用快捷键使用
  20. Android Muti-Window

热门文章

  1. nginx的反向代理以及负载均衡模块的使用
  2. Android studio 中引用jar的其实是Maven?(一)
  3. flash 遮罩层全解
  4. Demo学习: CalendarPanel
  5. Linux下串口编程入门
  6. Distimo发布新SDK 帮助开发者跟踪应用下载转换率
  7. sql Escape用法
  8. 当一个有性能问题的数据库摆在你的面前,作为责任人,你的处理思路是什么?...
  9. 开始——“运行”命令集
  10. 【RHCA翻译计划】EX436第一章:集群存储概论2