如何通俗易懂地理解基于模型的强化学习?
文章目录
- Model-Based基本思想
- Dyna-Q算法
- Model-Based中的Planning
- Monte Carlo Tree Search
Model Free Reinforcement Learning
(MFRL)算法:MFRL
中无须知道Transition
或者Reward Models
。解决这类问题的方法大体上有三种:
- Value-Based Method (Q-Learning)。
- Policy-Based Method (Policy Gradient)。
- Policy and Value Based Method(Actor Critic)。
Model-Based基本思想
在model-based
的RL
方法中,需要学transition
或者reward model
,基于这个所学的model
,我们做plan
。由于我们可以和所学的model
交互,这种做法我们会增加采样的效率。而这种方法的缺点在于使得问题变得更加复杂,并且还存在model-bias
的问题。
- 举例说明:
设有三条轨迹,其状态用二元组位置坐标(a,d)(a,d)(a,d)表示,轨迹表示如下:
- (1,1) →\rightarrow→ (1,2) →\rightarrow→ (1,3) →\rightarrow→ (1,2) →\rightarrow→ (1,3) →\rightarrow→ (2,3) →\rightarrow→ (3,3) →\rightarrow→ (4,3)
- (1,1) →\rightarrow→ (1,2) →\rightarrow→ (1,3)→\rightarrow→ (2,3) →\rightarrow→ (3,3) →\rightarrow→ (3,2) →\rightarrow→ (3,3) →\rightarrow→ (4,3)
- (1,1) →\rightarrow→ (2,1) →\rightarrow→ (3,1) →\rightarrow→ (3,2) →\rightarrow→ (4,2)
状态转移概率可表示为:
P((2,3)∣(1,3))=2/3P((1,2)∣(1,3))=1/3P((2,3)|(1,3)) = 2/3\\ P((1,2)|(1,3)) = 1/3 P((2,3)∣(1,3))=2/3P((1,2)∣(1,3))=1/3
由上述状态转移概率,依据贝尔曼方程,可得最优值函数:
V∗(s)=maxaR(s,a)+γ∑s′Pr(s′∣s,a)V∗(s′)V^{*}(s) = \max_{a} R(s,a) + \gamma \sum_{s^{\prime}}Pr(s^{\prime}|s,a)V^{*}(s^{\prime}) V∗(s)=amaxR(s,a)+γs′∑Pr(s′∣s,a)V∗(s′)
所以在更新智能体算法参数之前,我们需要更新Transition
或者Reward Model
。采用值迭代的方法来做MBRL
,可以得到MBRL-VI
算法伪代码:
上述基于值迭代的算法能够计算比较简单的transition
,对于Complex models
可以采用function approximate
的方式:
- Linear model: pdf(s′∣s,a)=N(s′∣wT[sa],σ2I)pd f\left(s^{\prime} | s, a\right)=N\left(s^{\prime} | w^{T}\left[\begin{array}{l}s \\ a\end{array}\right], \sigma^{2} I\right)pdf(s′∣s,a)=N(s′∣wT[sa],σ2I)
- Non-linear models:
- Stochastic(e.g. Gaussian Process): pdf(s′∣s,a)=GP(s∣wT[sa],σ2I)p d f\left(s^{\prime} | s, a\right)=G P\left(s | w^{T}\left[\begin{array}{l}s \\ a\end{array}\right], \sigma^{2} I\right)pdf(s′∣s,a)=GP(s∣wT[sa],σ2I)
- Deterministic(e.g.,neural network): s′=T(s,a)=NN(s,a)s^{\prime} = T(s,a)=NN(s,a)s′=T(s,a)=NN(s,a)
在知道了transition
的情况下,我们可以采用更加高效率的算法来做MBRL
,之前是基于值迭代得到model-based
强化学习算法,如果用Q-Learning
算法来做的话,我们可以得到MBRL-QL
算法伪代码:
与model free
的强化学习算法相比,MBRL
由于要学一个model
,因此更复杂,利用数据的方式更加高效,是利用交互数据学一个model
,而不是只用来更新agent
,因此泛化能力也会更强。 Partial Planning
和Replay Buffer
具体对比如下所示:
- Replay buffer: Simple, real samples , no generalization to other sate-action pairs.
- Partial planning with a model: Complex, simulated samples, generalization to other state -action pairs (can help or hurt)
Dyna-Q算法
MBRL
的问题在于如何学一个好的model
,由此有了Dyna
算法,也能够直接从real experience
中学。
与之前的方法不同之处在于这里还用state
和reward function
去更新策略或者值函数(与model-free
方法一样,之前所述的MBRL
算法中,这些信息只用于更新model
)。可以得到Dyna-Q
算法伪代码:
Model-Based中的Planning
在Dyna-Q
算法中,Planning
是从任意状态开始规划的,但是我们完全没有必要说从任意的状态开始规划,我们可以从当前状态(current state
)开始规划。可以从当前状态展开一个tree
,遍历所有的action
。
用Tree Search
算法主要是基于三个思想:
- Leaf nodes:Approximate leaf values with value of default policy π\piπ.
Q∗(s,a)≈Qπ(s,a)≈1n(s,a)∑k=1nGkQ^{*}(s, a) \approx Q^{\pi}(s, a) \approx \frac{1}{n(s, a)} \sum_{k=1}^{n} G_{k}Q∗(s,a)≈Qπ(s,a)≈n(s,a)1k=1∑nGk
- Chance nodes:Approximate expectation by sampling from transition model.
Q∗(s,a)≈R(s,a)+γ1n(s,a)∑s′∑Pr(s′∣s,a)V(s′)Q^{*}(s, a) \approx R(s, a)+\gamma \frac{1}{n(s, a)} \sum_{s^{\prime}} \sum_{\operatorname{Pr}\left(s^{\prime} | s, a\right)} V\left(s^{\prime}\right)Q∗(s,a)≈R(s,a)+γn(s,a)1s′∑Pr(s′∣s,a)∑V(s′)
- Decision nodes:Expand only most promising actions.
a∗=argmaxaQ(s,a)+c2lnn(s)n(s,a)and V∗(s)=Q(s,a∗)a^{*}=\operatorname{argmax}_{a} Q(s, a)+c \sqrt{\frac{2 \ln n(s)}{n(s, a)}} \text { and } V^{*}(s)=Q\left(s, a^{*}\right)a∗=argmaxaQ(s,a)+cn(s,a)2lnn(s) and V∗(s)=Q(s,a∗)
第一种方法当蒙特卡洛树中的分支因子比较大的时候计算量比较大,第二种方法相当于是一种递增式的方法。第三种方式就是一种剪枝的方法。对上述分析,Monte Carlo Tree Search
(MCTS)是一种比较好的选择。
Monte Carlo Tree Search
Monte Carlo Tree Search(with upper confidence bound)算法主流程如下:
根据UCT
算法的主要流程框架可以看出,里面的核心三步是TreePolicy
、DefaultPolicy
和Backup
三个函数,其主要功能可总结为:
TreePolicy
:主要是选择下一个节点,如果有未展开的节点,选择未展开的;如果全部都有被展开过,选择BestChild
节点。当然依据具体情况,也不是什么时候都能完全展开,所以这里是整个MCTS
树的策略部分,依据具体问题会有稍许不同。DefaultPolicy
:给定一个策略用于计算当前节点的估值,大多数时候是随机rollout
策略Backup
:拿到结果之后往回传,将TreePolicy
选中的那个节点的信息进行更新,主要是更新估值和访问次数。
下面依次对这三个部分进行详细解析:
首先是TreePolicy
(node)函数主要实现节点的选择功能,依据是否展开,和是否是最好的孩子节点进行选择,这里会涉及探索和利用的平衡:
上述Expand(nodenodenode)针对的是确定性情况,也就是说在当前的状态sss下,选择不同的aaa,会有一个确定的s′s^{\prime}s′与之对应。而如果是不确定的情况下,下一个状态s′s^{\prime}s′是按照一个概率分布给定的。也就是拿下一个节点是通过概率拿的。
DefaultPolicy
(nodenodenode)主要是基于某个给定策略进行rollout
,拿到最后的返回结果。主要是模拟仿真评估当前节点的好坏,需要返回对当前节点的评估信息。
而对于最后一步Backup
,拿DefaultPolicy
(nodenodenode)返回的节点评估信息(奖励),用于更新之前被TreePolicy
选定的节点的值和访问次数等统计信息。依据建模过程不同,可以分为Single Player
和Two Players
(adversarial):
如何通俗易懂地理解基于模型的强化学习?相关推荐
- 基于模型的强化学习比无模型的强化学习更好?错!
作者 | Carles Gelada and Jacob Buckman 编辑 | DeepRL 来源 | 深度强化学习实验室(ID:Deep-RL) [导读]许多研究人员认为,基于模型的强化学习(M ...
- 7. 强化学习之——基于模型的强化学习
目录 课程大纲 基于模型的强化学习概要 基于环境模型的价值函数优化 model-based value-based RL 基于环境模型的策略优化 model-based policy-based RL ...
- 上交张伟楠副教授:基于模型的强化学习算法,基本原理以及前沿进展(附视频)
2020 北京智源大会 本文属于2020北京智源大会嘉宾演讲的整理报道系列.北京智源大会是北京智源人工智能研究院主办的年度国际性人工智能高端学术交流活动,以国际性.权威性.专业性和前瞻性的" ...
- 强化学习(十七) 基于模型的强化学习与Dyna算法框架
在前面我们讨论了基于价值的强化学习(Value Based RL)和基于策略的强化学习模型(Policy Based RL),本篇我们讨论最后一种强化学习流派,基于模型的强化学习(Model Base ...
- 系统学习深度学习(三十九)--基于模型的强化学习与Dyna算法框架
转自:https://www.cnblogs.com/pinard/p/10384424.html 在前面我们讨论了基于价值的强化学习(Value Based RL)和基于策略的强化学习模型(Poli ...
- 初探强化学习(7)基于模型的强化学习的应用综述
本文是直接翻译一篇文章的,我先把原文地址放在这里. 原文名字为:Survey of Model-Based Reinforcement Learning: Applications on Roboti ...
- 初探强化学习(6)到底TMD什么是model-based和model-free(基于模型的强化学习和基于模型的强化学习 TMD的到底是什么)
0 如何定义无模型和有模型 Model-based和Model-free方法对比 Model-based: 一旦model学好后,就是采用On-Policy的算法: 一旦model学好后,就不需要与真 ...
- 强化学习(五)---基于模型的强化学习实战
有一个4*4的矩阵,0和15代表出口 结果输出第一个矩阵一共输出16个向量,每个向量里面的位置代表,在当前状态往哪里走比较好,第二个矩阵对第一个矩阵进行统计处理,更加直观,也是表示在16个状态,每个位 ...
- 乔治亚理工提出基于GAN的强化学习算法用于推荐系统
Generative Adversarial User Model for Reinforcement Learning Based Recommendation System Xinshi Chen ...
- 平潭迁移库是什么意思_迁移学习》第四章总结---基于模型的迁移学习
基于模型的迁移学习可以简单理解为就是基于模型参数的迁移学习,如何使我们构建的模型可以学习到域之间的通用知识. 1. 基于共享模型成分的迁移学习 在模型中添加先验知识. 1.1 利用高斯过程的迁移学习 ...
最新文章
- mysql 脚本命令大全,linux 常用Mysql脚本命令
- HDU 1242 Rescue
- 用ANSYS画矩形_ANSYS软件使用的几点建议
- 2019年计算机考研408历年真题2009-2019下载免费下载
- 配对算法(Gale-Shapley)实现
- 第一章 Lua - AIR202 控制LED小灯
- goodnote笔记同步 Android,goodnotes笔记
- java fadein_原生JS实现 fadeIn / fadeOut 方法
- 斐讯N1盒子刷Armbian安装jdk做Java服务器
- 朋友圈大数据:你的朋友圈出卖了你,大数据就是这么给力!!!
- 网页学习——创建HTML框架(frameset、frame、iframe)
- 阅读笔记|Retrieve and Refine: Exemplar-based Neural Comment Generation
- 【Latex】Texstudio英文拼写错误检查功能出问题的解决方法
- 7-3 学习打卡(12.26)
- 2020-10-1 交换机通过CRT保存配置-telnet
- RS232转PROFINET网关通讯协议应用网关模块远创智控
- android 看门狗
- 国内40多家金融机构数据被窃,多家知名基金上榜
- 基于ASP的新闻管理系统的设计与实现
- 程序员惊恐:30岁后太老,40岁应退休