zoukankan      html  css  js  c++  java
  • 机器学习 | 强化学习(4) | 无模型控制(ModelFree Control)

    无模型控制(Model-Free Control)

    无模型预测概论

    • 上一节课:
      • 无模型预测
      • 用于估计一个未知马尔科夫决策过程的价值函数
    • 这节课
      • 无模型控制
      • 最优化一个未知马尔科夫决策过程的价值函数

    一般在以下两种情况采用无模型预测

    • 马尔科夫决策过程是未知的,仅能通过采用得到记录
    • 马尔科夫决策过程是已知的,但是过于巨大,仅能通过采样进行

    基于策略学习与非基于策略学习(On and Off-Policy Learning)

    • 基于策略学习(On-policy learning)
      • “实践出真知”(“Learn on the job”)
      • 基于策略\(\pi\)的采样结果去学习策略\(\pi\)
    • 非基于策略学习(Off-policy learning)
      • “站在巨人的肩膀上”(”Look over someone's shoulder“)
      • 基于策略\(\mu\)的采样结果去学习策略\(\pi\)

    无模型策略迭代基于动作-状态函数

    • 基于\(V(s)\)的贪心策略提升必须要有马尔科夫决策过程的一个模型

      \[\pi'(s)= \mathcal{\mathop{\arg\max}_{a\in A}R^a_s+P^a_{ss'}}V(s') \]

    • 基于\(Q(s,a)\)的贪心策略提升则是无需模型的

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

    \(\epsilon\)-贪心探索(\(\epsilon\)-Greedy Exploration)

    贪心策略提升的缺陷

    • 如果我们始终按照策略\(\pi\)的最优解进行行动,那么极有可能我们会卡在局部最优解当中

    我们引入\(\epsilon\)-贪心探索以避免这种局部最优解窘况

    • 这是一种简单而有效的方式来提供可控的随机探索

    • 一切行动\(m\)都基于非零的概率得以被执行

    • \(1-\epsilon\)的概率选择最优的动作

    • \(\epsilon\)的概率随机选择一个行动

      \[\pi(a|s) = \Bigg \{ \begin{align} &\frac{\epsilon}{m} + 1-\epsilon\quad & if \quad a^* = \mathop{\arg\max}_{a\in \mathcal{A}}Q(s,a) \\ & \frac{\epsilon}{m} & otherwise \end{align} \]

    \(\epsilon\)-贪心策略改进

    对于任意一个\(\epsilon\)-贪心策略\(\pi\),关于\(q_\pi\)\(\epsilon\)-贪心策略\(\pi'\)则为一个提升,\(v_{\pi'}(s)\ge v_{\pi}(s)\)

    证明如下:

    \[\begin{align} q_\pi(s,\pi'(s)) & = \sum_{a\in\mathcal A}\pi'(a|s)q_\pi(s,a) \\ & = \frac{\epsilon}{m}\sum_{a\in\mathcal A}q_\pi(s,a) + (1-\epsilon)\max_{a\in\mathcal A} q_\pi(s,a) \\ & \ge \frac{\epsilon}{m}\sum_{a\in\mathcal A}q_\pi(s,a) + (1-\epsilon)\sum_{a\in\mathcal A} \frac{\pi(a|s) - \frac{\epsilon}{m}}{1-\epsilon}q_\pi(s,a) \\ & = \sum_{a\in\mathcal A}\pi(a|s)q_\pi(s,a) \\ & = v_\pi(s) \end{align} \]

    无限制探索的限制性贪心算法(Greedy in the Limit with Infinite Exploration)(GLIE)

    定义:

    • 所有状态-动作二元匹配都将被不断地被探索

      \[\lim_{k\rightarrow\infty} N_k(s,a)=\infty \]

    • 那么策略将会收敛于一个贪心策略

      \[\lim_{k\rightarrow\infty}\pi_k(a|s)=\mathbf1(a=\mathop{\arg\max}_{a'\in \mathcal{A}}Q_k(s,a')) \]

    • 比如说当\(\epsilon\)-贪心算法为\(\epsilon_k=\frac{1}{k}\)\(\epsilon\)下降到0,就是GLIE,

    GLIE蒙特卡罗控制(GLIE Monte-Carlo Control)

    • 基于策略\(\pi\)采样得到第k个序列:\(\{S_1,A_1,R_2,\dots,S_T\}\sim\pi\)

    • 对于序列中的一切状态\(S_t\)和动作\(A_t\)

      \[\begin{align} N(S,A_t) & \leftarrow N(S_t,A_t) + 1 \\ Q(S_t,A_t) & \leftarrow Q(S_t,A_t) + \frac{1}{N(S_t,A_t)}(G_t - Q(S_t,A_t)) \end{align} \]

    • 再基于新的动作-价值函数去提升策略

      \[\begin{align} \epsilon & \leftarrow \frac{1}{k} \\ \pi & \leftarrow \epsilon-greedy(Q) \end{align} \]

    那么GILE蒙特卡罗控制收敛于最优动作-状态函数

    • \(Q(s,a)\rightarrow q_\pi(s,a)\)

    蒙特卡罗对比时序差分控制

    • 时序差分学习对比蒙特卡罗有以下的优点
      • 低方差
      • 在线学习
      • 非完整的序列
    • 自然启发:采用时序差分取代蒙特卡罗
      • \(Q(S,A)\)采用时序差分
      • 再使用\(\epsilon\)-贪心算法去提升策略
      • 每一步时间缀都更新一次

    基于SARSA算法更新动作-价值函数

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

    因为是基于五元组\(\mathcal{\langle S,A,R,S',A'\rangle}\)去更新动作-价值函数,故称为SARSA算法

    基于策略控制的SARSA算法

    • \(Q(s,a),\forall s\in S,a\in A(s)\)进行任意初始化,并且\(Q\)(终结状态)\(=0\)
    • 重复(对每一个序列):
      • 初始化\(S\)
      • 从基于由\(Q\)(例如\(\epsilon\)-贪心算法)生成的策略的\(S\)中选择\(A\)
      • 重复(对序列的每一步)
        • 采取动作\(A\),返回得到\(R\)\(S'\)
        • 从基于由\(Q\)(例如\(\epsilon\)-贪心算法)生成的策略的\(S'\)中选择\(A'\)
        • \(Q(S,A)\leftarrow Q(S,A) + \alpha[R+\gamma Q(S',A')-Q(S,A)]\)
        • \(S\leftarrow S';A\leftarrow A'\)
      • 直到\(S\)到达终结状态

    SARSA算法的收敛性

    如果符合以下条件,那么SARSA将会收敛于最优动作-状态函数\(Q(s,a)\rightarrow q_*(s,a)\)

    • 策略\(\pi_t(a|s)\)是一个GLIE序列

    • 步长的大小\(\alpha_t\)是一个罗宾斯-门罗(Robbins-Monro)序列

      \[\begin{align} \sum^{\infty}_{t=1}\alpha_t = \infty \\ \sum^{\infty}_{t=1}\alpha ^ 2_t \lt \infty \end{align} \]

    n步SARSA算法(n-Step SARSA)

    • 对于n步返回回报其中(\(n = 1,2,\infty\)

      \[\begin{align} n=1\quad & (SARSA) & q^{(1)}_t & = R_{t+1} + \gamma Q(S_{t+1}) \\ n=2\quad & & q^{(2)}_t & = R_{t+1} + \gamma R_{t+2} + \gamma^2 Q(S_{t+2}) \\ \vdots & & \vdots& \\ n=\infty \quad & (MC) & q^{(\infty)}_t & = R_{t+1} + \gamma R_{t+2} + \dots + \gamma^{T-1}R_T \\ \end{align} \]

    • 对于n步\(Q\)-返回回报之定义

      \[q_t^{(n)} = R_{t+1} + \gamma R_{t+2} + \dots+\gamma ^ {n-1}R_{t+n} + \gamma ^ nQ(S_{t+n}) \]

    • 那么n步SARSA通过n步\(Q\)-返回回报去更新\(Q(s,a)\)

    \[Q(S_t,A_t)\leftarrow Q(S_t,A_t) + \alpha\Big( q_t^{(n)} - Q(S_t,A_t) \Big) \]

    Forward View \(SARSA(\lambda)\)

    • 对于返回回报\(q^\lambda\)混合了所有的n步\(Q\)-返回回报\(q_t^{(n)}\)

    • 通过权重\((1-\lambda)\lambda^{n-1}\)

      \[q^\lambda_t = (1-\lambda)\sum^\infty_{n=1}\lambda^{n-1}q^{(n)}_t \]

    • Forward-view \(SARSA(\lambda)\)

      \[Q(S_t,A_t)\leftarrow Q(S_t,A_t) + \alpha\Big(q_t^\lambda - Q(S_t,A_t)\Big) \]

    Backward View \(SARSA(\lambda)\)

    • 正如\(TD(\lambda)\)一样,我们采用有效性检测作为一个在线的算法

    • 只不过在\(SARSA(\lambda)\)中每一个动作-状态对都仅有一次有效性检测

      \[\begin{align} E_0(s,a)& =0\\ E_t(s,a)& = \gamma\lambda E_{t-1}(s,a) + \mathbf1(S_t=s,A_t=a) \end{align} \]

    • 每个状态\(s\)与动作\(a\)\(Q(s,a)\)都得以更新

    • 正比于时序差分误差\(\delta_t\)和有效性检测\(E_t(s,a)\)

      \[\begin{align} &\delta_t = R_{t+1} + \gamma Q(S_{t+1}, A_{t+1}) - Q(S_t,A_t) \\ & Q(s,a)\leftarrow Q(s,a) + \alpha\delta_t E_t(s,a) \end{align} \]

    \(SARSA(\lambda)\)流程(Backward View版本)

    随机初始化\(Q(s,a)\),其中\(\mathcal{s\in S,a\in A(s)}\)

    重复(对所有序列)

    \(E(s,a) = 0\),其中\(\mathcal{s\in S,a\in A(s)}\)

    ​ 初始化\(S,A\)

    ​ 重复(对序列中的每一步)

    ​ 得到动作\(A\),可以观测到的\(R,S'\)

    ​ 基于\(Q\)(比如\(\epsilon\)-贪心算法)生成的策略以及状态\(S'\)得到动作\(A'\)

    \(\delta\leftarrow R+\gamma Q(S',A')-Q(S,A)\)(TD-error)

    \(E(S,A)\leftarrow E(S,A) + 1\)

    ​ 对于所有\(\mathcal{s\in S,a\in A(s)}\)

    \(Q(s,a) \leftarrow Q(s,a) + \alpha\delta E(s,a)\)

    \(E(s,a)\leftarrow \gamma\lambda E(s,a)\)

    \(S\leftarrow S';A\leftarrow A'\)

    ​ 直到\(S\)为终止状态

    [例子时间,基于gridWorld解释了有\(\lambda\)和无\(\lambda\)的区别]

    非基于策略学习(Off-Policy Learning)

    • 通过评价策略\(\pi(a|s)\)来计算\(v_\pi(s)\)或者\(q_\pi(s,a)\)

    • 当基于行为策略\(\mu(a|s)\)

      \[\{S_1,A_1,R_2,\dots,S_T\}\sim\mu \]

    • 为何这样做很重要呢?

    • 通过观察人类专家或者其他agent的作法学习

    • 重新利用基于旧策略\(\pi_1,\pi_2,\dots,\pi_{t-1}\)学到的记录

    • 从探索性的策略中学习最优策略

    • 从一个策略中学到复数个策略

    重要性采样(Importance Sampling)

    • 用于估算不同分布的期望

      \[\begin{align} \mathbb{E}_{X\sim P}[f(X)] & =\sum P(X)f(X)\\ & = \sum Q(X)\frac{P(X)}{Q(X)}f(X) \\ & = \mathbb{E}_{X\sim Q}\bigg[\frac{P(X)}{Q(X)}f(X)\bigg] \end{align} \]

    在非基于策略的蒙特卡罗中应用重要性采样

    • 利用从\(\mu\)中产生的返回回报去评价\(\pi\)

    • 基于策略之间的相似程度去决定返回回报\(G_t\)的权重

    • 对整个序列乘以一个重要性采样的修正指数

      \[G_t^{\pi/\mu}=\frac{\pi(A_t|S_t)\pi(A_{t+1}|S_{t+1})}{\mu(A_t|S_t)\mu(A_{t+1}|S_{t+1})}\cdots\frac{\pi(A_T|S_T)}{\mu(A_T|S_T)}G_t \]

    • 基于修正过的返回回报去更新价值函数

      \[V(S_t)\leftarrow V(S_t) + \alpha\bigg(\color{red}{G_t^{\pi/\mu}}-V(S_t)\bigg) \]

    • \(\mu\)等于\(0\)\(\pi\)为非零,则该方法无法使用

    • 重要性采样会显著地增加方差

    • 蒙特卡罗真的真的不好用,要用就用TD算法(David Silver语)

    在非基于策略的蒙特卡罗中应用重要性采样

    • 利用从\(\mu\)中产生的时序差分目标去评价\(\pi\)

    • 基于重要性采样去决定时序差分目标\(R+\gamma V(S')\)的权重

    • 只需进行一次一个重要性采样修正

      \[V(S_t)\leftarrow V(S_t) + \alpha\bigg( \color{red}{\frac{\pi(A_t|S_t)}{\mu(A_{t}|S_{t})}(R_{t+1} + \gamma V(S_{t+1}))} -V(S_t) \bigg) \]

    • 方差相比于重要性采样的蒙特卡罗要低得多

    • 因为策略只需要在一部内相似

    动作价值学习(Q-Learning)

    • 我们定义一个针对于动作-价值函数\(Q(s,a)\)的非基于策略学习

    • 完全不需要重要性采样

    • 基于行为策略去选择下一个动作\(A_{t+1}\sim \mu(\cdot |S_t)\)

    • 但是我们定义一个不一样的后继动作\(A'\sim \pi(\cdot|S_t)\)

    • 同时基于不一样的动作的价值去更新\(Q(S_t,A_t)\)

      \[Q(S_t,A_t)\leftarrow Q(S_t,A_t) + \alpha(\color{red}{R_{t+1} + \gamma Q(S_{t+1},A')}-Q(S_t,A_t)) \]

    非基于策略的Q-Learning

    • 现在我们允许行为策略与目标策略可以同时提升

    • 目标策略\(\pi\)是关于\(Q(s,a)\)的贪心算法

      \[\pi(S_{t+1})=\mathop{\arg\max}_{a'}Q(S_{t+1},a') \]

    • 而行为策略\(\mu\)则例如是关于\(Q(s,a)\)\(\epsilon\)-贪心算法

    • 那么动作价值学习的目标是简化

      \[\begin{align} & R_{t+1} + \gamma Q(S_{t+1},A')\\ = & R_{t+1} + \gamma Q(S_{t+1},\mathop{\arg\max}_{a'}Q(S_{t+1},a')) \\ = & R_{t+1} + \max_{a'}\gamma Q(S_{t+1},a') \end{align} \]

    Q-Learning算法(或称SARSAMAX)

    \[Q(S,A)\leftarrow Q(S,A)+ \alpha\bigg(R + \gamma \max_{a'}Q(S',a') - Q(S,A)\bigg) \]

    DP与TD的关系

    完全备份(DP) 采样备份(TD)
    求解\(v_\pi(s)\)的贝尔曼期望方程 迭代策略评价 时序差分学习
    求解\(q_\pi(s,a)\)的贝尔曼期望方程 Q-策略迭代 SARSA
    求解\(q_*(s,a)\)的贝尔曼最优方程 Q-价值迭代 动作价值学习
  • 相关阅读:
    20181113-2 每周例行报告
    20181030-4 每周例行报告
    20180925-5 代码规范,结对要求
    20181023-3 每周例行报告
    20181016-10 每周例行报告
    PSP总结报告
    作业要求 20181204-1 每周例行报告
    公开感谢
    附加作业 软件工程原则的应用实例分析
    作业要求 20181127-2每周例行报告
  • 原文地址:https://www.cnblogs.com/uzuki/p/14289927.html
Copyright © 2011-2022 走看看