最近在搞强化学习(Reinforcement Learning),打算把之前写的笔记整理一下

本文基于大卫 希尔维(David Silver)教授的强化学习概论课程,视频中所采用的样例学生马尔科夫链(Student MDPs)有时间再补上去

出处:https://www.youtube.com/watch?v=lfHX2hHRMVQ&list=PLqYmG7hTraZDM-OYHWgPebj2MfCFzFObQ&index=2

马尔科夫决策过程(MDP)概论

马尔科夫过程(Markov Process)

马尔科夫性(Markov Property)

马尔科夫性的定义为:

给定一个状态\(S_t\),当且仅当其满足条件

\[\mathbb{P}[S_{t+1}|S_t]=\mathbb{P}[S_{s+1}|S_1,\dots,S_t]
\]

那么称状态\(S_t\)具有马尔科夫性。

即当前状态包含了过去状态的一切影响与参数,无需知晓过去状态,通过当前状态即可描述出未来状态。

对于一个具有马尔科夫状态\(s\)以及其后继状态\(s'\),其状态转移概率(State Transition Probability)描述为

\[\mathcal{P}_{ss'}=\mathbb{P}[S_{t+1}=s'|S_t=s]
\]

状态转移矩概率矩阵\(\mathcal{P}\)描述了所有状态及其后继状态之间的状态转移概率

\[\qquad \qquad to\\
\mathcal{P} = from \begin{bmatrix}
\mathcal{P}_{11} & \dots & \mathcal{P}_{1n} \\
\vdots & & \vdots \\
\mathcal{P}_{n1} & \dots & \mathcal{P}_{nn}
\end{bmatrix}
\]

注意,因为符合归一化条件,每一行的和都为1

为此我们可以为马尔科夫过程给予定义

马尔科夫过程(Markov Process)

马尔科夫过程即是一个由一系列具有马尔科夫性的随机状态\(S_1,S_2,\dots\)所组成的序列,因此马尔科夫过程也被称为无后效性的随机过程。

定义:

一个马尔科夫过程(Markov Process),也被称为马尔科夫链(Markov Chain)为一个二元组\((\mathcal{S},\mathcal{P})\)

  • \(\mathcal{S}\)为一个有限状态集
  • \(\mathcal{P}\)为状态转移概率矩阵
    • \(\mathcal{P}_{ss'}=\mathbb{P}[S_{t+1}=s'|S_t=s]\)

[这里是例子]

马尔科夫回报过程(Markov Reward Process)

马尔科夫回报过程基于马尔科夫过程,拓展了回报这一属性

其定义为:

一个马尔科夫回报过程(Markov Reward Process),为一个四元组\((\mathcal{S},\mathcal{P},\mathcal{R},\mathcal{\gamma})\)

  • \(\mathcal{S}\)为一个有限状态集

  • \(\mathcal{P}\)为状态转移概率矩阵

    • \(\mathcal{P}_{ss'}=\mathbb{P}[S_{t+1}=s'|S_t=s]\)
  • \(\mathcal{R}\)为一个回报函数,\(\mathcal{R}_s=\mathbb{E}[R_{t+1}|S_t=s]\)

  • \(\mathcal{\gamma}\)为一个衰退因子,\(\mathcal{\gamma}\in[0,1]\)

[这里是例子]

给予指定一个时间\(t\),我们自然而然所关注的是取得的返回回报\(G_t\)

对于时间\(t\),\(G_t\)的定义如下:

\[G_t = R_{t+1} + \gamma R_{t+2} + \cdots=\sum_{k=0}^{\infty}R_{t+k+1}
\]

\(\mathcal{\gamma}\)作为一个衰退因子,\(\mathcal{\gamma}\in[0,1]\),决定了相对于目前的未来回报

为何要引入衰退因子\(\gamma\)

  • 纯粹为了方便数学模型的计算
  • 避开循环马尔科夫链出现的无穷值
  • 模型对于未来的变化没有百分百的把握
  • 如果考虑经济学效益,那么时间更早的回报自然而然权重要高于晚来的回报
  • 如果考虑仿生学模型,决策应该更加注重眼前的利益
  • 当然并不排除使用无衰退因子的马尔科夫回报过程,即\(\mathcal{\gamma}=1\)来达到整个序列的边界

价值函数(Value Function)

价值函数\(v(s)\)揭示了状态\(s\)的长期回报

定义:

对于一个马尔科夫回报过程的价值函数\(v(s)\),即是从状态\(s\)开始的期望返回回报

\[v(s)=\mathbb{E}[G_t|S_t=s]
\]

[总之这里是例子]

马尔科夫回报过程的贝尔曼方程(Bellman Equation)

价值函数\(v(s)\)可以分解为两个部分:

  • 当前回报\(R_{t+1}\)
  • 后续状态的衰退价值\(\mathcal{\gamma} v(S_{t+1})\)
\[\begin{align}
v(s) & =\mathbb{E}[G_t|S_t=s]\\
& =\mathbb{E}[R_{t+1}+\gamma R_{t+2} + \gamma^2R_{t+3}+\dots|S_t=s]\\
& =\mathbb{E}[R_{t+1}+\gamma (R_{t+2} + \gamma R_{t+3}+\dots)|S_t=s]\\
& =\mathbb{E}[R_{t+1}+\gamma G_{t+1}|S_t=s]\\
& =\mathbb{E}[R_{t+1}+\gamma v(S_{t+1})|S_t=s]\\
\end{align}
\]

最后我们得到的等式:

\[v(s) =\mathbb{E}[G_t|S_t=s] =\mathbb{E}[R_{t+1}+\gamma v(S_{t+1})|S_t=s]
\]

就称为马尔科夫回报过程的贝尔曼方程(Bellman Equation)

如果我们再把状态转移概率代入贝尔曼方程中,得到更加具体的贝尔曼方程形式

\[v(s) = R_{s}+\gamma\sum_{s'\in S}\mathcal{P}_{ss'}v(s')
\]

同样地,贝尔曼方程还拥有一个更加简洁的矩阵形式

\[v=\mathcal{R} + \gamma\mathcal{P}v
\]

其中\(v\)是一个排列着所有状态的列向量

\[\begin{bmatrix}
v(1) \\ \vdots \\ v(r)
\end{bmatrix}
=
\begin{bmatrix}
\mathcal{R}_1 \\ \vdots \\ \mathcal{R}_n
\end{bmatrix}
+
\gamma
\begin{bmatrix}
\mathcal{P}_{11} & \dots & \mathcal{P}_{1n} \\
\vdots & & \vdots \\
\mathcal{P}_{n1} & \dots & \mathcal{P}_{nn}
\end{bmatrix}
\begin{bmatrix}
v(1) \\ \vdots \\ v(r)
\end{bmatrix}
\]

显然,马尔科夫回报过程的贝尔曼方程是一个线性方程。为此,我们可以直接写出它的闭式解:

\[\begin{align}
v & = \mathcal{R} + \gamma\mathcal{P}v \\
(1-\gamma\mathcal{P})v & = \mathcal{R} \\
v & = (1-\gamma\mathcal{P})^{-1}\mathcal{R}
\end{align}
\]
  • 时间复杂度:对于\(n\)个状态,\(O(n^3)\)
  • 适合用于直接解小规模的马尔科夫回报过程
  • 除此之外还有其他迭代式的方法去解大规模的马尔科夫回报过程
    • 动态规划
    • 蒙特卡洛规划
    • Temporal-Difference(TD)学习

马尔科夫决策过程(Markov Decision Process)

马尔科夫决策过程基于马尔科夫回报过程,拓展了决策这一属性

其定义为:

一个马尔科夫回报过程(Markov Reward Process),为一个五元组\((\mathcal{S},\mathcal{A},\mathcal{P},\mathcal{R},\mathcal{\gamma})\)

  • \(\mathcal{S}\)为一个有限状态集
  • \(\mathcal{A}\)为一个有限决策集​
  • \(\mathcal{P}\)为状态转移概率矩阵
    • \(\mathcal{P}^a_{ss'}=\mathbb{P}[S_{t+1}=s'|S_t=s,A_t=a]\)
  • \(\mathcal{R}\)为一个回报函数,\(\mathcal{R}^a_s=\mathbb{E}[R_{t+1}|S_t=s,A_t=a]\)
  • \(\mathcal{\gamma}\)为一个衰退因子,\(\mathcal{\gamma}\in[0,1]\)

[这里是例子]·

策略(Policies)

策略的定义:

一个策略\(\pi\)是指定动作决定状态的一个分布

\[\pi(a|s) = \mathbb{P}[A_t=a|S_t=s]
\]
  • 策略决定了我们agent(真心不知道怎么翻译)的行为

  • 显然马尔科夫决策过程的策略仅仅取决于当前状态

  • 马尔科夫决策过程是静态的(不随时间变化而变化)

    i.e \(A_t\sim\pi(\cdot|S_t)\quad\forall t\gt 0\)

  • 对于给定马尔科夫决策过程\(\mathcal{M} = \left \langle \mathcal{S,A,P,R,\gamma}\right \rangle\)以及策略\(\pi\)

  • 对于一个状态序列\(S_1,S_2,\dots\),为一个马尔科夫过程\(\left \langle \mathcal{S,P^\pi} \right \rangle\)

  • 对于一个状态与回报序列\(S_1,R_2,S_2,\dots\),为一个马尔科夫回报过程\(\left \langle \mathcal{S,P^\pi,R^\pi,\gamma} \right \rangle\)

  • 其中:

    \[\begin{align}
    \mathcal{P}^\pi_{s,s'} & = \sum_{a\in A}\pi(a|s)\mathcal{P^a_{s,s'}}\\
    \mathcal{R}^\pi_{s} & = \sum_{a\in A}\pi(a|s)\mathcal{R^a_{s}}
    \end{align}
    \]

价值函数(Value Function)

定义:

对于一个马尔科夫决策过程的状态-价值函数(state-value function)\(v_\pi(s)\),即是从状态\(s\)开始以及采用的策略\(\pi\)的期望返回回报

\[v(s)_\pi=\mathbb{E}_\pi[G_t|S_t=s]
\]

定义:

对于一个马尔科夫决策过程的动作-价值函数(action-value function)\(q_\pi(s,a)\),即是从状态\(s\)开始,采取动作\(a\)以及采用的策略\(\pi\)的期望返回回报

\[q_\pi(s,a)=\mathbb{E}_\pi[G_t|S_t=s, A_t=a]
\]

[总之这里是例子]

贝尔曼期望方程(Bellman Expectation Equation)

一个状态-价值函数能够拆分为即时回报以及后续状态经过衰退的价值

\[v_\pi(s) = \mathbb{E}_\pi[R_{t+1} + \gamma v_\pi(S_{t+1})|S_t=s]
\]

一个动作-价值函数同理

\[q_\pi(s,a) = \mathbb{E}_\pi[R_{t+1} + \gamma q_\pi(S_{t+1},A_{t+1})|S_t=s,A_t=a]
\]

\(V^\pi\)

\[v_\pi(s) = \sum_{a\in \mathcal{A}}\pi(a|s)q_\pi(s,a)
\]

\(Q^\pi\)

\[q_\pi(s,a) = \mathcal{R^a_s + \gamma\sum_{s'\in S}P^a_{ss'}v_\pi(s')}
\]

\(v_\pi\)

将\(V\)和\(Q\)结合起来,我们得到\(v_\pi\)的递归形式:

\[v_\pi(s) = \sum_{a\in\mathcal{A}}\pi(a|s)\Big(\mathcal{R+ \gamma\sum_{s'\in S}P_{ss'}^a v_\pi(s')}\Big)
\]

$ q_\pi$

将\(V\)和\(Q\)结合起来,我们得到\(q_\pi\)的递归形式:

\[q_\pi(s,a) = \mathcal{R^a_s + \gamma\sum_{s'\in S}P^a_{ss'}\sum\pi(a'|s')q_\pi(s',a')}
\]

[总之这里是一个例子 ]

贝尔曼期望方程的矩阵形式

贝尔曼期望方程很容易就可以通过马尔科夫回报过程诱导出来

\[v_\pi = \mathcal{R^\pi + \gamma P^\pi v_\pi}
\]

从而直接获得一个闭式解

\[v_\pi = \mathcal{(1-\gamma P^\pi)^{-1}R^\pi}
\]

最优价值函数(Optimal State-action Function)

对于一个最优状态-价值函数(optimal state-value function)\(v_*(s)\),即是一个在全部策略中选取最大的价值函数

\[v_*(s) = \max_\pi v_\pi(s)
\]

而对于一个最优动作-价值函数(optimal action-value function)\(q_*(s, a)\),即是一个在全部策略中选取最大的动作-价值函数

\[q_*(s, a) = \max_\pi q_\pi(s,a)
\]

最优价值函数是马尔科夫决策过程的最优可能表现

  • \(v_\pi\)是对长期回报的描述
  • \(q_\pi(s,a)\)是对下一步最优行动的描述

如果我们知道最优值fn,那么马尔科夫决策过程就成功被“求解”了

[总之这里又是一个例子]

最优策略(Optimal Policy)

我们定义一个策略的偏序关系,以表现策略之间的大小关系

\[\pi\ge\pi'\quad if \quad v_\pi(s) \ge v_{\pi'},\forall s
\]

原理:

对于一切马尔科夫决策过程

  • 必定存在一个策略\(\pi\)高于或者等于其他一切的策略,i.e. \(\pi_* \ge \pi,\forall \pi\)
  • 最优策略必定是最优状态-价值函数,i.e. \(v_{\pi_*}(s) = v_*(s)\)
  • 最优策略必定是最优动作-价值函数,i.e. \(q_{\pi_*}(s,a) = v_*(s,a)\)

求解最优策略

最大化\(q_*(s,a)\)可以找到一个最优策略

\[\pi_8(a|s) = \Bigg \{
\begin{align}
1 & \quad if \quad a = \mathop{\arg\max}_{a\in A} q_*(s,a)
\\
0 & \quad otherwise
\end{align}
\]
  • 如何一个马尔科夫决策过程都必定具有一个确定的最优策略
  • 只要求解出了\(q_*(s,a)\),我们立即就能求出最优策略

贝尔曼最优方程(Bellman Optimality Equation)

\(v_*\)

最优状态-价值函数之间通过贝尔曼最优方程递归地进行相关

\[v_*(s) = \max_a q_*(s,a)
\]

\(q_*\)

\[q_*(s,a)=\mathcal{R^a_s+\gamma\sum_{s'\in S} P^a_{ss'} v_*(s')}
\]

\(V^*\)

我们把上述两个价值函数结合在一起,从而得到可解决的方程

\[v_*(s) = \max_a \mathcal{R^a_s + \gamma \sum_{s'\in S} P^a_{ss'} v_*(s')}
\]

\(Q^*\)

\[q_*(s,a) = \mathcal{R^a_s + \gamma \sum_{s'\in S}P^a_{ss'}\max_{a'}q_*(s',a')}
\]

求解贝尔曼最优方程

必须指出:

  • 贝尔曼最优方程是非线性的
  • 一般情况下是不存在闭式解的
  • 存在许多迭代求解方式
    • 价值递归
    • 策略递归
    • Q-learning
    • Sarsa

拓展

  • 无限/连续马尔科夫决策过程
  • 部分可测的马尔科夫决策过程
  • 不衰退,平均回报的马尔科夫决策过程

机器学习 | 强化学习(1) | 马尔科夫决策过程(MDP)概论的更多相关文章

  1. 强化学习 1 --- 马尔科夫决策过程详解(MDP)

    强化学习 --- 马尔科夫决策过程(MDP) 1.强化学习介绍 ​ 强化学习任务通常使用马尔可夫决策过程(Markov Decision Process,简称MDP)来描述,具体而言:机器处在一个环境 ...

  2. 强化学习(二)马尔科夫决策过程(MDP)

    在强化学习(一)模型基础中,我们讲到了强化学习模型的8个基本要素.但是仅凭这些要素还是无法使用强化学习来帮助我们解决问题的, 在讲到模型训练前,模型的简化也很重要,这一篇主要就是讲如何利用马尔科夫决策 ...

  3. 【转载】 强化学习(二)马尔科夫决策过程(MDP)

    原文地址: https://www.cnblogs.com/pinard/p/9426283.html ------------------------------------------------ ...

  4. 机器学习理论基础学习13--- 隐马尔科夫模型 (HMM)

    隐含马尔可夫模型并不是俄罗斯数学家马尔可夫发明的,而是美国数学家鲍姆提出的,隐含马尔可夫模型的训练方法(鲍姆-韦尔奇算法)也是以他名字命名的.隐含马尔可夫模型一直被认为是解决大多数自然语言处理问题最为 ...

  5. 【强化学习】MOVE37-Introduction(导论)/马尔科夫链/马尔科夫决策过程

    写在前面的话:从今日起,我会边跟着硅谷大牛Siraj的MOVE 37系列课程学习Reinforcement Learning(强化学习算法),边更新这个系列.课程包含视频和文字,课堂笔记会按视频为单位 ...

  6. 机器学习中的隐马尔科夫模型(HMM)详解

    机器学习中的隐马尔科夫模型(HMM)详解 在之前介绍贝叶斯网络的博文中,我们已经讨论过概率图模型(PGM)的概念了.Russell等在文献[1]中指出:"在统计学中,图模型这个术语指包含贝叶 ...

  7. 强化学习(一)—— 基本概念及马尔科夫决策过程(MDP)

    1.策略与环境模型 强化学习是继监督学习和无监督学习之后的第三种机器学习方法.强化学习的整个过程如下图所示: 具体的过程可以分解为三个步骤: 1)根据当前的状态 $s_t$ 选择要执行的动作 $ a_ ...

  8. 用hmmlearn学习隐马尔科夫模型HMM

    在之前的HMM系列中,我们对隐马尔科夫模型HMM的原理以及三个问题的求解方法做了总结.本文我们就从实践的角度用Python的hmmlearn库来学习HMM的使用.关于hmmlearn的更多资料在官方文 ...

  9. 隐马尔科夫模型HMM学习最佳范例

    谷歌路过这个专门介绍HMM及其相关算法的主页:http://rrurl.cn/vAgKhh 里面图文并茂动感十足,写得通俗易懂,可以说是介绍HMM很好的范例了.一个名为52nlp的博主(google ...

  10. 机器学习&数据挖掘笔记_19(PGM练习三:马尔科夫网络在OCR上的简单应用)

    前言: 接着coursera课程:Probabilistic Graphical Models上的实验3,本次实验是利用马尔科夫网络(CRF模型)来完成单词的OCR识别,每个单词由多个字母组合,每个字 ...

随机推荐

  1. node 生成api文档 使用apidoc

    先给大家看一下使用apidoc生成文档之后的视图,如果是所需的样子,可以继续往下看, 开始操作 1. 需要全局安装apidoc npm i apidoc -g 2. 生成配置文件 两种方法(用哪个都可 ...

  2. jQuery 国内 CDN

    eShop 中使用了 cdnjs ,由于网络问题,导致编译失败 可以使用如下国内链接: https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.mi ...

  3. 所有 HTML attribute - prop 对照表

    attr global tags prop aria-activedescendant true all   aria-atomic true all   aria-autocomplete true ...

  4. 【Java】【Maven】002 修改maven仓库的路径与配置阿里云镜像仓库

    [Java][Maven]001 下载与配置环境 - 萌狼蓝天 - 博客园 (cnblogs.com/mllt) 修改maven仓库的路径 maven指定的本地仓库的默认位置是在c盘,默认在:C:\U ...

  5. Qt/C++音视频开发48-推流到rtsp服务器

    一.前言 之前已经打通了rtmp的推流,理论上按照同样的代码,只要将rtmp推流地址换成rtsp推流地址,然后格式将flv换成rtsp就行,无奈直接遇到协议不支持的错误提示,网上说要换成rtp,换了也 ...

  6. Qt数据库应用21-数据分组导出

    一.前言 数据分组导出和打印这个需求并不是近期的需求,而是之前做温湿度监控系统的时候提的需求,当然也有几个系统用到了,比如啤酒保鲜监控系统.这个需求的应用场景是,有很多个设备,每个设备都产生了很多的运 ...

  7. Qt开源作品10-代码统计组件

    一.前言 代码行数统计主要用来统计项目中的所有文件的代码行数,其中包括空行.注释行.代码行,可以指定过滤拓展名,比如只想统计.cpp的文件,也可以指定文件或者指定目录进行统计.写完这个工具第一件事情就 ...

  8. WIN10删除文件时提示“找不到该项目,该项目不在......中,请确认该项目的位置,然后重试”的解决办法

    问题描述: 最近有部分WIN10用户在删除文件时提示"找不到该项目,该项目不在......中,请确认该项目的位置,然后重试". 解决办法: 1.首先新建一个TXT文档(为了方便使用 ...

  9. 理解IM消息“可靠性”和“一致性”问题,以及解决方案探讨

    本文作者"商文默",本次有修订和改动. 1.写在前面 即时通讯网整理的大量IM技术文章中(见本文末"参考资料"一节),有关消息可靠性和一致性问题的文章占了很大比 ...

  10. blip2代码解析

    请你作为一个代码翻译解释生成器,下面我会发送一个github链接给你,请你详细解析与介绍这个链接下代码 好的,请发送链接. https://github.com/huggingface/transfo ...