【强化学习】表格型求解方法总结:基于表格型方法(Tabular Methods)的规划(Planning)和学习(Learning)
前言: 本次笔记对《强化学习(第二版)》第八章进行概括性描述。同时,也对本书的第一部分(共三部分)表格型求解方法进行了系统性阐述。
以下概括都是基于我个人的理解,可能有误,欢迎交流: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+γmaxaQ(S′,a)−Q(S,A)∣<θ|R+\gamma \max_a Q(S',a) - Q(S, A)| < \theta∣R+γamaxQ(S′,a)−Q(S,A)∣<θ
那么,才把这个 P 对应的状态放在 PQueue 中,进行更新。
8.5 期望更新与采样更新的对比 Expected vs. Sample Updates
当模型时分布模型时,或者有很多很多状态分支时,进行期望更新计算量太大( ∑is_numberpiqi\sum_i^{s\_number} p_i q_i∑is_numberpiqi )中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的书所提到的所有强化学习方法都包含三个重要思想:
- 需要估计价值函数;
- 需要沿着真实或者模拟的状态轨迹进行回溯操作来更新价值估计;
- 遵循广义策略迭代(GPI)的通用流程,即会维护一个近似的价值函数和一个近似的策略,持续地基于一方的结果来改善另一方。
期待后续的学习。
Piper Liu
2020-1-31 23:38:22
【强化学习】表格型求解方法总结:基于表格型方法(Tabular Methods)的规划(Planning)和学习(Learning)相关推荐
- 【学习笔记】求解简单递归式的一般方法
[学习笔记]求解简单递归式的一般方法 手动博客搬家: 本文发表于20180618 15:53:06, 原地址https://blog.csdn.net/suncongbo/article/detail ...
- (80)ADC采集方法(基于LVDS采集方法)
1.1 ADC采集方法(基于LVDS采集方法) 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)ADC采集方法(基于LVDS采集方法): 5)结束语. 1.1.2 本节引 ...
- 聚类,k-mean方法,基于密度的方法:DBSCAN,孤立点检测——数据分析与R语言 Lecture 10
聚类,k-mean方法,基于密度的方法:DBSCAN,孤立点检测--数据分析与R语言 Lecture 10 聚类 dist( )函数 各种类与类之间距离计算的方法 动态聚类:K-means方法 kme ...
- 强化学习系列(八):Planning and learning with Tabular Methods(规划和离散学习方法)
一.前言 本章是对前面七章的一个总结归纳,前七章中我们首先介绍马尔科夫决策过程(MDP),而后介绍了求解环境模型已知的MDP的方法(model-based)--动态规划方法(DP),启发式搜索也属于这 ...
- 基于matlab编程方法实现模糊推理及解模糊的方法研究,基于Matlab编程方法实现模糊推理及解模糊的方法研究.doc...
基于Matlab编程方法实现模糊推理及解模糊的方法研究 基于M a tlab 编程方法实现模糊推理及解模糊的方法研究 王海江, 陈 瑾, 徐卫忠 (中船重工集团 第七一一研究所 上海 200090) ...
- 【PyTorch深度学习项目实战100例】—— 基于逻辑回归方法完成垃圾邮件过滤任务 | 第22例
前言 大家好,我是阿光. 本专栏整理了<PyTorch深度学习项目实战100例>,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集. 正在更新 ...
- 强化学习相关论文阅读笔记之稀疏奖励解决方法
注:该系列文章为强化学习相关论文的阅读笔记,欢迎指正! 论文题目:<深度强化学习中稀疏奖励问题研究综述> 文章目录 1. 论文介绍 2. 论文结构 3. 研究背景 3.1 解决稀疏奖励的必 ...
- 基于表单的网站身份验证的权威指南[关闭]
基于表单的网站身份验证 我们认为Stack Overflow不仅应该是非常具体的技术问题的资源,而且还应该是关于如何解决常见问题变化的一般指导原则. "基于表单的网站身份验证"应该 ...
- 知识问答(KBQA)两种主流方法:基于语义解析和基于信息检索的方法介绍
什么是知识问答 基于知识的问答是以知识库为认知源,在知识库的基础上回答自然语言问题. 知识库(KB)是一个结构化数据库,其中包含形式<主题,关系,对象>的事实集合,每个事实都可以随附所谓的 ...
- 5分钟NLP-知识问答(KBQA)两种主流方法:基于语义解析和基于信息检索的方法介绍...
来源:DeepHub IMBA 本文约1200字,建议阅读5分钟本文介绍了知识问答的两种主流方法. 什么是知识问答 基于知识的问答是以知识库为认知源,在知识库的基础上回答自然语言问题. 知识库(KB) ...
最新文章
- 360董事长周鸿祎发表全员信:疫情当前,要做好长期在家办公的准备
- LeetCode - Minimum Window Substring
- 机器学习笔记:时间序列分解(滑动平均)
- LeetCode-二叉树-94. 二叉树的中序遍历
- as上的git到码云操作_如何使用git从码云克隆项目到本地?
- Oracle 11G 安装详解
- 如何优化 .NET Core 中的 lambda 查询表达式 ?
- LeetCode:二叉树的非递归中序遍历
- 【华为云技术分享】Linux内核编程环境 (1)
- 内推熟人来自己公司一定要慎重
- L1正则化与嵌入式特征选择(稀疏性)
- IP地址 0.0.0.0 是什么意思?
- 产业研发用地_金阊新城控制规划调整 新增学校 住宅及产业研发用地
- 国产高分系列卫星平台介绍
- EasyUI上传图片,前台预览,后台读取
- 教你在WORD中如何制作三线表
- UDA:Unsupervised Data Augmentation for Consistency Training
- SSH、telnet、远程桌面区别
- MySQL数据库——视图
- jquery中serializeArray()与serialize()
热门文章
- pache tomcat慢速HTTP拒绝服务攻击安全问题解决办法
- Ubuntu16.04版安装VMwareTools的步骤和没法挂载目录问题的解决
- Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException 异常
- spring 笔记2:Spring MVC : Did not find handler method for 问题的解决
- Linux(Ubuntu) 下自然码加辅助码双拼输入的解决方案
- 我如何分割字符串,在特定字符处断开?
- x-jquery-tmpl代码示例,分页
- aspen和python一起使用_python-将$cond语句与$project一起使用并在PyMongo中聚合
- Linux:sudo命令实例讲解
- Linux中kobject的作用,Linux设备驱动模型-- 数据结构Kset/KObject