内容纲要

欢迎转载,作者:Ling,注明出处:强化学习教程: 08-Model-Based RL Dyna and Tree Search

 

上一章是从经验(Experience)中学策略(Policy)

之前章节都是从经验中学值函数,包括V和Q

本章主要从经验中学模型(Model),然后用计划(Planning)来构建一个值函数或者策略

 

集成学习:将学习model和计划放到一个架构中

Model-Free RL VS Model-Based RL

RL_08_001

Model-Based RL:

RL_08_002

我们先通过现实经验,学习到一个model,或者说是虚拟的环境,然后根据虚拟环境进行采样,然后根据采样结果更新Value/Policy,根据Value/Policy在现实环境中采取行动,然后继续从现实经验学习模型,如此反复

简单说: 首先通过实际经验学习一个模型,然后根据学习的模型进行规划

Model-Based RL优劣势:

优势:

可以用监督学习有效学习模型

劣势:

学习模型会有误差,构建值函数又会有误差,误差可能加大

什么是模型:

  • M是一个四元组<S, A, P, R>
  • 一般A和S都是已知,主要要学习P和R,就是转移概率和Reward函数

RL_08_003

如何学习模型:

目标:通过经验{S1, A1, R2,…,ST}训练一个模型M

输入:S,A,输出R,S

RL_08_004

学习s,a->r 是回归问题

学习s,a->s'是分类问题

常见模型例子:

RL_08_005

查表模型:

模型:M,P,R

学习公式:

RL_08_006

简单说:

转移概率为:统计s->s' 采取了a, 在样本中出现的次数

奖励为:在s,采取了a在样本中获得的奖励和

有了该模型,就可以基于它,模拟采样,然后更新价值/策略函数

利用模型做Planning:

给定模型:

RL_08_007

我们要解MDP问题:

  • Value iteration
  • Policy iteration
  • Tree search

还有另外一种更简单的方法做Planning

Sample-based Planning:

  • 利用模型产生Samples
  • 然后利用model-free RL从这些sample中学习V值,并且采取行动,例如:

    • MC control
    • Sarsa
    • Q-learning

举例:查表模型

RL_08_008

通过在实际环境中的采样,我们学习到了一个查表模型:

状态转移概率:

P(A->B, a) = 100%

P(B->终点1, b) = 75%

P(B->终点2,c)=25%

奖励函数:

P(A, a)=0

P(B,b)=1

P(B,c)=0

接下来我们就可以做计划了(Planning): 就是根据上面的查表模型进行模拟采样(在虚拟环境中采样),然后更新value/policy

RL_08_009

我们得到右边的样本

根据样本我们可以通过MC学习更新V值:

V(A)=1

V(B)=0.75

问题

如果学习到的模型,不能反应真实世界,会使得V值更新,和采取的行动偏离正轨

改进:集成架构,Dyna

原来:

通过上面我们知道,这里有两套经验,一套现实经验,一套虚拟经验,或者说模拟经验

RL_08_010

并且之前的Model-Based RL:

RL_08_011

也就是Value Function只从虚拟环境的样本中更新

改进

RL_08_012

从真实和虚拟经验同时学习更新Value Function和策略

图示:

RL_08_013

多了一条从现实经验更新的边

算法:

RL_08_014

a-d都是传统的根据经验,用model-free的方法学习Q

同时根据现实环境更新model

然后再根据模型,也就是虚拟环境,采样,进一步更新Q

评估结果:

RL_08_015

在Maze中可以看出,虚拟环境n取越大效果越好

搜索树:

在虚拟环境,利用model-free更新V/Q时,之前时是普通的值迭代或者策略迭代,都会以各个状态为起始点,进行更新。

之前在实际中我们无需考虑从任何一个节点起始的V值更新,也就是无需解决整个MDP问题,只用解决一个从now开始的sub-MDP问题

实际中,我们采样都会形成从起始点St的一颗前向搜索树

当我们有了model,我们可以构造这样一颗前向搜索树

RL_08_016

基于模拟的搜索(Simulation-Based Search) :是前向搜索的一种形式,它从当前时刻开始, 使用基于模拟采样的规划,构建一个关注与短期未来的前向搜索树,把这个搜索树作为一个学习资源, 然后使用Model Free的强化学习来寻找最优策略。

RL_08_017

这样我们实际上:

RL_08_018

简单的MC Search:

RL_08_019

说明:

只考虑从当前节点出发的Q值

只求当前节点,各个a的q值,求的方法是通过求多个样本的Gt平均值

MC Tree Search:

RL_08_020

说明:

对比:

简单MC Search

MC Tree Search

只更新第一层子节点

Q(St, a)

更新搜索树内所有状态

Q(S, a)

也只保存第一层节点

保存所有访问过的节点,不过不包括默认策略模拟的部

算法:

  • 从当前实际状态 s_t 开始,模拟一系列Episodes,在这一过程中使用状态行为价值作为节点录入搜索树,
  • 对搜索树内的每一个节点(状态行为对),估计其价值Q(s,a)
  • 对于模拟过程中的每一步,使用MC学习更新行为价值:
  • 基于Q值,使用Ɛ-greedy或其他探索方法来生成行为

下面会以一个例子说明如何更新Q值

在更新Q过程中的样本不是像简单MC Search一样,随机选择样本,每个样本选择都是朝最优目标前进的。

RL_08_021

结合例子说明Q值更新方法:

围棋有红黑两方,所有非终结step回报都是0,终结step,如果黑方赢了,回报是1,如果白方赢了,回报是0

RL_08_022

我们来看看如何更新每个状态的价值函数

RL_08_023

开始,Tree搜索部分在五角星状态,发现走到尽头T是黑方赢了,所以更新五角星value为1/1

我们尝试走下一步:

RL_08_024

尝试下一步状态,发现白方赢了,所以我们更新五角星状态value为0/1,同时我们需要更新第一个状态value为1/2,同时我们不继续从该状态出发了,换一个状态

RL_08_025

我们发现走到最后,黑方获胜,这个时候更新所有状态值,以下类似反复操作

RL_08_026

RL_08_027

这样我们最终就知道从该点开始value是多少,以及接下来各点的value是多少

如果是简单MC Search,可能第二步白方赢的样本,以及从白方赢那个节点之后的样本都会在里面,

但是MC Tree Search会舍弃白方赢的节点,尽可能找黑方赢的节点包含进来,因为每次迭代,它会更新搜索树内所有节点的value,而不仅仅是Q(st a)

由于每次都是考虑完整走到最后T的样本,所以是MC Tree Search

如果只考虑下一步的Tree Search,就是TD Tree Search算法

  • 从当前实际状态 s_t 开始,模拟一系列Episodes,在这一过程中使用状态行为价值作为节点录入搜索树,
  • 对搜索树内的每一个节点(状态行为对),估计其价值Q(s,a)
  • 对于模拟过程中的每一步,使用Sarsa学习更新行为价值:
  • 基于Q值,使用Ɛ-greedy或其他探索方法来生成行为

和MC Tree Search区别仅仅是红色部分

TD(λ) Tree Search类似

Dyna-2 算法:

和Dyna一样,一边从实际经历中学习,一遍从模拟的经历中学习。

区别:将前向搜索加入到Dyna中

Dyna

Dyna-2

每次更新所有状态的Q

每次只更新Start节点的Q或者只更新搜索树中的Q

使用该算法的个体维护了两套特征权重:

一套反映了个体的长期记忆, 该记忆是从真实经历中使用TD学习得到,它反映了个体对于某一特定强化学习问题的普遍性的知识、经验;

 另一套反映了个体的短期记忆,该记忆从基于模拟经历中使用TD搜索得到,它反映了个体对于某一特定强化学习在特定条件 (比如某一Episode、某一状态下)下的特定的、局部适用的知识、经验。

Dyna-2算法最终将两套特征权重下产生的价值综合起来进行决策,以期得到更优秀的策略。

评估:

RL_08_028