Dictum:



 Is the true wisdom fortitude ambition. -- Napoleon


马尔可夫决策过程(Markov Decision Processes, MDPs)是一种对序列决策问题的解决工具,在这种问题中,决策者以序列方式与环境交互。

“智能体-环境”交互的过程

首先,将MDPs引入强化学习。我们可以将智能体和环境的交互过程看成关于离散情况下时间步长\(t(t=0,1,2,3,\ldots)\)的序列:\(S_0,A_0,R_1,S_1,A_1,R_2,S_2,A_2,R_3,\ldots\),可以定义动作空间\(\mathcal{S}\)为所有动作的集合,定义状态空间\(\mathcal{A}\)为所有状态的集合。

马尔可夫决策过程

马尔可夫性

当且仅当状态满足下列条件,则该状态具有马尔科夫性

\[\mathbb{P}[S_{t+1}|S_t\ ]=\mathbb{P}[S_{t+1} |S_1,…,S_t] \tag{2.1}
\]

也就是说,未来状态只与当前状态有关,是独立于过去状态的。即当前状态捕获了所有历史状态的相关信息,是对未来状态的充分统计,因此只要当前状态已知,就历史状态就可以被丢弃。

动态特性

根据这个性质,我们可以写出状态转移概率\(\mathcal{P}_{ss^\prime}=\mathbb{P}[S_{t+1}=s^\prime\ |S_t=s]\)

由此可以得到状态转移矩阵\(\mathcal{P}\):

\[\mathcal{P} = from
\begin{matrix}
to \\
\left[\begin{array}{rr}
\mathcal{P}_{11} & \cdots & \mathcal{P}_{1n} \\
\vdots & \ddots & \vdots \\
\mathcal{P}_{n1} & \cdots & \mathcal{P}_{nn} \\
\end{array}\right]
\end{matrix} \tag{2.2}
\]

(该矩阵中所有元素之和为1)

我们将函数\(p\)定义为MDP的动态特性,通常情况下\(p\)是一个包含四个参数的确定函数(\(p: \mathcal{S}\times\mathcal{A}\times\mathcal{S}\times\mathcal{R}\rightarrow[0,1]\)):

\[p(s^\prime,r|s,a)\doteq\Pr\{S_t=s^\prime,R_t=r|S_{t-1}=s,A_{t-1}=a\} \tag{2.3}
\]

或者,我们可以定义一个三个参数的状态转移概率\(p\)(\(p: \mathcal{S}\times\mathcal{S}\times\mathcal{A}\rightarrow[0,1]\)):

\[p(s^\prime|s,a)\doteq\Pr\{S_t=s^\prime|S_{t-1}=s,A_{t-1}=a\}= \sum_{r \in \mathcal{R}}p(s^\prime,r|s,a) \tag{2.4}
\]

由此,可以定义“状态-动作”二元组的期望奖励\(r(r:\mathcal{S}\times\mathcal{A}\rightarrow\mathbb{R})\):

\[r(s,a)\doteq\mathbb{E}[R_t|S_{t-1}=s,A_{t-1}=a]=\sum_{r\in\mathcal{R}}r\sum_{s^\prime\in\mathcal{S}}p(s^\prime,r|s,a) \tag{2.5}
\]

也可以定义“状态-动作-后继状态”三元组的期望奖励\(r(r:\mathcal{S}\times\mathcal{A}\times\mathcal{S}\rightarrow\mathbb{R})\):

\[r(s,a,s^\prime)\doteq\mathbb{E}[R_t|S_{t-1}=s,A_{t-1}=a,S_t=s^\prime]=\sum_{r\in\mathcal{R}}r\frac{p(s^\prime,r|s,a)}{p(s^\prime|s,a)} \tag{2.6}
\]

价值函数

回报

回报(Return)的定义式为

\[G_t\doteq\displaystyle \sum^{T}_{k=t+1}\gamma^{k-t-1}R_k,\ 0\le\gamma \le 1 \tag{2.7}
\]

\(\gamma\)被称为折扣率(discount rate)。当\(T= \infin\)且\(0 \le \gamma<1\)时,强化学习任务被称为连续任务(continuing tasks),当\(\gamma=1\)且\(T\ne\infin\)时,强化学习任务被称为幕式任务(episodic tasks)

episodic tasks的智能体和环境的交互过程能够被拆分为一系列的子序列。在这类任务中,当时间步长\(t\)达到某个值\(T\)时,会产生终止状态(terminal state)。这种状态下,对于任意\(k>1,S_{T+k}=S_T=s\)恒成立,此时,\(T\)被称为终止时刻,它随着幕(episode)的变化而变化。从起始状态到达终止状态的每个子序列被称为幕。

策略

策略(Policy)\(\pi\)是状态到动作空间分布的映射

\[\pi(a|s)= \mathbb{P}[A_t=a|S_t=s] \tag{2.8}
\]

它表示根据当前状态\(s\),执行动作\(a\)的概率。

状态价值函数

状态价值函数(State-value Function)\(v_\pi(s)\)定义为从状态\(s\)开始,执行策略\(\pi\)所获得的回报的期望值。

\[v_\pi(s) \doteq \mathbb{E}_\pi[G_t|S_t=s]=\mathbb{E}[\sum^\infin_{k=0} \gamma^kR_{t+k+1}|S_t=s], s \in \mathcal{S} \tag{2.9}
\]

动作价值函数

类似于公式\((2.9)\)的定义,将动作价值函数(Action-value Function)\(q_\pi(s,a)\)定义为在状态\(s\)时采取动作\(a\)后,所有可能的决策序列的期望回报。

\[q_\pi(s,a) \doteq \mathbb{E}_\pi[G_t|S_t=s,A_t=a]=\mathbb{E}[\sum^\infin_{k=0} \gamma^kR_{t+k+1}|S_t=s,A_t=a], s \in \mathcal{S} \tag{2.10}
\]

贝尔曼方程

贝尔曼方程(Bellman Euqation)是以等式的方式表示某一时刻价值与期后继时刻价值之间的递推关系。

下面给出状态价值函数\(v_\pi(s)\)的贝尔曼方程:

\[\begin{aligned}
v_\pi(s)
& \doteq \mathbb{E}_\pi[G_t|S_t=s] \\
& =\mathbb{E}_\pi[R_{t+1}+ \gamma G_{t+1}|S_t=s] \\
& =\displaystyle \sum_a\pi(a|s) \sum_{s^\prime} \sum_rp(s^\prime,r|s,a)[r+\gamma \mathbb{E}_\pi[G_{t+1}|S_{t+1}=s^\prime]] \\
& =\displaystyle \sum_a\pi(a|s) \sum_{s^\prime.r} p(s^\prime,r|s,a) [r+\gamma v_\pi(s^\prime)]
\end{aligned} \tag{2.11}
\]

可以通过下面关于\(v_\pi(s)\)的回溯图(backup diagram)更好地理解上述方程,backup就是将价值信息从后继状态(或“状态-动作”二元组)转移到当前状态(或“状态-动作”二元组)。

在上图中,由上往下看,空心圆表示状态,实心圆表示“状态-动作”二元组。图中,从根节点状态\(s\)开始,智能体根据策略\(\pi\)采取动作集合中的任意动作,对于每个动作,环境会根据它的动态特性函数\(p\),给出奖励值\(r\)和后继状态\(s^\prime\)。

同样也可以通过\(q_\pi\)的回溯图得到它的贝尔曼方程(同时也给出推导过程):

\[\begin{aligned}
q_\pi(s,a)
& \doteq \mathbb{E}_\pi[G_t|S_t=s,A_t=a] \\
& =\mathbb{E}_\pi[R_{t+1}|S_t=s,A_t=a]+ \gamma \mathbb{E}_\pi[G_{t+1}|S_t=s,A_t=a] \\
& =\displaystyle \sum_{s^\prime,r}p(s^\prime,r|s,a)r+ \gamma \sum_{s^\prime,r}p(s^\prime,r|s,a) \sum_{a^\prime}\pi(a^\prime|s^\prime) \mathbb{E}_\pi[G_{t+1}|S_{t+1}=s^\prime,A_{t+1}=a^\prime] \\
& =\displaystyle \sum_{s^\prime,r}p(s^\prime,r|s,a)[r+ \gamma \sum_{a^\prime}\pi(a^\prime|s^\prime)q_\pi(s^\prime,a^\prime)]
\end{aligned} \tag{2.12}
\]

价值函数的相互转换

从定义的角度,我们更容易理解\(v_\pi(s)\)和\(q_\pi(s,a)\)的关系。我们可以将\(q_\pi(s,a)\)理解为执行策略后选取动作空间中一个动作所得到的价值函数,而将\(v_\pi(s)\)理解为执行策略后选择动作空间中所有动作所得到的价值函数。\(v_\pi\)其实就是\(q_\pi\)基于策略\(\pi\)的期望值,所以它们的关系转换如下:

\[v_\pi(s)= \sum_a \pi(a|s)q_\pi(s,a) \tag{2.13}
\]

它的回溯图如下图所示:

也可以按照下面的回溯图写出状态价值函数到动作价值函数的转换:

\[q_\pi(s,a) =\displaystyle \sum_{s^\prime,r}[r+ \gamma v_\pi(s^\prime)] \tag{2.14}
\]

最优策略和最优价值函数

最优策略

智能体的目标就是找出一种策略,能够最大化它的长期奖励,这个策略就是最优策略(optimal policy),记作\(\pi_*\)。公式表示如下:

\[\forall s \in \mathcal{S}, \exist \pi_* \ge \pi, v_{\pi_*}(s) \ge v_\pi(s) \tag{2.15}
\]

也可以将上式的状态价值函数替换为动作价值函数,它们在寻找最优策略上是等价的。

最优价值函数

最优状态价值函数可以定义为

\[v_*(s) \doteq \max_\pi v_\pi(s) \tag{2.16}
\]

\(v_*(s)\)的贝尔曼最优方程为

\[v_*(s)=\displaystyle \max_a \sum_{s^\prime.r} p(s^\prime,r|s,a) [r+\gamma v_*(s^\prime)] \tag{2.17}
\]

最优动作价值函数可以定义为

\[q_*(s,a) \doteq \max_\pi q_\pi(s,a) \tag{2.18}
\]

\(q_*(s,a)\)的贝尔曼最优方程为

\[q_*(s,a)=\displaystyle \sum_{s^\prime,r}p(s^\prime,r|s,a)[r+ \gamma \max_{a^\prime} q_*(s^\prime,a^\prime)] \tag{2.19}
\]

下图展示了\(v_*(s)\)和\(q_*(s,a)\)的贝尔曼最优方程的回溯图(弧线表示在给定策略下取最大值而不是期望值)

后续概念

强化学习的方法

强化学习方法可以分为基于模型的(model-based)和不基于模型的(model-free),二者之间的区别在于是否有完备的环境知识,若存在MDP中的状态转移概率矩阵\(\mathcal{P}\),且能得到相应的奖励\(\mathcal{R}\),则是基于模型的;否则,是不基于模型的。

强化学习的问题

一般来说,强化学习问题可以分为两步:一、预测问题——给定强化学习的相关要素,评估价值函数;二、控制问题——求解最优价值函数和最优策略。

FAQ

  1. Q:如果当前状态是\(S_t\),并根据随机策略\(\pi\)选择动作,那么如何用\(\pi\)和四参数\(p\)表示\(R_{t+1}\)的期望?

    A:\(\mathbb{E}_\pi[R_{t+1}|S_t=s]=\displaystyle \sum_a\pi(a|s) \sum_{s^\prime,r}rp(s^\prime,r|s,a)\)

References

Richard S. Sutton and Andrew G. Barto. Reinforcement Learning: An Introduction (Second Edition). 2018.

Csaba Szepesvári. Algorithms for Reinforcement Learning. 2009.

Course: UCL Reinforcement Learning Course (by David Silver)

Ⅱ Finite Markov Decision Processes的更多相关文章

  1. Markov Decision Processes

    为了实现某篇论文中的算法,得先学习下马尔可夫决策过程~ 1. https://leonardoaraujosantos.gitbooks.io/artificial-inteligence/conte ...

  2. Step-by-step from Markov Process to Markov Decision Process

    In this post, I will illustrate Markov Property, Markov Reward Process and finally Markov Decision P ...

  3. Markov Decision Process in Detail

    From the last post about MDP, we know the environment consists of 5 basic elements: S:State Space of ...

  4. 强化学习二:Markov Processes

    一.前言 在第一章强化学习简介中,我们提到强化学习过程可以看做一系列的state.reward.action的组合.本章我们将要介绍马尔科夫决策过程(Markov Decision Processes ...

  5. 《Network Security A Decision and Game Theoretic Approach》阅读笔记

    网络安全问题的背景 网络安全研究的内容包括很多方面,作者形象比喻为盲人摸象,不同领域的网络安全专家对网络安全的认识是不同的. For researchers in the field of crypt ...

  6. Multi-shot Pedestrian Re-identification via Sequential Decision Making

    Multi-shot Pedestrian Re-identification via Sequential Decision Making 2019-07-31 20:33:37 Paper: ht ...

  7. POMDP

    本文转自:http://www.pomdp.org/ 一.Background on POMDPs We assume that the reader is familiar with the val ...

  8. MR for Baum-Welch algorithm

    The Baum-Welch algorithm is commonly used for training a Hidden Markov Model because of its superior ...

  9. Machine Learning and Data Mining(机器学习与数据挖掘)

    Problems[show] Classification Clustering Regression Anomaly detection Association rules Reinforcemen ...

随机推荐

  1. docker 部署 zabbix

    docker部署zabbix   我相信大家都已经会再物理机上跑zabbix并且监控了,那么有没有想过在docker中跑zabbix?下面咱们来看看如何在docker中搭建zabbix并且监控 部署环 ...

  2. PE安装window 10操作系统

    一.进入bios,通过u盘启动 1. 在bios中选择U盘启动 2. 选择第二选项,如果是老机器,就选择03或者04 二.进入PE操作系统后: 打开桌面上的Ghost手动工具,点击OK 依次点击loc ...

  3. 阿里云mysql安装

    阿里云上安装mysql还是遇到些问题,感觉不是傻瓜式一键安装,还是写个帖子以后看 1.安装 https://yq.aliyun.com/articles/47237 启动mysql的时候报了问题 My ...

  4. powershell编程实例-001-生成指定大小的null/zero文件或随机文件

    NULL文件,也有的称为zero文件,即全是二进制/十六进制的0文件 在powershell 中可以按如下方法生成指定大小的zero文件: 只需要修改大小即可,格式如3MB,或者2GB $tempFi ...

  5. 面经手册 · 第12篇《面试官,ThreadLocal 你要这么问,我就挂了!》

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 说到底,你真的会造火箭吗? 常说面试造火箭,入职拧螺丝.但你真的有造火箭的本事吗,大 ...

  6. php基础复习

    基础捡漏: 1.短标记<??> 通过修改ini文件的short_open_tag或编译时 --enable-short-tags 可用 不推荐使用. 2.?>默认有隐藏分号结束,而文 ...

  7. win10病毒和威胁防护无法重新启动解决方法

    1.检查电脑中是否安装了任何的第三方反病毒软件 (例如 360.腾讯电脑管家等)?如果有的话,麻烦您将其卸载,卸载完毕后重启设备,再看一下病毒和威胁防护能否正常启动:2.按 "Windows ...

  8. python数据结构实现(栈和链栈)

    栈 class Stack: def __init__(self, limit: int 10): self.stack = [] self.limit = limit def __bool__(se ...

  9. 基于vue2定义自己的图表echart组件

    先安装echarts cnpm i echarts -S,然后定义父组件 <template> <div> <echarts :option="echartOp ...

  10. 记一次数据库主从导致严重的bug解决过程

    1.事情起始: 我们每个月要给商家进行出账,所以有定时任务去跑商家的订单和售后进行出账,这个功能已经上线很久了,代码执行多次都没问题,突然有一天,产品找我说出现bug了: 这时,去生产库查询重复的订单 ...