强化学习学习笔记(八):Model-based RL

1. Model-Based RL

1.1 Introduction

之前我们学习的都是Model-Free的方法,即我们需要通过一些来自真实环境的experience来学习 value function 以及 Policy来解决某个问题。而Model-Based的方法则是借助来自真实环境的experience来学习一个model(图中卡通的地球),然后借助这个学到的model进行决策。

具体来说,下图右边所示,我们有一些真实世界的experience,Agent通过model learning算法来构建一个内部的model,然后借助这个model去进行plan以得到value和policy,然后根据policy去真实环境中进行acting,再得到一些experience,如此循环往复。

Model-Based RL的好处在于可以通过监督学习的方式去进行model learning,同时对于model的uncertain可以很好的去解释。缺点也很明显,这种方法的误差来源有value function和model learning,所以估计的偏差可能会更多一点。

image-20240822223231584

1.2 Learning a Model

首先给出model的定义,model就是用参数 $\eta$ 来表述一个 MDP,这里我们假定状态空间和动作空间都是已知的,因此我们使用 $\eta$ 来表示状态之间的转移概率以及Reward:

$$
\begin{array}{l}
S_{t+1} \sim \mathcal{P}_{\eta}\left(S_{t+1} \mid S_{t}, A_{t}\right) \\
R_{t+1}=\mathcal{R}_{\eta}\left(R_{t+1} \mid S_{t}, A_{t}\right)
\end{array}
$$

其实Model Learning是一个监督学习:从 $s,a \to r$ 是一个回归问题,从 $s,a \to s^{\prime}$ 是一个密度估计问题(需要得出一个概率分布)。这样,model learning就可以从传统机器学习的套路思考了,即选择一个合适的损失函数,然后梯度下降更新参数。

1.3 Planning with a Model

所谓Planning,其实我们之前也都学到了,比如Value iteration,Policy iteration,Tree search都属于Planing算法。下面举个例子Sample-Based Planning:

image-20240823144604731

2. Integrated Architectures

Model-free RL直接从真实样本中学习value function,Model-Based RL直接从真实样本中学习model,然后借助model生成虚拟的样本,借助虚拟样本来plan获得value function。那能否结合一下?这就是Dyna的思想,即从真实样本中学习一个model,model生成虚拟样本,再同时借助虚拟和正式样本进行learning和planing以获得value function,算法流程如下:

image-20240823145525064

3. Simulation-Based Search

3.1 Forward search

  • 前向搜索算法通过向前预测来选取最佳的动作
  • 通过建立基于目前状态st𝑠𝑡作为根的搜索树(Search Tree)
  • 通过一个MDP的模型来向前预测
  • 其实并不需要整个MDP,只是从目前出发的一部分MDP

image-20240823152757331

3.2 Simulation-Based Search

上面的前向搜索如果使用sample-based planning,就称为Simulation-Based Search,即借助虚拟的Episode来构建树,首先基于模型模拟从目前状态开始的经验序列:

$$
\{{s^k_t},A^k_t,R^k_{t+1},\dots,S^k_T\}^K_{k=1}\sim\mathcal{M_v}

$$

然后在模拟出来的序列中应用无模型强化学习(按你喜欢的即可)

  • 蒙特卡罗·控制→蒙特卡罗搜索(Monte-Carlo Search)
  • SARSA→→TD搜索

3.3 Simple Monte-Carlo Search

给定模型 $\mathcal{M_v}$ 以及一个虚拟策略 $\pi$ ,对于任意属于动作空间中的动作 $a$,基于目前的真实状态 $s_t$ 生成 $K$ 个虚拟的序列,即每个 $(s_t,a)$ 都生成 $K$ 个序列:

$$
\{{s_t,a},R^k_{t+1},S^k_{t+1},A^k_{t+1},\dots,S^k_T\}^K_{k=1}\sim \mathcal{M_v,\pi}
$$

然后借助MC evaluation去计算Q-value:

$$
Q({s_t,a})=\frac{1}{K}\sum^K_{k=1}G_t\mathop{\rightarrow}^P q_\pi(s_t,a)
$$

选择具有最大价值的动作:

$$
a_t=\mathop{\arg\max}_{a\in A}Q(s,a)
$$

简单蒙特卡罗搜索和起前向搜索比起来,对于状态动作数量的处理能力上了一个数量级,可以处理中等规模的问题。但是假如我们的状态动作数量达到非常大的量级,比如围棋的级别,那么简单蒙特卡罗搜索也太慢了。

3.4 Monte-Carlo Tree Search

MCTS摒弃了简单蒙特卡罗搜索里面对当前状态 $S_t$ 每个动作都要进行 $K$ 次模拟采样的做法,而是总共对当前状态 $S_t$ 进行 $K$ 次采样,这样采样到的动作只是动作全集 $A$​ 中的一部分。这样做大大降低了采样的数量和采样后的搜索计算。当然,代价是可能动作全集中的很多动作都没有采样到,可能错失好的动作选择,这是一个算法设计上的折衷。

在MCTS中,基于一个强化学习模型和一个模拟策略,当前状态对应的完整的状态序列(episode)是这样的:

$$
\{S_t,A_t^k, R_{t+1}^k,S_{t+1}^k,A_{t+1}^k,……S_T^k\}_{k=1}^K \sim M_v,\pi
$$

采样完毕后,我们可以基于采样的结果构建一颗MCTS的搜索树,然后近似计算Q-value得到最优的动作:

$$
Q(S_t,a) = \frac{1}{N(S_t,a)}\sum\limits_{k=1}^K\sum\limits_{u=t}^T1(S_{uk}=S_t, A_{uk} =a)G_u\\
a_t =\arg\max_{a \in A}Q(S_t,a)
$$

蒙特卡罗树搜索的优点在于:

  • 高度选择性的最优优先搜索
  • 动态评估所有状态(不像例如动态规划那样)
  • 通过采样来破坏维度曲线(curse dimensionality)*大概指的是状态随着树分支的增加以几何级数的趋势爆发
  • 黑箱模型的杰作(只需采样)
  • 计算处理上地高效,支持并行处理

 

 

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇