前言: 本次笔记对《强化学习(第二版)》第八章进行概括性描述。同时,也对本书的第一部分(共三部分)表格型求解方法进行了系统性阐述。

以下概括都是基于我个人的理解,可能有误,欢迎交流:piperliu@qq.com。


一、表格型求解方法梳理知识

第二到七章知识总结

第八章学习完成后,标志着书中第I部分 表格型求解方法 的完结,目前已学习到的知识包括:

  • 多臂赌博机问题: 在一个稳定的单状态环境中,如何评估各动作价值,并进行控制(选择下一动作,试探 exploration 还是开发 exploitation,开发的依据是什么);
  • 有限马尔科夫决策过程: 如何对环境、动作、收益建模(如何把待解决问题抽象成数学上的表达)?什么是幕 episode ?强化学习的基本元素有?
  • 动态规划: 在环境已知的条件下(什么是环境已知:状态转移概率已知,且环境稳定不随机变动;或者说状态转移可以用概率描述),如何评估基于某策略的状态的价值 vπ(s)v_\pi(s)vπ​(s) ?如何评估基于某策略的,在某状态下选择该动作的价值 qπ(s,a)q_\pi(s,a)qπ​(s,a) ?并且,如何通过迭代,逼近该环境下的最优策略(得到最优策略,叫做控制)?
  • 蒙特卡洛方法: 在环境不可知的条件下,可以通过与环境的交换获取信息。那么,这种条件下如何进行 vπ(s)v_\pi(s)vπ​(s) 、 qπ(s,a)q_\pi(s,a)qπ​(s,a) 的评估?蒙特卡洛方法基于很多幕的数据进行“学习”。环境对于动作的选择是基于我们要评估的策略 π\piπ 的,称之为同轨策略 on-policy ,否则称之为 离轨策略 off-policy 。要实现离轨策略下的控制,就必须对交互得到的信息进行处理,一般地,我们使用采样率 sampling ratio 进行处理。
  • 时序差分学习: 蒙特卡洛方法要求到幕结束时,才可使用幕的过程中的信息。有没有可以不用等到幕结束,立即更新对价值的评估的方法呢?时序差分学习给出了答案。这涉及到了一个问题:为了更新当前状态/动作的价值,那就要用到下一步状态的价值,如何评估下一步状态的价值? Sarsa 、 Q-Learning 、 期望 Sarsa 给出了参考。同样,在控制中,讨论了同轨策略与离轨策略。并且,在可能产生最大化偏差的背景介绍下,介绍了双学习这个解决办法,双学习的期望是无偏的。
  • n 步自举法: 蒙特卡洛方法等到幕结束,时序差分学习立即更新,但事实证明,基于两种之间的学习方法好于两者,即并非“无限步直到幕结束”或“1步”,使用n步最好。这涉及到多个结点,每个结点采用何种规则回溯,来评估当前价值状态呢?有采样率、树回溯、采样率+期望、交叉进行期望与采样率等等方法。

可以注意到,后三章蒙特卡洛方法、时序差分学习、n 步自举法并不基于规划,即,无需对环境建模,只需要利用环境的 output 与 input 就可以进行学习。

但第八章又回到了规划上。

第八章:与二到七章的关系

尽管要用到模型(与规划),但是第八章中的条件并不需要像第四章动态规划中那样苛刻:

  • 不知道环境的完备模型也行,我可以自己仿真一个环境,对“仿真系统”进行输入输出,来学习各个状态/动作的价值;
  • 现在有了(仿真好的)环境,也未必要使用传统动态规划的更新方法(期望更新),对每个子节点加权求和(即求父结点期望),因为环境可能很复杂,而很多状态是无用的(任何一种“聪明的”策略都不会到达那种状态),也就没必要遍历,或者评估价值 (在规划的前提下,依旧使用采样更新,来减少计算量)
  • 因此,本章提出了许多有趣而有用的方法:基于更新效果(走这一步,是否会令原价值变化很小,若很小,则没必要考虑这个更新)决定更新优先级的优先遍历基于轨迹进行采样实时动态规划(只更新经历过的状态,on-policy,采样更新的动态规划)启发式搜索/决策时规划(聚焦当前状态/决策,计算各种后续可能动作的价值,但不存储他们,只进行启发式搜索)预演算法蒙特卡洛树搜索

可以看出,第八章就是:

  • 使用了动态规划的“规划”思想;
  • 或者说 Dyna-Q 将规划与时序差分结合了起来;
  • 但在规划中未必要使用“期望更新”,很多状态可以忽略;
  • 在更新时可以利用“规划”,预演出后续状态,只为了对当前状态/决策进行评估(预演出的状态产生的价值无需储存)。

二、第八章基于表格型方法的规划和学习各节概括

参考了下述项目的笔记部分:
https://github.com/brynhayder/reinforcement_learning_an_introduction

8.1 模型和规划 Models and Planning

对环境建模,即帮助智能体去预测环境对于动作的反馈是什么,模型分为两类:

  • 分布模型 distribution model ,返回反馈的概率分布;
  • 样本模型 sample ,返回一个具体的反馈。

模型时用于仿真环境的。

8.2 Dyna:集成在一起的规划、动作和学习 Dyna: Integrated Planning, Acting and Learning

如上图, Dyna-Q 算法结合了 Q-Learning 与 规划:

  • 正常的Q更新结束之后,对模型进行更新;
  • 依据现有模型,进行n次循环,对已出现过的 Q(S,A)Q(S, A)Q(S,A) 进行更新。

8.3 当模型错误的时候 When the Model is Wrong

当采样不足或者陷入局部次优解时,就会让模型产生偏差。 Dyna-Q+ 用一个指标鼓励模型采取未采取过的动作,来解决这个问题。

8.4 优先遍历 Prioritized Sweeping

许多状态是与最优策略无关的,换言之,逼近最优策略,用不着对无关状态采样。

好比,小明从沈阳出发去成都,被要求找一条最近的路,他可以来来回回好几趟。他可能经过北京,可能经过西安,但一定没有必要先去东京,再去成都。这里,“抵达东京”这个状态与我们“从沈阳到达成都的最短路径”这个最优策略目标无关。

优先遍历的方法被提出,来过滤那些没有用的采样。比如,在一个非随机的环境中,使用 Q-Learning ,如果:

∣R+γmax⁡aQ(S′,a)−Q(S,A)∣<θ|R+\gamma \max_a Q(S',a) - Q(S, A)| < \theta∣R+γamax​Q(S′,a)−Q(S,A)∣<θ

那么,才把这个 P 对应的状态放在 PQueue 中,进行更新。

8.5 期望更新与采样更新的对比 Expected vs. Sample Updates

当模型时分布模型时,或者有很多很多状态分支时,进行期望更新计算量太大( ∑is_numberpiqi\sum_i^{s\_number} p_i q_i∑is_number​pi​qi​ )中s_number过大。因此,采用采样更新代替期望更新。

事实证明,在计算量很大/迭代次数很多时,采样更新的效果不逊于期望更新。

这是一张较为精辟的图,来自书中。这是一个三维图:

  • 维度一:当前策略还是最优策略,按照我的理解,因为同轨策略 on-policy 中,策略可以随着迭代而更新,采样也可以随之更新,因此当前策略多用于同轨策略,而最优策略下的估计多用于离轨策略;
  • 维度二:状态价值还是状态-动作价值期望,前者多用于价值评估,或者多用于控制;
  • 维度三:期望更新还是采样更新

8.6 轨迹采样 Trajectory Sampling

对平均分布进行采样,可能会带来偏差。因为,很多“样本”其实是根本不会出现的。在规划中对同轨策略采样可以带来“初期快速收敛”的效果。

8.7 实时动态规划 Real-time Dynamic Programming

实时动态规划是一种特殊的价值迭代:不同于传统动态规划,实时动态规划不采用期望更新,使用采样更新,对同轨策略下的轨迹进行采样。

8.8 决策时规划 Planning at Decision Time

何为在决策时规划?

在之前提到的算法中,我们都是基于已有的经验进行规划(background planning);决策时规划即,考虑与环境的交换,即模拟作出动作后可以进行的采样(有可能考虑很多步)。

8.9 启发式搜索 Heuristic Search

在我看来,是对将要选择的动作进行“推演”,建立一个“决策树”,并且依照某种顺序(深度优先)对分支进行“不集中”的回溯。这往往比“集中回溯更新”产生的决策效果好。

8.10 预演算法 Rollout Algorithm

预演算法是基于蒙特卡洛控制的、通过仿真迹进行采样的决策时规划。

预演算法即:

  • 从某个状态出发;
  • 基于一个策略(预演策略),进行仿真,评估价值;
  • 选择仿真中价值最高的动作,以此类推。

预演算法用于改进预演策略的性能,而非找到最优策略。

8.11 蒙特卡洛树搜索 Monte Carlo Tree Search

蒙特卡洛树搜索是决策时规划、预演算法的集大成者。预演算法是其价值评估的框架,在仿真时,应用蒙特卡洛仿真来引导搜索。AlphaGo使用了这种技术。

MCTS可以概括为四步:

  • 选择 Selection ,基于树策略(树策略考虑了树边缘的动作价值)价值选择一个叶子结点;
  • 扩展 Expansion ,对选定的结点进行非试探动作,为其增加子结点;
  • 仿真 Simulation ,从叶子结点或新增叶子结点开始,基于预演策略进行整个一个幕的仿真。在树中的部分,基于蒙特卡洛树的策略进行策略选择,在树外的部分,则基于预演策略;
  • 回溯 Backup ,在本次更新中,对轨迹的回报值上传,树外的状态和动作都不会被保存下来。

如上图,按照我的理解,MCTS的这四个步骤,即:

  • 逐渐扩张树的过程: 树本身代表了一种策略,但是在第一次更新前,树是不存在的,每一次更新(一次更新中进行上述四个步骤),树都将生长一点(生长一个叶子,还是几个叶子,it depends);
  • 逐渐更新树的过程: 在仿真的步骤中,如果状态是树内的,则基于树策略进行仿真,一旦跑出树外,则基于预演策略进行仿真;由此回溯,树会越来越健壮
  • 对树外策略进行仿真,并且基于蒙特卡洛控制(要仿真到幕结束),应该是为了让回报更准确,与环境交互更加充分;
  • 就好比,高级的围棋手会在脑中推演好几步:如果我们这下了,对方会怎么下,我再怎么下…
  • 应该注意,这张图片对于初学者(如今天上午的我)有一定误导性:每次学习时,我们遇到的状态未必是树的边缘结点或者根结点;在很多次学习之后(机器下了很多盘棋之后),再开局,树已经很全面,很健壮了。

强化学习初步/表格型求解方法总结

Sutton的书所提到的所有强化学习方法都包含三个重要思想:

  1. 需要估计价值函数;
  2. 需要沿着真实或者模拟的状态轨迹进行回溯操作来更新价值估计;
  3. 遵循广义策略迭代(GPI)的通用流程,即会维护一个近似的价值函数和一个近似的策略,持续地基于一方的结果来改善另一方。

期待后续的学习。

Piper Liu

2020-1-31 23:38:22

【强化学习】表格型求解方法总结:基于表格型方法(Tabular Methods)的规划(Planning)和学习(Learning)相关推荐

  1. 【学习笔记】求解简单递归式的一般方法

    [学习笔记]求解简单递归式的一般方法 手动博客搬家: 本文发表于20180618 15:53:06, 原地址https://blog.csdn.net/suncongbo/article/detail ...

  2. (80)ADC采集方法(基于LVDS采集方法)

    1.1 ADC采集方法(基于LVDS采集方法) 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)ADC采集方法(基于LVDS采集方法): 5)结束语. 1.1.2 本节引 ...

  3. 聚类,k-mean方法,基于密度的方法:DBSCAN,孤立点检测——数据分析与R语言 Lecture 10

    聚类,k-mean方法,基于密度的方法:DBSCAN,孤立点检测--数据分析与R语言 Lecture 10 聚类 dist( )函数 各种类与类之间距离计算的方法 动态聚类:K-means方法 kme ...

  4. 强化学习系列(八):Planning and learning with Tabular Methods(规划和离散学习方法)

    一.前言 本章是对前面七章的一个总结归纳,前七章中我们首先介绍马尔科夫决策过程(MDP),而后介绍了求解环境模型已知的MDP的方法(model-based)--动态规划方法(DP),启发式搜索也属于这 ...

  5. 基于matlab编程方法实现模糊推理及解模糊的方法研究,基于Matlab编程方法实现模糊推理及解模糊的方法研究.doc...

    基于Matlab编程方法实现模糊推理及解模糊的方法研究 基于M a tlab 编程方法实现模糊推理及解模糊的方法研究 王海江, 陈 瑾, 徐卫忠 (中船重工集团 第七一一研究所 上海 200090) ...

  6. 【PyTorch深度学习项目实战100例】—— 基于逻辑回归方法完成垃圾邮件过滤任务 | 第22例

    前言 大家好,我是阿光. 本专栏整理了<PyTorch深度学习项目实战100例>,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集. 正在更新 ...

  7. 强化学习相关论文阅读笔记之稀疏奖励解决方法

    注:该系列文章为强化学习相关论文的阅读笔记,欢迎指正! 论文题目:<深度强化学习中稀疏奖励问题研究综述> 文章目录 1. 论文介绍 2. 论文结构 3. 研究背景 3.1 解决稀疏奖励的必 ...

  8. 基于表单的网站身份验证的权威指南[关闭]

    基于表单的网站身份验证 我们认为Stack Overflow不仅应该是非常具体的技术问题的资源,而且还应该是关于如何解决常见问题变化的一般指导原则. "基于表单的网站身份验证"应该 ...

  9. 知识问答(KBQA)两种主流方法:基于语义解析和基于信息检索的方法介绍

    什么是知识问答 基于知识的问答是以知识库为认知源,在知识库的基础上回答自然语言问题. 知识库(KB)是一个结构化数据库,其中包含形式<主题,关系,对象>的事实集合,每个事实都可以随附所谓的 ...

  10. 5分钟NLP-知识问答(KBQA)两种主流方法:基于语义解析和基于信息检索的方法介绍...

    来源:DeepHub IMBA 本文约1200字,建议阅读5分钟本文介绍了知识问答的两种主流方法. 什么是知识问答 基于知识的问答是以知识库为认知源,在知识库的基础上回答自然语言问题. 知识库(KB) ...

最新文章

  1. 360董事长周鸿祎发表全员信:疫情当前,要做好长期在家办公的准备
  2. LeetCode - Minimum Window Substring
  3. 机器学习笔记:时间序列分解(滑动平均)
  4. LeetCode-二叉树-94. 二叉树的中序遍历
  5. as上的git到码云操作_如何使用git从码云克隆项目到本地?
  6. Oracle 11G 安装详解
  7. 如何优化 .NET Core 中的 lambda 查询表达式 ?
  8. LeetCode:二叉树的非递归中序遍历
  9. 【华为云技术分享】Linux内核编程环境 (1)
  10. 内推熟人来自己公司一定要慎重
  11. L1正则化与嵌入式特征选择(稀疏性)
  12. IP地址 0.0.0.0 是什么意思?
  13. 产业研发用地_金阊新城控制规划调整 新增学校 住宅及产业研发用地
  14. 国产高分系列卫星平台介绍
  15. EasyUI上传图片,前台预览,后台读取
  16. 教你在WORD中如何制作三线表
  17. UDA:Unsupervised Data Augmentation for Consistency Training
  18. SSH、telnet、远程桌面区别
  19. MySQL数据库——视图
  20. jquery中serializeArray()与serialize()

热门文章

  1. pache tomcat慢速HTTP拒绝服务攻击安全问题解决办法
  2. Ubuntu16.04版安装VMwareTools的步骤和没法挂载目录问题的解决
  3. Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException 异常
  4. spring 笔记2:Spring MVC : Did not find handler method for 问题的解决
  5. Linux(Ubuntu) 下自然码加辅助码双拼输入的解决方案
  6. 我如何分割字符串,在特定字符处断开?
  7. x-jquery-tmpl代码示例,分页
  8. aspen和python一起使用_python-将$cond语句与$project一起使用并在PyMongo中聚合
  9. Linux:sudo命令实例讲解
  10. Linux中kobject的作用,Linux设备驱动模型-- 数据结构Kset/KObject