如何通俗易懂地理解基于模型的强化学习?

简介: 如何通俗易懂地理解基于模型的强化学习?

  Model Free Reinforcement Learning(MFRL)算法:MFRL中无须知道Transition或者Reward Models。解决这类问题的方法大体上有三种:

  1. Value-Based Method (Q-Learning)。
  2. Policy-Based Method (Policy Gradient)。
  3. Policy and Value Based Method(Actor Critic)。

Model-Based基本思想

  在model-basedRL方法中,需要学transition或者reward model,基于这个所学的model,我们做plan。由于我们可以和所学的model交互,这种做法我们会增加采样的效率。而这种方法的缺点在于使得问题变得更加复杂,并且还存在model-bias的问题。

  • 举例说明:

  设有三条轨迹,其状态用二元组位置坐标( a , d ) 表示,轨迹表示如下

image.png


状态转移概率可表示为:


image.png

 由上述状态转移概率,依据贝尔曼方程,可得最优值函数:


image.png  所以在更新智能体算法参数之前,我们需要更新Transition或者Reward Model。采用值迭代的方法来做MBRL,可以得到MBRL-VI算法伪代码:

20200518102359518.png

  上述基于值迭代的算法能够计算比较简单的transition,对于Complex models可以采用function approximate的方式:

image.png 在知道了transition的情况下,我们可以采用更加高效率的算法来做MBRL,之前是基于值迭代得到model-based强化学习算法,如果用Q-Learning算法来做的话,我们可以得到MBRL-QL算法伪代码:

  与model free的强化学习算法相比,MBRL由于要学一个model,因此更复杂,利用数据的方式更加高效,是利用交互数据学一个model,而不是只用来更新agent,因此泛化能力也会更强。 Partial PlanningReplay Buffer具体对比如下所示:

  1. Replay buffer: Simple, real samples , no generalization to other sate-action pairs.
  2. 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中学。

  与之前的方法不同之处在于这里还用statereward function去更新策略或者值函数(与model-free方法一样,之前所述的MBRL算法中,这些信息只用于更新model)。可以得到Dyna-Q算法伪代码:

Model-Based中的Planning

  在Dyna-Q算法中,Planning是从任意状态开始规划的,但是我们完全没有必要说从任意的状态开始规划,我们可以从当前状态(current state)开始规划。可以从当前状态展开一个tree,遍历所有的action

  用Tree Search算法主要是基于三个思想:

  1. Leaf nodes:Approximate leaf values with value of default policy π \piπ.


image.png

  1. Chance nodes:Approximate expectation by sampling from transition model.


image.png

  1. Decision nodes:Expand only most promising actions.

image.png

第一种方法当蒙特卡洛树中的分支因子比较大的时候计算量比较大,第二种方法相当于是一种递增式的方法。第三种方式就是一种剪枝的方法。对上述分析,Monte Carlo Tree Search(MCTS)是一种比较好的选择。

Monte Carlo Tree Search

  Monte Carlo Tree Search(with upper confidence bound)算法主流程如下:

  根据UCT算法的主要流程框架可以看出,里面的核心三步是TreePolicyDefaultPolicyBackup三个函数,其主要功能可总结为:

  1. TreePolicy:主要是选择下一个节点,如果有未展开的节点,选择未展开的;如果全部都有被展开过,选择BestChild节点。当然依据具体情况,也不是什么时候都能完全展开,所以这里是整个MCTS树的策略部分,依据具体问题会有稍许不同。
  2. DefaultPolicy:给定一个策略用于计算当前节点的估值,大多数时候是随机rollout策略
  3. Backup:拿到结果之后往回传,将TreePolicy选中的那个节点的信息进行更新,主要是更新估值和访问次数。

  下面依次对这三个部分进行详细解析:

  首先是TreePolicy(node)函数主要实现节点的选择功能,依据是否展开,和是否是最好的孩子节点进行选择,这里会涉及探索和利用的平衡:

  上述Expand(n o d e nodenode)针对的是确定性情况,也就是说在当前的状态s ss下,选择不同的a aa,会有一个确定的s ′ s^{\prime}s与之对应。而如果是不确定的情况下,下一个状态s ′ s^{\prime}s是按照一个概率分布给定的。也就是拿下一个节点是通过概率拿的。

  DefaultPolicy(n o d e nodenode)主要是基于某个给定策略进行rollout,拿到最后的返回结果。主要是模拟仿真评估当前节点的好坏,需要返回对当前节点的评估信息。

  而对于最后一步Backup,拿DefaultPolicy(n o d e nodenode)返回的节点评估信息(奖励),用于更新之前被TreePolicy选定的节点的值和访问次数等统计信息。依据建模过程不同,可以分为Single PlayerTwo Players(adversarial):



相关文章
|
6月前
|
机器学习/深度学习 存储 缓存
【动手学深度学习】深入浅出深度学习之RMSProp算法的设计与实现
【动手学深度学习】深入浅出深度学习之RMSProp算法的设计与实现
146 32
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
一文搞懂深度学习:神经网络基础部分
一文搞懂深度学习:神经网络基础部分
85 0
|
机器学习/深度学习 人工智能 算法
手把手教你强化学习 (一) 什么是强化学习?与机器学习有什么区别?
手把手教你强化学习 (一) 什么是强化学习?与机器学习有什么区别?
395 3
|
6月前
|
机器学习/深度学习 算法 关系型数据库
【PyTorch深度强化学习】DDPG算法的讲解及实战(超详细 附源码)
【PyTorch深度强化学习】DDPG算法的讲解及实战(超详细 附源码)
2052 1
|
机器学习/深度学习 算法 数据挖掘
深度学习实践篇 第十一章:imgaug
简要介绍imgaug和基础用法。
167 0
|
机器学习/深度学习 并行计算 PyTorch
深度学习实践篇 第九章:DDP
简要介绍了DDP的使用。
324 0
|
机器学习/深度学习 人工智能 自然语言处理
强化学习从基础到进阶–案例与实践[11]:AlphaStar论文解读、监督学习、强化学习、模仿学习、多智能体学习、消融实验
强化学习从基础到进阶–案例与实践[11]:AlphaStar论文解读、监督学习、强化学习、模仿学习、多智能体学习、消融实验
强化学习从基础到进阶–案例与实践[11]:AlphaStar论文解读、监督学习、强化学习、模仿学习、多智能体学习、消融实验
|
机器学习/深度学习 自然语言处理 监控
手把手教你强化学习 (二) 强化学习的直观理解和基本概念
手把手教你强化学习 (二) 强化学习的直观理解和基本概念
157 0
|
机器学习/深度学习 算法 自动驾驶
手把手教你强化学习 (七) 强化学习中的无模型控制
手把手教你强化学习 (七) 强化学习中的无模型控制
261 0
|
机器学习/深度学习 存储 算法
连载|机器学习|通俗易懂的KNN
连载|机器学习|通俗易懂的KNN