机器学习 | 强化学习(7) | 融合学习与规划(Integrating Learning and Planning)

7-融合学习与规划(Integrating Learning and Planning)

1.导论

基于模型的强化学习(Model-Based Reinforcement Learning)

  • 在上一个课程中,是从记录序列中直接学习策略
  • 在过往的课程中,是从记录序列中直接学习价值函数
  • 而本次课程,则是从记录序列中直接学习模型
  • 然后采用规划(Planning)来构建一个价值函数或者策略
  • 将学习(Learning)与规划(Planning)融合到一个架构中

基于模型(Model-Based)和无模型(Model-Free)强化学习

  • 无模型强化学习

    • 无模型
    • 从经验序列中学习价值函数或者策略
  • 基于模型强化学习

    • 从序列中学习一个模型
    • 通过模型来规划价值函数或者策略

2.基于模型的强化学习(Model-Based RL)

价值/策略 -> 交互 -> 经验序列 -> 模型学习 -> 模型 -> 规划 -> 价值/策略 ->....

基于模型强化学习的优点

优点:

  • 可以基于监督学习的方法快速学习
  • 能够解释模型的不确定性

缺点:

  • 先学习一个模型,再构建策略函数,中间过程导致了两次近似误差的产生

什么为模型?

  • 对于一个模型\(\mathcal{M}\)则是代表一个由参数\(\eta\)进行控制的$MDP\mathcal{\langle S, A, P, R \rangle} $

  • 我们假定状态空间\(\mathcal{S}\)和动作空间\(\mathcal{A}\)是已知的

  • 为此一个模型\(\mathcal{M=\langle P_\eta,R_\eta\rangle}\)代表着状态转移概率\(\mathcal{P_\eta\approx P}\)以及回报\(\mathcal{R_\eta\approx R}\)

    \[\begin{align} S_{t+1}&\sim\mathcal{P_\eta}(S_{t+1}|S-t,A_t) \\ R_{t+1}&\sim\mathcal{R_\eta}(R_{t+1}|S-t,A_t) \end{align} \]

  • 一般来说假设状态转移以及回报是符合条件性独立的

    即:

    \[\mathbb{P}[S_{t+1},R_{t+1}|S_t,A_t]=\mathbb{P}[S_{t+1}|S_t,A_t]\mathbb{P}[R_{t+1}|S_t,A_t] \]

模型学习(Model Learning)

  • 目标:从经验序列\(\{S_1,A_1,R_2\dots,S_T\}\)估计模型\(\mathcal{M_\eta}\)

  • 显然这是一个监督学习问题:

    \[\begin{align} S_1,A_1&\rightarrow R_2,S_2 \\ S_2,A_2&\rightarrow R_3,S_3 \\ &\vdots \\ S_{T-1},A_{T-1}&\rightarrow R_T,S_T \end{align} \]

  • 学习 \(s,a\rightarrow r\)即是回归问题

  • 学习\(s,a\rightarrow s'\)即是密度估计问题(即是学习密度概率函数或者说分布)

  • 选择一个损失函数,如MSE、KL散度等

  • 寻找参数\(\eta\)以最小化经验误差

一些模型的典型例子

  • 查表法模型(Table Lookup Model)
  • 线性期望模型(Linear Expectiation Model)
  • 线性高斯模型(Linear Gaussian Model)
  • 高斯过程模型(Gaussian Process Model)
  • 深度微型网络(Deep Belief Network Model)
  • ...

查表模型(Table Lookup Model)

  • 模型显然是一个显式的马尔科夫决策过程\(\mathcal{\hat P,\hat R}\)

  • 计算访问每个状态动作对的访问次数\(N(s,a)\)

    \[\begin{align} \mathcal{\hat P^a_{s,s'}} & = \frac{1}{N(s,a)}\sum^{T}_{t=1}\mathbf 1(S_t, A_t,S_{t+1}=s,a,a') \\ \mathcal{\hat R^a_{s,s'}} & = \frac{1}{N(s,a)}\sum^{T}_{t=1}\mathbf 1(S_t, A_t=s,a)R_t \end{align} \]

  • 或者换一种说法

    • 在每一个时间辍t中记录经验元组\(\langle S_t,A_t, R_{t+1},S_{t+1}\rangle\)
    • 对于一个采样模型,随机性地采样形如\(\langle s,a,\cdot,\cdot\rangle\)的元素

模型规划(Planning with a model)

*Planning即是Solving

  • 给定模型\(\mathcal{M_\eta=\langle P_\eta,R_\eta\rangle}\)
  • 解决\(MDP\mathcal{\langle S,A,P_\eta,R_\eta\rangle}\)
  • 用你喜欢的算法即可:
    • 价值迭代
    • 策略迭代
    • 树形搜索
    • ...

基于采样的规划(Sample-Based Planning)

  • 简易却是强大的规划方法

  • 只用模型来生成样本

  • 从模型中进行采样

    \[\begin{align} S_{t+1} & \sim \mathcal{P_\eta}(S_{t+1}|S_t,A_t) \\ R_{t+1} & = \mathcal{R_\eta}(R_{t+1}|S_t,A_t) \end{align} \]

  • 通过无模型的强化学习方法去采样,例如说:

    • 蒙特卡罗控制
    • SARSA算法
    • Q--Learning
  • 基于采样的规划(Sample-Based Planning)一般来说都比较高效

非精准模型的规划

  • 给定非完美的模型\(\mathcal{\langle P_\eta,R_\eta \rangle \neq \langle P,R \rangle}\)

  • 基于模型强化学习的表现决定或者说限制了拟合\(MDP\mathcal{\langle S,A,P_\eta, R_\eta \rangle}\)的最优策略

    即是基于模型的强化学习只能跟他估计所用的模型一致

  • 那么当模型不够精确之时,在规划的过程中只能得到一个次优解的策略

  • 方法1:当模型完全出错之时,采用无模型的强化学习

  • 方法2:显式地描述模型的不确定性

3.融合架构(Integrated Architectures)

真实序列与模拟序列

我们这里定义两种来源的经验序列

  • 真实序列(Real experience)从环境中进行的取样(真正的MDP)

    \[S' \sim \mathcal{P^a_{s,s;}} \\ R = \mathcal{R^a_s} \]

  • 模拟序列(Simulated experience)从模型中进行的取样的(近似MDP)

    \[\begin{align} S'& \sim \mathcal{P_\eta(S'|S,A)} \\ R & = \mathcal{R_\eta}(R|S,A) \end{align} \]

基于模型(Model-Based)和无模型(Model-Free)强化学习

  • 无模型强化学习

    • 无模型
    • 从经验序列中学习价值函数或者策略
  • 基于模型强化学习(通过基于采样的规划)

    • 从序列中学习一个模型
    • 通过模型来规划价值函数或者策略
  • Dyna(pronounce: daina)(二者的融合体)

    • 从真实经验序列中学习一个模型
    • 学习并且规划处一个价值函数(或者策略)从混合的真实与模拟经验序列

Dyna-Q算法

对所有的\(s\in\mathcal{S}\)以及所有的\(a\in\mathcal{A(s)}\),初始化 \(Q(s,a)\)以及模型\(Model(s,a)\)

一直循环:

  1. \(S\leftarrow\) 目前的状态(非终结态)

  2. \(A\leftarrow\epsilon-greedy(S,Q)\)

  3. 执行动作\(A\),得到回报\(R\)以及下一状态\(S'\)

  4. \(Q(S,A)\leftarrow Q(S,A)+\alpha[R + \gamma\max_a Q(S',a)-Q(S,A)]\)

  5. \(Model(S,A) \leftarrow R,S'\)(假设是确定性的环境)

  6. 循环\(n\)

    \(S\leftarrow\) 随机取样过去观测到的状态

    \(A\leftarrow\)随机取样在\(S\)中会采取的动作

    \(R,S'\leftarrow Model(S,A)\)

    \(Q(S,A) \leftarrow Q(S,A) + \alpha[R + \gamma\max_a Q(S',a) - Q(S,A)]\)

其中中间循环\(n\)次也可以看做是思考次数

尤其适合变化性的环境

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

  • 通过模型模拟出从现在开始的经验序列

  • 在模拟出来的序列中应用无模型的强化学习

  • 首先基于模型模拟从目前状态开始的经验序列

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

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

    • 蒙特卡罗·控制\(\rightarrow\)蒙特卡罗搜索(Monte-Carlo Search)
    • SARSA\(\rightarrow\) TD搜索
  • 给定模型\(\mathcal{M_v}\)以及一个模拟策略\(\pi\)

  • 对于所有动作\(a\in \mathcal{A}\)

    • 然后基于目前状态\(s_t\)(是真实的)去模拟\(K\)个状态

      \[\{\color{red}{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} \]

    • 通过均值返回回报去评估每一个动作(蒙特卡罗评估)

      \[Q(\color{red}{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) \]

蒙特卡罗树搜索(Monte-Carlo Tree Search)(评估)

  • 给定模型\(\mathcal{M_v}\)

  • 通过目前的模拟策略\(\pi\)从目前状态\(s_t\)模拟K步序列

    \[\{\color{red}{s_t}A^k_t,R^k_{t+1},S^k_{t+1},A^k_{t+1},\dots,S^k_T\}^K_{k=1}\sim \mathcal{M_v,\pi} \]

  • 然后构建一个包含(模拟中)访问过的状态以及动作的搜索树

  • 通过从\(s,a\)出发的每一步序列返回的均值返回回报评估状态的\(Q(s,a)\)

    \[Q(\color{red}{s,a})=\frac{1}{N(s,a)}\sum^K_{k=1}\sum^T_{u=t}\mathbf1(S_u,A_u=s,a)G_u\mathop{\rightarrow}^P q_\pi(s,a) \]

    • 选择具有目前最大价值的动作

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

蒙特卡罗树搜索(模拟)

  • 在蒙特卡罗树搜索中,模拟策略\(\pi\)是可以被更新改进的

  • 每一次模拟都包含了两部分(入树与出树)

    • 树策略(改进):通过最大化\(Q(S,A)\)进行动作选择
    • 缺省策略(修正过):随机选择动作
  • 重复(每次循环如此)

    • 通过蒙特卡罗评估去评估状态\(Q(S,A)\)
    • 改进树策略例如通过\(\epsilon-greddy(Q)\)
  • 然后将蒙特卡罗控制应用在模拟出来的经验序列中

  • 将会收敛于最优的搜索树,\(Q(S,A)\rightarrow q_*(S,A)\)

    *从目前状态出发树策略一直下推以取代缺省策略

蒙特卡罗树搜索的优点

  • 高度选择性的最优优先搜索
  • 动态评估所有状态(不像例如动态规划那样)
  • 通过采样来破坏维度曲线(curse dimensionality)*大概指的是状态随着树分支的增加以几何级数的趋势爆发
  • 黑箱模型的杰作(只需采样)
  • 计算处理上地高效,支持并行处理
  • 基于模拟的搜索
  • 采用TD来取代蒙特卡罗(自助法)
  • 蒙特卡罗树搜索应用蒙特卡罗控制到部分MDP上
  • 同理时序差分搜索应用SARSA控制到部分MDP上

蒙特卡罗对比时序差分搜索

  • 对于无模型强化学习,自助法比较有用
    • TD学习减少了方差但是增加偏差
    • TD学习一般比蒙特卡罗更为高效
    • \(TD(\lambda)\)比蒙特卡罗非常非常高效
  • 对于基于模拟的搜索,自助法一样好用
    • TD搜索减少方差但是增加偏差
    • TD搜索一般比蒙特卡罗搜索要更为高效
    • \(TD(\lambda)\)比蒙特卡罗搜索要非常非常高效

时序差分搜索

  • 模拟从目前状态\(s_t\)开始的经验序列

  • 估计动作-价值函数\(Q(s,a)\)

  • 对于每一步模拟,tguo1SARSA去更新动作价值函数

    \[\Delta Q(S,A) = \alpha(R + \gamma Q(S',A') - Q(S,A)) \]

  • 选择动作基于动作价值函数\(Q(s,a)\)

    • 例如说\(\epsilon-greedy\)
  • 同样Q也适用于函数近似

Dyna-2

  • 在Dyna-2之中,智能体存储了两个特征权重的数据集

    • 长期记忆
    • 短期记忆(动态工作中)
  • 长期记忆是从真实经验序列通过时序差分学习更新出来的

    • 通用的知识可以应用于所有状态序列
  • 短期记忆是基于模拟经验序列通过时序差分学习更新出来的

  • 整个价值函数是长期记忆与短期记忆的求和

posted @ 2021-01-17 20:13  Uzuki  阅读(287)  评论(0编辑  收藏  举报