David Silver 增强学习——Lecture 2 马尔可夫决策过程

David Silver 增强学习——Lecture 2 马尔可夫决策过程

其他lecture

【1】搬砖的旺财:David Silver 增强学习——笔记合集(持续更新)

【2】搬砖的旺财:David Silver 增强学习——Lecture 1 强化学习简介

【3】搬砖的旺财:David Silver 增强学习——Lecture 3 动态规划

【4】搬砖的旺财:David Silver 增强学习——Lecture 4 不基于模型的预测

【5】搬砖的旺财:David Silver 增强学习——Lecture 5 不基于模型的控制

【6】搬砖的旺财:David Silver 增强学习——Lecture 6 值函数逼近

【7】搬砖的旺财:David Silver 增强学习——Lecture 7 策略梯度算法(一)

【8】

【9】搬砖的旺财:David Silver 增强学习——Lecture 7 策略梯度算法(三)




一、前言

马尔可夫决策过程(Markov Decision Processes,MDPs)是对强化学习问题的数学描述,要求环境是全观测的。

几乎所有的RL问题都能用MDPs来描述:

最优控制问题可以描述成连续MDPs
部分观测环境可以转化成POMDPs
赌博机问题是只有一个状态的MDPs。

1.1、数学规范

  • 用大写字母表示随机变量: S,A,R 等;
  • 用小写字母表示某一个具体的值: s,a,r 等;
  • 用空心字母表示统计运算符:{\Bbb E},{\Bbb P} 等;
  • 用花体字母表示集合或函数:{\cal S},{\cal A},{\cal P} 等;

1.2、马尔可夫性

  • David Silver的定义:如果在  t 时刻的状态  S_t 满足如下等式,那么这个状态被称为马尔可夫状态,或者说该状态满足马尔可夫性—— {\Bbb P}\left[ S_{t+1}|S_t \right]={\Bbb P}\left[ S_{t+1}|S_1,S_2,...,S_t \right]
  • 状态 S_t 包含了所有历史相关信息,或者说历史的所有状态的相关信息都在当前状态 S_t 上体现出来,一旦 S_t 知道了,那么 S_1,S_2,...,S_{t−1} 都可以被抛弃,数学上可以认为:状态是将来的充分统计量。因此,这里要求环境全观测
  • 示例
下棋时,只用关心当前局面 打俄罗斯方块时,只用关心当前屏幕

1.3、状态转移矩阵

状态转移概率,指的是从一个马尔可夫状态 s 跳转到后继状态 s^{′} 的概率: {\cal P}_{ss^{'}}={\Bbb P}\left[ S_{t+1}=s^{'}|S_t=s \right]

所有的状态组成行,所有的后继状态组成列,我们得到状态转移矩阵:

{\cal P} =\begin{bmatrix} {\cal P}_{11}   & \cdots\ &{\cal P}_{1n}\\  \vdots  & \ddots  & \vdots  \\ {\cal P}_{n1}  & \cdots\ & {\cal P}_{nn}\\ \end{bmatrix}

其中:

n 表示状态的个数; 由于 {\cal P} 代表了整个状态转移的集合,所以用花体; 每行元素相加等于1。

我们也可以将状态转移概率写成函数的形式: {\cal P}\left( s^{'}|s \right)={\Bbb P}\left[ S_{t+1}=s^{'}|S_t=s \right]

其中:

\sum_{s^{'}}{\cal P}\left( s^{'}|s \right)=1 状态数量太多或者是无穷大(连续状态)时,更适合使用状态转移函数,此时 \int_{s^{'}}{\cal P}\left( s^{'}|s \right)=1

1.4、片段(episode)

强化学习中,从初始状态 S_1 到终止状态 S_T 的序列过程,被称为一个片段: S_1,S_2,...,S_T

如果一个任务总以终止状态结束,那么这个任务被称为片段任务(episodic task)。

如果一个任务会没有终止状态,会被无限执行下去,这被称为连续性任务(continuing task)。

1.5、马尔可夫过程(Markov Process,MP)

  • 若随机过程 \left\{ X\left( t \right) ,t\in T\right\} 满足马尔可夫性,则称为马尔可夫过程。
  • 一个马尔可夫过程是一个无记忆的随机过程
  • 马尔可夫过程可以由一个二元组来定义 <{\cal S},{\cal P}>

其中:

{\cal S} 代表了状态的集合, {\cal P} 描述了状态转移矩阵: {\cal P}_{ss^{'}}={\Bbb P}\left[ S_{t+1}=s^{'}|S_t=s \right]

(注: 虽然我们有时候并不知道 {\cal P} 的具体值,但是通常我们假设 {\cal P} 存在且稳定的。)

(注: 当 {\cal P} 不稳定时,不稳定环境,在线学习,快速学习。)

  • 换句话说,马尔可夫过程说的就是在随机过程中,明天的状态只取决于今天的状态而和今天之前的状态无关。也就是不管你是怎样达到 s_{t} 的,只要你今天的状态是 s_{t} , 你明天状态的可能性就决定好了。
  • 示例:
图中,圆圈表示学生所处的状态,方格Sleep是一个终止状态,或者可以描述成自循环的状态,也就是Sleep状态的下一个状态100%的几率还是自己。箭头表示状态之间的转移,箭头上的数字表示当前转移的概率。
当学生处在第一节课(Class1)时,他/她有50%的几率会参加第2节课(Class2);同时在也有50%的几率不在认真听课,进入到浏览facebook这个状态中; 在浏览facebook这个状态时,他/她有90%的几率在下一时刻继续浏览,也有10%的几率返回到课堂内容上来; 当学生进入到第二节课(Class2)时,会有80%的几率继续参加第三节课(Class3),也有20%的几率觉得课程较难而退出(Sleep); 当学生处于第三节课这个状态时,他有60%的几率通过考试,继而100%的退出该课程,也有40%的可能性需要到去图书馆之类寻找参考文献,此后根据其对课堂内容的理解程度,又分别有20%、40%、40%的几率返回值第一、二、三节课重新继续学习。

(注:终止状态的定义有两种——时间终止和状态终止。)

一个可能的学生马尔科夫链从状态Class1开始,最终结束于Sleep,其间的过程根据状态转化图可以有很多种可能性,这些都称为sample episodes。以下四个episodes都是可能的:

C1 - C2 - C3 - Pass - Sleep C1 - FB - FB - C1 - C2 - Sleep C1 - C2 - C3 - Pub - C2 - C3 - Pass - Sleep C1 - FB - FB - C1 - C2 - C3 - Pub - C1 - FB - FB - FB - C1 - C2 - C3 - Pub - C2 - Sleep

该学生马尔科夫过程的状态转移矩阵如下图:

{\cal P} =\begin{bmatrix}  & C1 & C2 & C3 &  Pass & Pub & FB & Sleep\\  C1 & &0.5 &  &   & & 0.5 & \\ C2  & & &  0.8 & & & &0.2\\ C3  & & &  & 0.6& 0.4& &\\ Pass  & & &  & & & &1.0\\ Pub  &0.2 & 0.4& 0.4 & & & &\\ FB  &0.1 & &  & & & 0.9 &\\ Sleep  & & &  & & & &1.0 \end{bmatrix}

1.6、马尔可夫链(Markov Chain)

其实马尔可夫链就是状态空间为可数集的马尔可夫过程:

Let s_{t}\in S, and if S is finite (countable), we call the Markov Process with this countable state space Markov Chain.

1.7、生成模式(Generating Patterns)

1.7.1、确定性模式(Deterministic Patterns):确定性系统

  • 考虑一套交通信号灯,灯的颜色变化序列依次是红色-红色/黄色-绿色-黄色-红色。这个序列可以作为一个状态机器,交通信号灯的不同状态都紧跟着上一个状态。
  • 注意每一个状态都是唯一的依赖于前一个状态,所以,如果交通灯为绿色,那么下一个颜色状态将始终是黄色——也就是说,该系统是确定性的。

1.7.2、非确定性模式(Non-deterministic patterns):马尔可夫

与交通信号灯例子不同,我们并不期望这三个天气状态之间的变化是确定性的,但是我们依然希望对系统建模以便生成一个天气变化模式(规律)。

一种做法是假设模型的当前状态仅仅依赖于前面的几个状态,这被称为马尔可夫假设。

显然,这可能是一种粗糙的假设,并且因此可能将一些非常重要的信息丢失。

当考虑天气问题时,马尔可夫假设假定今天的天气只能通过过去几天已知的天气情况进行预测——而对于其他因素,譬如风力、气压等则没有考虑,这样的假设显然是不现实的。

然而,由于这样经过简化的系统可以用来分析,我们常常接受这样的知识假设,虽然它产生的某些信息不完全准确。

一个马尔可夫过程是状态间的转移仅依赖于前 n 个状态的过程。这个过程被称之为 n 阶马尔科夫模型,其中 n 是影响下一个状态选择的(前) n 个状态。

最简单的马尔科夫过程是一阶模型,它的状态选择仅与前一个状态有关。这里要注意它与确定性系统并不相同,因为下一个状态的选择由相应的概率决定。

对于有 M 个状态的一阶马尔科夫模型,共有 M^{2} 个状态转移,因为任何一个状态都有可能是所有状态的下一个转移状态。每一个状态转移都有一个概率值,称为状态转移概率。

由此,M^{2} 个概率也可以用一个状态转移矩阵表示。注意这些概率并不随时间变化而不同——这是一个非常重要(但常常不符合实际)的假设。

下面的状态转移矩阵显示的是天气例子中可能的状态转移概率:

\textrm{Yesterday}\operatorname*{\begin{bmatrix} &{\Bbb{sun}}&{\Bbb{cloud}}&{\Bbb{rain}} \\ {\textrm{sun}}&0.50 & 0.375 & 0.125\\{\Bbb{cloud}}&0.25&0.125&0.625\\{\textrm{rain}}&0.25&0.375&0.375 \end{bmatrix}\quad} \limits^{\Large\textrm{Today}}

1.7.3、隐藏模式(Hidden Patterns):隐马尔科夫

马尔科夫过程的局限性:一个实际的问题是语音识别,我们听到的声音是来自于声带、喉咙大小、舌头位置以及其他一些东西的组合结果。所有这些因素相互作用产生一个单词的声音,一套语音识别系统检测的声音就是来自于个人发音时身体内部物理变化所引起的不断改变的声音。一些语音识别装置工作的原理是将内部的语音产出看作是隐藏的状态,而将声音结果作为一系列观察的状态,这些由语音过程生成并且最好的近似了实际(隐藏)的状态。隐藏状态的数目与观察状态的数目可以是不同的。纯粹的语音可以由80个音素描述,而身体的发音系统会产生出不同数目的声音,或者比80多,或者比80少。在这种情况下,观察到的状态序列与隐藏过程有一定的概率关系。我们使用隐马尔科夫模型对这样的过程建模,这个模型包含了一个底层隐藏的随时间改变的马尔科夫过程,以及一个与隐藏状态某种程度相关的可观察到的状态集合。

二、马尔科夫决策过程(Markov Decision Process,MDP)

MDP是对完全可观测(fully observable)的环境进行描述的,也就是说观测到的状态内容完整地决定了决策需要的特征;几乎所有的强化学习问题都可以转化为MDP。

2.1、马尔科夫奖励过程(Markov Reward Process,MRP)

  • MRP是带有values的Markov Chain,是一个数组 \left\{ {\cal S},{\cal P},{\cal R},\gamma \right\}
  1. \cal S 是有限的状态集
  2. \cal P 是状态转移矩阵,{\cal P}_{ss^{'}}={\Bbb P}\left[ {S}_{t+1}=s^{'}|{S_t}=s \right]
  3. \cal R 是奖励函数,标量,描述了在状态 s 的奖励,\mathop{\underline{{\cal R}_s}}\limits_{函数}={\Bbb E}\left[ \mathop{\underline{R_{t+1}}}_{具体的奖励值}|S_t=s \right]
  4. \gamma 是衰减系数,并且 \gamma \in \left[ 0,1 \right]
  • G_{t} 是从时间序列 t 开始所有的折扣回报,针对连续性任务而言, G_{t}=R_{t+1}+\gamma R_{t+2}+...=\sum_{k=0}^{\infty}{\gamma^{k}R_{t+k+1}} ,针对片段性任务而言, G_{t}=R_{t+1}+\gamma R_{t+2}+...+\gamma^{T-t-1}R_T=\sum_{k=0}^{T-t-1}{\gamma^{k}R_{t+k+1}} 。当然我们也可以将终止状态等价于自身转移概率为1,奖励为0的的状态,由此能够将片段性任务和连续性任务统一表达, G_{t}=\sum_{k=0}^{T-t-1}{\gamma^{k}R_{t+k+1}}

其中:

T\rightarrow \infty 表示连续性任务,否则为片段性任务。

(注:奖励是针对状态的,回报是针对片段的!)

  1. 衰减系数(Discount Factor): \gamma \in [0,1],其中有数学表达的方便,避免陷入无限循环,远期利益具有一定的不确定性,符合人类对于眼前利益的追求,符合金融学上获得的利益能够产生新的利益因而更有价值等等
  2. k+1 步后的回报为 \gamma^kR
  3. \gamma\rightarrow0 代表更青睐于当前的利益(“myopic” evaluation)
  4. \gamma\rightarrow1 代表更有远见(“far-sighted” evaluation)
  • 状态价值函数 v(s) 是从状态 s 开始的期望回报: v\left( s \right)={\Bbb E}\left[ G_{t}|S_{t}=s \right]
  1. 值函数存在的意义:回报值是一次片段(or一次采样)的结果,存在很大的样本偏差;回报值的角标是 t ,值函数关注的是状态 s ,所以又被称为状态价值函数。
  2. 状态价值函数可以被分解为两部分:立即回报 R_{t+1} 和后续状态的折扣值函数 \gamma v\left( S_{t+1} \right)
  3. 贝尔曼方程: \begin{align*}  v\left( s \right)  &={\Bbb E}\left[ G_{t}|S_{t}=s \right]\\  &={\Bbb E}\left[ R_{t+1}+\gamma R_{t+2}+\gamma^2 R_{t+3}+...|S_{t}=s \right]\\  &={\Bbb E}\left[ R_{t+1}+\gamma \left( R_{t+2}+\gamma R_{t+3}+... \right)|S_{t}=s \right]\\ &={\Bbb E}\left[ R_{t+1}+\gamma G_{t+1}|S_{t}=s \right]\\ &\left( 分别对R_{t+1}和G_{t+1}求期望,和的期望等于期望的和 \right)\\  &={\Bbb E}\left[ R_{t+1}+\gamma v\left( S_{t+1} \right)|S_{t}=s \right] \\&\left( 注意v\left( S_{t+1} \right)用大写的S_{t+1}是因为S_t=s后下一个状态是随机的 \right)\\ &\left( 如果我们已知转移矩阵{\cal P},则可将上式展开 \right)\\ &={\Bbb E}\left[ R_{t+1}|S_t=s \right]+\gamma {\Bbb E}\left[ v\left( S_{t+1} \right)|S_t=s \right]\\ &\left( 对随机变量求期望请参考下面的定义 \right)\\ &={\cal R}_{s}+\gamma \sum_{s'\in {\cal S}}{{\cal P}_{ss'}v\left( s' \right)}\\ \end{align*}
  4. 对于大范围MRPs,有许多迭代理论来计算状态价值函数,如动态规划蒙特卡洛估计时间差分学习
定义:离散型随机变量 X 有概率函数 P\left( X=x_k \right)=P_k\left( k=1,2,... \right) ,若级数 \sum_{k=1}^{\infty}{x_kp_k} 绝对收敛,则称这个级数为 X 的数学期望。

2.2、举例说明收获和价值的计算

下图是一个“马尔科夫奖励过程”图示的例子,在“马尔科夫过程”基础上增加了针对每一个状态的奖励,由于不涉及衰减系数相关的计算,这张图并没有特殊交代衰减系数值的大小。

为方便计算,把“学生马尔科夫奖励过程”示例图表示成下表的形式。表中第二行对应各状态的即时奖励值,中间区域数字为状态转移概率,表示为从所在行状态转移到所在列状态的概率:

{\begin{bmatrix} {States}&{C_1}&{C_2}&{C_3}&{Pass}&{Pub}&{FB}&{Sleep} \\ {Rewards}&{-2}&{-2}&{-2}&{10}&{1}&{-1}&{0}\\{C_1}&{}&{0.5}&{}&{}&{}&{0.5}&{}\\{C_2}&{}&{}&{0.8}&{}&{}&{}&{0.2}\\{C_3}&{}&{}&{}&{0.6}&{0.4}&{}&{}\\{Pass}&{}&{}&{}&{}&{}&{}&{1}\\{Pub}&{0.2}&{0.4}&{0.4}&{}&{}&{}&{}\\{FB}&{0.1}&{}&{}&{}&{}&{0.9}&{}\\{Sleep}&{}&{}&{}&{}&{}&{}&{1}\end{bmatrix}\quad}

考虑如下4个马尔科夫链。现计算当 \gamma=\frac{1}{2} 时,在 t=1 时刻 {S_1}={C_1} 时状态 S_1 的收获分别为:

(公式: G_1=R_2+\gamma R_3+...+\gamma^{T-2}R_T

C1 - C2 - C3 - Pass - Sleep v_1=-2-2*\frac{1}{2}-2*\left( {\frac{1}{2}} \right)^2+10*\left( {\frac{1}{2}} \right)^3=-2.25 C1 - FB - FB - C1 - C2 - Sleep v_1=-2-1*\frac{1}{2}-1*\left( {\frac{1}{2}} \right)^2-2*\left( {\frac{1}{2}} \right)^3-2*\left( {\frac{1}{2}} \right)^4=-3.125 C1 - C2 - C3 - Pub - C2 - C3 - Pass - Sleep v_1=-2-2*\frac{1}{2}-2*\left( {\frac{1}{2}} \right)^2+1*\left( {\frac{1}{2}} \right)^3-2*\left( {\frac{1}{2}} \right)^4...=-3.41 C1 - FB - FB - C1 - C2 - C3 - Pub - C1 - FB - FB - FB - C1 - C2 - C3 - Pub - C2 - Sleep v_1=-2-1*\frac{1}{2}-1*\left( {\frac{1}{2}} \right)^2-2*\left( {\frac{1}{2}} \right)^3-2*\left( {\frac{1}{2}} \right)^4...=-3.20

由此可以理解到,虽然都是从相同的初始状态开始,但是不同的片段有不同的回报值,而值函数是它们的期望值

  • \gamma=0 时,上表描述的MRP 中,各状态的即时奖励就与该状态的价值相同。
  • \gamma \neq 0 时,各状态的价值需要通过计算得到。各状态圈内的数字表示该状态的价值,圈外的 R=-2 等表示的是该状态的即时奖励。(推导价值函数的)

\gamma=0 各状态的价值(注:具体的求解过程请参考下文。)

\gamma=0.9 各状态的价值(注:具体的求解过程请参考下文。)

\gamma=1 各状态的价值

状态 C_3 的价值可以通过状态 PubPass 的价值以及他们之间的状态转移概率来计算:

(公式: v\left( s \right)={\Bbb E}\left[ R_{t+1}+\gamma v\left( S_{t+1} \right)|S_{t}=s \right]={\cal R}_{s}+\gamma \sum_{s'\in {\cal S}}{{\cal P}_{ss'}v\left( s' \right)}

v_{C3} = -2\left[ {\cal R}_{C_3} \right] + 1.0\left[ \gamma \right] *\left(   0.6\left[ {\cal P}_{{C_3}Pass} \right] * v_{Pass} + 0.4\left[ {\cal P}_{{C_3}Pub} \right] * v_{Pub}\right)

去掉注释:

v_{C3}  = -2+  \left(   0.6*v_{Pass}+ 0.4* v_{Pub}\right)\Rightarrow -4.3=-2+\left( 0.6*10+0.4*0.8 \right)

(注:具体的求解过程请参考下文。)

各状态价值的确定是很重要的,RL的许多问题可以归结为求状态的价值问题。因此如何求解各状态的价值,也就是寻找一个价值函数(从状态到价值的映射)就变得很重要了。

2.3、Bellman方程的矩阵形式和求解

v={\cal R}+\gamma {\cal P}v

假设状态集合为 {\cal S}=\left\{ s_1,s_2,...,s_n \right\} ,那么:

\begin{bmatrix} v\left( s_1 \right)\\  \vdots\\  v\left( s_n \right)\\ \end{bmatrix}=\begin{bmatrix} {\cal R}_{s_1}\\  \vdots \\  {\cal R}_{s_n}\\ \end{bmatrix}+\gamma\begin{bmatrix} {\cal P}_{s_1s_1}&\cdots\ {\cal P}_{s_1s_n}\\  \vdots&\vdots \\  {\cal P}_{s_ns_1}&\cdots\ {\cal P}_{s_ns_n}\\ \end{bmatrix}\begin{bmatrix} v\left( s_1 \right)\\  \vdots\\  v\left( s_n \right)\\ \end{bmatrix}

贝尔曼方程本质上是一个线性方程,可以直接解:

\begin{align*} \left( 1-\gamma{\cal P} \right)v&={\cal R}\\v&=\left( 1-\gamma{\cal P}\right)^{-1} {\cal R}\end{align*}

继续来求解学生MRP示例:

{\cal P}={\begin{bmatrix} {States}&{C_1}&{C_2}&{C_3}&{Pass}&{Pub}&{FB}&{Sleep} \\{C_1}&{}&{0.5}&{}&{}&{}&{0.5}&{}\\{C_2}&{}&{}&{0.8}&{}&{}&{}&{0.2}\\{C_3}&{}&{}&{}&{0.6}&{0.4}&{}&{}\\{Pass}&{}&{}&{}&{}&{}&{}&{1}\\{Pub}&{0.2}&{0.4}&{0.4}&{}&{}&{}&{}\\{FB}&{0.1}&{}&{}&{}&{}&{0.9}&{}\\{Sleep}&{}&{}&{}&{}&{}&{}&{1}\end{bmatrix}\quad}

{\cal R}={\begin{bmatrix}  {-2}\\{-2}\\{-2}\\{10}\\{1}\\{-1}\\{0}\end{bmatrix}\quad}

\gamma=1

那么:

\begin{align*} v&=\left( 1-\gamma{\cal P}\right)^{-1} {\cal R}\\ &=\left(   {\begin{bmatrix} {1}&{0}&{0}&{0}&{0}&{0}&{0}\\{0}&{1}&{0}&{0}&{0}&{0}&{0}\\{0}&{0}&{1}&{0}&{0}&{0}&{0}\\{0}&{0}&{0}&{1}&{0}&{0}&{0}\\{0}&{0}&{0}&{0}&{1}&{0}&{0}\\{0}&{0}&{0}&{0}&{0}&{1}&{0}\\{0}&{0}&{0}&{0}&{0}&{0}&{1}\end{bmatrix}\quad}- {\begin{bmatrix} {}&{0.5}&{}&{}&{}&{0.5}&{}\\{}&{}&{0.8}&{}&{}&{}&{0.2}\\{}&{}&{}&{0.6}&{0.4}&{}&{}\\{}&{}&{}&{}&{}&{}&{1}\\{0.2}&{0.4}&{0.4}&{}&{}&{}&{}\\{0.1}&{}&{}&{}&{}&{0.9}&{}\\{}&{}&{}&{}&{}&{}&{1}\end{bmatrix}\quad}\right)^{-1} {\begin{bmatrix}  {-2}\\{-2}\\{-2}\\{10}\\{1}\\{-1}\\{0}\end{bmatrix}\quad} \end{align*}

运用matlab求解:

clear all;clc;
gamma=1.0;
E=eye(7);
P=[0,0.5,0,0,0,0.5,0;
    0,0,0.8,0,0,0,0.2;
    0,0,0,0.6,0.4,0,0;
    0,0,0,0,0,0,1;
    0.2,0.4,0.4,0,0,0,0;
    0.1,0,0,0,0,0.9,0;
    0,0,0,0,0,0,1];
R=[-2;-2;-2;10;1;-1;0];
% det(E-gamma*P)=0 --> E-gamma*P是奇异矩阵
% 给矩阵主对角线每一个元素加一个很小的量,如1e-6,使其强制可逆
% det(E*1e-6+E-gamma*P)=3.2401e-08
v=inv(E*1e-6+E-gamma*P)*R

结果:

v =
  -12.5429
    1.4568
    4.3210
   10.0000
    0.8025
  -22.5427
         0

\gamma=0.9 时:

clear all;clc;
gamma=0.9;
E=eye(7);
P=[0,0.5,0,0,0,0.5,0;
    0,0,0.8,0,0,0,0.2;
    0,0,0,0.6,0.4,0,0;
    0,0,0,0,0,0,1;
    0.2,0.4,0.4,0,0,0,0;
    0.1,0,0,0,0,0.9,0;
    0,0,0,0,0,0,1];
R=[-2;-2;-2;10;1;-1;0];
% det(E-gamma*P)=0.0112 --> E-gamma*P不是奇异矩阵
v=inv(E-gamma*P)*R

结果:

v =
   -5.0127
    0.9427
    4.0870
   10.0000
    1.9084
   -7.6376
         0

\gamma=0 时:

clear all;clc;
gamma=0;
E=eye(7);
P=[0,0.5,0,0,0,0.5,0;
    0,0,0.8,0,0,0,0.2;
    0,0,0,0.6,0.4,0,0;
    0,0,0,0,0,0,1;
    0.2,0.4,0.4,0,0,0,0;
    0.1,0,0,0,0,0.9,0;
    0,0,0,0,0,0,1];
R=[-2;-2;-2;10;1;-1;0];
% det(E-gamma*P)=1 --> E-gamma*P不是奇异矩阵
v=inv(E-gamma*P)*R

结果:

v =
    -2
    -2
    -2
    10
     1
    -1
     0

实际上,计算复杂度是O(n^{3})n是状态数量。因此直接求解仅适用于小规模的MRPs。大规模MRP的求解通常使用迭代法。常用的迭代方法有:动态规划(Dynamic Programming)、蒙特卡洛评估(Monte-Carlo evaluation)、时序差分学习(Temporal-Difference),后文会逐步讲解这些方法。

2.4、马尔可夫决策过程(Markov Decision Processes,MDPs)

  • MP和MRP中,我们都是作为观察者,去观察其中的状态转移现象,去计算回报值
  • 对于一个RL问题,我们更希望去改变状态转移的流程,去最大化回报值
  • 相较于马尔可夫奖励过程,马尔可夫决策过程多了一个行为集合 A ,它是这样的一个元组: \langle {\cal S},{\cal A},{\cal P},{\cal R},\gamma \rangle
  1. {\cal S} 是有限的状态集
  2. {\cal A} 是有限的动作集
  3. \cal P 是状态转移矩阵,{\cal P}{_{ss^{'}}^a}={\Bbb P}\left[ S_{t+1}=s^{'}|S_t=s,A_t=a \right]
  4. \cal R 是奖励函数,{\cal R}{_s^a}={\Bbb E}\left[ R_{t+1}|S_t=s,A_t=a \right] ,描述了在状态 s 做动作 a 的奖励
  5. \gamma 是衰减系数,并且 \gamma \in \left[ 0,1 \right]

看起来很类似马尔科夫奖励过程,但这里的 \cal P\cal R 都与具体的行为 a 对应,而不像马尔科夫奖励过程那样仅对应于某个状态。

2.4.1、示例——学生MDP

MDP状态转化图
  • 图中红色的文字表示的是采取的行为,而不是先前的状态名。
  • 对比之前的学生MRP示例可以发现,即时奖励与行为对应了,同一个状态下采取不同的行为得到的即时奖励是不一样的,即针对状态 s 的奖励变成了针对 <s,a> 的奖励。
  • 由于引入了Action,容易与状态名混淆,因此此图没有给出各状态的名称;此图还把Pass和Sleep状态合并成一个终止状态;另外当选择“去查阅文献”这个动作时,主动进入了一个临时状态(图中用黑色小实点表示),随后被动的被环境按照其动力学分配到另外三个状态,也就是说此时Agent没有选择权决定去哪一个状态。

2.4.2、策略(Policy)

策略 \pi 是概率的集合或分布,其元素 \pi(a|s) 为对过程中的某一状态 s 采取可能的行为 a 的概率,用 \pi(a|s) 表示: \pi(a|s)=\Bbb P[A_t=a|S_t=s]

例如,

\pi\left( a|s \right) =\begin{bmatrix}   &  s_1  & s_2 & s_3 & s_4 \\ a_1&0&0.1&0.5&1\\ a_2&0.2&0.1&0.5&0\\ a_3&0.7&0.1&0&0\\ a_4&0.1&0.7&0&0\\ \end{bmatrix}

  1. 一个策略完整定义了个体的行为方式,也就是说定义了个体在各个状态下的各种可能的行为方式以及其概率的大小;
  2. 策略是RL问题的终极目标;
  3. Policy仅和当前的状态有关,与历史信息无关;
  4. 某一确定的Policy是静态的,与时间无关;
  5. 个体可以随着时间更新策略;
  6. 如果策略的概率分布输出都是独热的(one-hot,指一个向量只有一个元素为1,其他均为 0)的,那么称为确定性策略,否则即为随机策略。

\pi\left( a|s \right) =\begin{bmatrix}   &  s_1  & s_2 & s_3 & s_4 \\ a_1&0&0&1&1\\ a_2&0&0&0&0\\ a_3&1&0&0&0\\ a_4&0&1&0&0\\ \end{bmatrix} \Leftrightarrow \begin{bmatrix} s_1  &  a_3\\ s_2  &  a_4\\ s_3  &  a_1\\ s_4  &  a_1\\ \end{bmatrix}

当给定一个MDP: \cal M=\langle S,A,P,R,\gamma \rangle 和一个策略 \pi ,那么状态序列 S_1,S_2,\ldots 是一个马尔科夫过程\langle {\cal S},{\cal P}^\pi \rangle ;同样,状态和奖励序列 S_1,R_2,S_2,\ldots 是一个MRP: \cal M=\langle S,P^\pi,R^\pi,\gamma \rangle ,并且在这个奖励过程中满足下面两个方程:

\cal P{^\pi_{ss^{'}}}=\sum \limits_{a \in \cal A}\pi(a|s) \cal P{^a_{ss^{'}}}

用文字描述是这样的,在执行策略 \pi 时,状态从 s 转移至 s' 的概率等于一系列概率的和,这一系列概率指的是在执行当前策略时,执行某一个行为的概率与该行为能使状态从 s 转移至s' 的概率的乘积。

奖励函数表示如下:

\cal R{^\pi_s}=\sum \limits_{a \in \cal A}\pi(a|s) \cal R{^a_s}

用文字表述是这样的:当前状态 s 下执行某一指定策略得到的即时奖励是该策略下所有可能行为得到的奖励与该行为发生的概率的乘积的和。

策略在MDP中的作用相当于agent可以在某一个状态时做出选择,进而有形成各种马尔可夫过程的可能,而且基于策略产生的每一个马尔可夫过程是一个马尔可夫奖励过程,各过程之间的差别是不同的选择产生了不同的后续状态以及对应的不同的奖励。

2.4.3、基于策略 \pi 的价值函数

定义 {v_\pi}(s) 是在MDP下的基于策略 \pi 的状态价值函数,表示从状态 s 开始,遵循当前策略时所获得的收获的期望;或者说在执行当前策略 \pi 时,衡量个体处在状态 s 时的价值大小。数学表示如下:

{v_\pi}(s)=\Bbb E_\pi [G_t|{S_t}=s]

注意策略是静态的、关于整体的概念,不随状态改变而改变;变化的是在某一个状态时,依据策略可能产生的具体行为,因为具体的行为是有一定的概率的,策略就是用来描述各个不同状态下执行各个不同行为的概率。

定义 {q_\pi}(s,a) 为行为价值函数,表示在执行策略 \pi 时,对当前状态 s 执行某一具体行为 a 所能得到的收获的期望;或者说在遵循当前策略 \pi 时,衡量对当前状态执行行为 a 的价值大小。行为价值函数一般都是与某一特定的状态相对应的,更精细的描述是状态行为对价值函数。行为价值函数的公式描述如下:

{q_\pi}(s,a)=\Bbb E_\pi [G_t|{S_t}=s,{A_t}=a]

下图用例子解释了状态价值函数:

2.4.4、Bellman期望方程(Bellman Expectation Equation)

MDP下的状态价值函数和行为价值函数与MRP下的价值函数类似,可以改用下一时刻状态价值函数或行为价值函数来表达,具体方程如下:

{v_\pi}(s)=\Bbb E_\pi [R_{t+1}+\gamma{v_\pi}(S_{t+1})|{S_t}=s]

{q_\pi}(s,a)=\Bbb E_\pi [R_{t+1}+\gamma q_{\pi}\left( S_{t+1},A_{t+1} \right)|{S_t}=s,{A_t}=a]

在某个状态下可以选择不同的行为,得到不同的行为价值函数

可以看出,在遵循策略 \pi 时,状态 s 的价值体现为在该状态下遵循某一策略而采取所有可能行为的价值按行为发生概率的乘积求和,可以表达为:

{v_\pi}(s)= \sum \limits_{a\in \cal A}π(a|s)q_\pi(s,a)

类似的,一个行为价值函数也可以表示成状态价值函数的形式:

{q_\pi}(s,a)={\cal R}{^a_s}+\gamma \sum \limits_{s'\in \cal S}\cal P{^a_{ss'}}v_\pi(s')

它表明,某一个状态下采取一个行为的价值,可以分为两部分:其一是离开这个状态的价值,其二是所有进入新的态的价值与其转移概率乘积的和。

执行某个行为后可能转移到不同的后继状态,得到不同的状态价值函数

如果组合起来,可以得到下面的结果:

{v_\pi}(s)=\sum \limits_{a\in \cal A}π(a|s)q_\pi(s,a)= \sum \limits_{a\in \cal A}π(a|s)\left( {\cal R}{^a_s}+\gamma \sum \limits_{s'\in \cal S}{\cal P}{^a_{ss'}}v_\pi(s') \right)

刻画了后继状态 s^{'} 的状态价值函数 v_\pi\left( s^{'} \right) 与当前状态 s 的状态价值函数 v_\pi\left( s \right) 的关系。

本质上而言等价于 {v_\pi}(s)=\Bbb E_\pi [R_{t+1}+\gamma{v_\pi}(S_{t+1})|{S_t}=s]

{q_\pi}(s,a)={\cal R}{^a_s}+\gamma \sum \limits_{s'\in \cal S}\cal P{^a_{ss'}}v_\pi(s')={\cal R}{^a_s}+\gamma \sum \limits_{s'\in \cal S}{\cal P}{^a_{ss'}}\sum \limits_{a\in \cal A}{\pi}(a^{'}|s^{'})q_\pi(s^{'},a^{'})

刻画了后继状态 s^{'} 和后继行为 a^{'} 的行为价值函数 q_\pi\left( s^{'},a^{'} \right) 与当前状态 s 和当前行为 a 的行为价值函数 q_\pi\left( s,a \right) 的关系。

本质上而言等价于 {q_\pi}(s,a)=\Bbb E_\pi [R_{t+1}+\gamma q_{\pi}\left( S_{t+1},A_{t+1} \right)|{S_t}=s,{A_t}=a]

2.4.5、学生MDP示例

下图解释了红色空心圆圈状态的状态价值是如何计算的,遵循的策略随机策略,即所有可能的行为有相同的几率被选择执行。

\pi(a|s)=0.5\gamma=1

对于终点方框位置,由于其没有下一个状态,也没有当前状态的动作,因此其状态价值函数为0。对于其余四个状态S1、S2、S3、S4,我们依次定义其价值为 v_1v_2v_3v_4。我们基于 v_{\pi}(s) = \sum\limits_{a \in A} \pi(a|s)({\cal R}_s^a + \gamma \sum\limits_{s' \in S}{\cal P}_{ss'}^av_{\pi}(s')) 计算所有的状态价值函数。可以列出一个方程组。

对于 v_1 位置,我们有:

v_1=0.5\left[ \pi(Study|\textrm{S1}) \right] * (-2[{\cal R}{^{Study}_\textrm{S1}}] + \mathop{\underline{[v_\pi(\textrm{S2})]}}\limits_{v_2} )+0.5[\pi(Facebook|\textrm{S1})] * (-1[{\cal R}{^{Facebook}_\textrm{S1}}]+\mathop{\underline{[v_\pi(\textrm{S4})]}}\limits_{v_4})

去掉注释得到 v_1=0.5∗(−2+v_2)+0.5∗(-1+v_4)\Rightarrow-v_1+0.5*v_2+0.5*v4=1.5

对于 v_2 位置,我们有:

v_2=0.5\left[ \pi(Study|\textrm{S2}) \right] * (-2[{\cal R}{^{Study}_\textrm{S2}}] + \mathop{\underline{[v_\pi(\textrm{S3})]}}\limits_{v_3} )+0.5[\pi(Sleep|\textrm{S2})] * (0[{\cal R}{^{Sleep}_\textrm{S2}}]+\mathop{\underline{[v_\pi(Sleep)]}}\limits_{=0})

去掉注释得到 v_2=0.5∗(−2+v_3)+0.5∗(0+0)\Rightarrow-v_2+0.5*v_3=1.0

对于 v3 位置,我们有: v_3=0.5\left[ \pi(Pub|\textrm{S3}) \right] * (1[{\cal R}{^{Pub}_\textrm{S3}}] + 0.2[{\cal P}{^{a1}_{\textrm{S3}\ \textrm{S1}}}] * \mathop{\underline{[v_\pi(\textrm{S1})]}}\limits_{v_1} + 0.4[{\cal P}{^{a2}_{\textrm{S3}\ \textrm{S2}}}] * \mathop{\underline{[v_\pi(\textrm{S2})]}}\limits_{v_2} + 0.4({\cal P}{^{a3}_{\textrm{S3}\ \textrm{S3}}}) * \mathop{\underline{[v_\pi(\textrm{S3})]}}\limits_{v_3})+\\0.5[\pi(Study|\textrm{S3})] * (10[{\cal R}{^{Study}_\textrm{S3}}]+\mathop{\underline{[v_\pi(Sleep)]}}\limits_{=0})

去掉注释得到 v_3 = 0.5*(1+0.2*v_1+0.4*v_2+0.4*v_3)+0.5*(10+0)\Rightarrow0.1*v_1+0.2*v_2-0.8*v_3=-5.5

对于 v4 位置,我们有:

v_4=0.5\left[ \pi(Quit|\textrm{S4}) \right] * (0[{\cal R}{^{Quit}_\textrm{S4}}] + \mathop{\underline{[v_\pi(\textrm{S1})]}}\limits_{v_1} )+0.5[\pi(Facebook|\textrm{S4})] * (-1[{\cal R}{^{Facebook}_\textrm{S4}}]+\mathop{\underline{[v_\pi(\textrm{S4})]}}\limits_{v_4})

去掉注释得到 v_4=0.5∗(0+v_1)+0.5∗(-1+v_4)\Rightarrow0.5*v_1-0.5*v_4=0.5

于是我们得到一个关于v_1v_2v_3v_4的方程组:

\begin{bmatrix} -1&0.5&0&0.5 \\ 0&-1&0.5&0\\ 0.1&0.2&-0.8&0\\ 0.5&0&0&-0.5\end{bmatrix}\quad \begin{bmatrix} v_1\\ v_2\\v_3\\v_4 \end{bmatrix}\quad =\begin{bmatrix} 1.5\\ 1.0\\-5.5\\0.5 \end{bmatrix}\quad \Rightarrow \begin{bmatrix} v_1\\ v_2\\v_3\\v_4 \end{bmatrix}\quad= {\begin{bmatrix} -1&0.5&0&0.5\\ 0&-1&0.5&0\\0.1&0.2&-0.8&0\\0.5&0&0&-0.5\end{bmatrix}\quad}^{-1} \begin{bmatrix} 1.5\\ 1.0\\-5.5\\0.5 \end{bmatrix}\quad

运用matlab求解该方程:

clear all;clc;
a=[-1,0.5,0,0.5;0,-1,0.5,0;0.1,0.2,-0.8,0;0.5,0,0,-0.5];
b=[1.5;1.0;-5.5;0.5];
c=inv(a)*b;

解出这个方程组可以得到:

c =
   -1.3077
    2.6923
    7.3846
   -2.3077

\begin{bmatrix} v_1\\ v_2\\v_3\\v_4 \end{bmatrix}\quad= \begin{bmatrix} -1.3\\ 2.7\\7.4\\-2.3 \end{bmatrix}\quad

即每个状态的价值函数如上图所示。

同理可以求出随机策略 \pi 下的动作价值函数:

{q_\pi}(s,a)={\cal R}{^a_s}+\gamma \sum \limits_{s'\in \cal S}\cal P{^a_{ss'}}v_\pi(s')

{q_\pi}(\textrm{S1},Study)={\cal R}{^{Study}_\textrm{S1}}+\mathop{\underline{\gamma}}\limits_{=1} \mathop{\underline{{\cal P}{^{Study}_{\textrm{S1}\ \textrm{S2}}}}}\limits_{=1}v_\pi(\textrm{S2})=-2+2.7=0.7

{q_\pi}(\textrm{S1},Facebook)={\cal R}{^{Facebook}_\textrm{S1}}+\mathop{\underline{\gamma}}\limits_{=1} \mathop{\underline{{\cal P}{^{Facebook}_{\textrm{S1}\ \textrm{S4}}}}}\limits_{=1}v_\pi(\textrm{S4})=-1-2.3=-3.3

{q_\pi}(\textrm{S2},Sleep)={\cal R}{^{Sleep}_\textrm{S2}}+\mathop{\underline{\gamma}}\limits_{=1} \mathop{\underline{{\cal P}{^{Sleep}_{\textrm{S2}\ \textrm{Sleep}}}}}\limits_{=1}v_\pi(\textrm{Sleep})=0+0=0

{q_\pi}(\textrm{S2},Study)={\cal R}{^{Study}_\textrm{S2}}+\mathop{\underline{\gamma}}\limits_{=1} \mathop{\underline{{\cal P}{^{Study}_{\textrm{S2}\ \textrm{S3}}}}}\limits_{=1}v_\pi(\textrm{S3})=-2+7.4=5.4

{q_\pi}(\textrm{S3},Study)={\cal R}{^{Study}_\textrm{S3}}+\mathop{\underline{\gamma}}\limits_{=1} \mathop{\underline{{\cal P}{^{Study}_{\textrm{S3}\ \textrm{Sleep}}}}}\limits_{=1}v_\pi(\textrm{Sleep})=10+0=10

\begin{align*}{q_\pi}(\textrm{S3},Pub) &={\cal R}{^{Pub}_\textrm{S3}}+\mathop{\underline{\gamma}}\limits_{=1} \sum \limits_{s'\in \cal S}{\cal P}{^{Pub}_{\textrm{S3}\ \bullet}}v_\pi(\bullet)\\ &={\cal R}{^{Pub}_\textrm{S3}}+\mathop{\underline{\gamma}}\limits_{=1}  ({\cal P}{^{Pub}_{\textrm{S3}\ \textrm{S1}}}v_\pi(\textrm{S1})+ {\cal P}{^{Pub}_{\textrm{S3}\ \textrm{S2}}}v_\pi(\textrm{S2})+ {\cal P}{^{Pub}_{\textrm{S3}\ \textrm{S3}}}v_\pi(\textrm{S3}))\\ &=1+0.2*(-1.3)+0.4*2.7+0.4*7.4\\ &=4.78\end{align*}

{q_\pi}(\textrm{S4},Facebook)={\cal R}{^{Facebook}_\textrm{S4}}+\mathop{\underline{\gamma}}\limits_{=1}\mathop{\underline{{\cal P}{^{Facebook}_{\textrm{S4}\ \textrm{S4}}}}}\limits_{=1}v_\pi(\textrm{S4})=-1-2.3=-3.3

{q_\pi}(\textrm{S4},Quit)={\cal R}{^{Quit}_\textrm{S4}}+\mathop{\underline{\gamma}}\limits_{=1} \mathop{\underline{{\cal P}{^{Quit}_{\textrm{S4}\ \textrm{S1}}}}}\limits_{=1}v_\pi(\textrm{S1})=0-1.3=-2.3

2.4.6、Bellman期望方程矩阵形式

\begin{align*}v_{\pi}&={\cal R}^{\pi}+\gamma{\cal P}^{\pi}v_{\pi} \\\left( 1-\gamma{\cal P}^{\pi} \right)v_{\pi}&={\cal R}^{\pi}\\v_{\pi}&=\left( 1-\gamma{\cal P}^{\pi}\right)^{-1} {\cal R}^{\pi}\end{align*}

用矩阵形式求解学生MDP示例:

(注: \pi(a|s)=0.5

{\cal P}^{\pi}={\begin{bmatrix}  {States}&{\textrm{S1}}&{\textrm{S2}}&{\textrm{S3}}&{\textrm{S4}}&{\textrm{Sleep}}\\ {\textrm{S1}}&{}&{0.5}&{}&{0.5}&{}\\ {\textrm{S2}}&{}&{}&{0.5}&{}&{0.5}\\ {\textrm{S3}}&{\mathop{\underline{0.5*0.2}}\limits_{=0.1}}&{\mathop{\underline{0.5*0.4}}\limits_{=0.2}}&{\mathop{\underline{0.5*0.4}}\limits_{=0.2}}&{}&{0.5}\\ {\textrm{S4}}&{0.5}&{}&{}&{}&{0.5}\\ {\textrm{Sleep}}&{}&{}&{}&{}&{1} \end{bmatrix}\quad}

\gamma=1

{\cal R}^{\pi}={\begin{bmatrix}   {0.5*\left( -2 \right)+0.5*\left( -1 \right)}\\  {0.5*\left( -2 \right)+0.5*\left( 0 \right)}\\  {0.5*\left( 10 \right)+0.5*\left( 1 \right)}\\  {0.5*\left( -1 \right)+0.5*\left( 0 \right)}\\  {0}\\ \end{bmatrix}\quad}= {\begin{bmatrix}   {-1.5}\\  {-1}\\  {5.5}\\  {-0.5}\\  {0}\\ \end{bmatrix}\quad}

用matlab求解该方程:

clear all;clc;
gamma=1.0;
E=eye(5);
P=[0,0.5,0,0.5,0;
    0,0,0.5,0,0.5;
    0.1,0.2,0.2,0,0.5;
    0.5,0,0,0.5,0;
    0,0,0,0,1];
R=[-1.5;-1;5.5;-0.5;0];
% det(E-gamma*P)=0 --> E-gamma*P是奇异矩阵
% 给矩阵主对角线每一个元素加一个很小的量,如1e-6,使其强制可逆
% det(E*1e-6+E-gamma*P)=1.6250e-07
v=inv(E*1e-6+E-gamma*P)*R

结果:

v =
   -1.3077
    2.6923
    7.3846
   -2.3077
         0

2.4.7、最优价值函数

最优状态价值函数 v_*(s) 指的是在从所有策略产生的状态价值函数中,选取使状态 s 价值最大的函数:

v_*\left( s \right)={\max \limits_\pi}\ v_\pi(s)

类似的,最优行为价值函数 q_*(s,a) 指的是从所有策略产生的行为价值函数中,选取使状态行为对 <s,a> 价值最大的函数:

q_*(s,a) = \max \limits_\pi\ q_{\pi}(s,a)

最优价值函数明确了MDP的最优可能表现,当我们知道了最优价值函数,也就知道了每个状态的最优价值,这时便认为这个MDP获得了解决。

  • 学生MDP问题的最优状态价值
  • 学生MDP问题的最优行为价值

上面在学生MDP示例的状态价值求解过程中我们固定了策略 π(a|s),虽然求出了每个状态的状态价值函数,但是却并不一定是最优价值函数。那么如何求出最优价值函数呢?详细的求解过程将在Bellman最优方程后给出。

2.4.8、最优策略

当对于任何状态 s ,遵循策略 \pi 的价值不小于遵循策略 \pi' 下的价值,则策略 \pi 优于策略 \pi'\pi\geq{\pi}^{'}\ {\Bbb {if}}\ v_{\pi}\left( s \right)\geq v_{{\pi}^{'}}\left( s \right),\forall s

定理

(注:证明请参考【11】!)

对于任何MDP,下面几点成立:

  1. 存在一个最优策略 \pi_*,比任何其他策略更好或至少相等,即 \pi_*\geq \pi,\forall \pi
  2. 所有的最优策略有相同的最优价值函数,即 v_{\pi_*}\left( s \right)=v_*\left( s \right)
  3. 所有的最优策略具有相同的行为价值函数,即 q_{\pi_*}\left( s,a \right)=q_*\left( s,a \right)

2.4.9、寻找最优策略

可以通过最大化最优行为价值函数 q_*\left( s,a \right) 来找到最优策略。

\pi_*\left( a|s \right) =\left\{              \begin{array}{lr}              1\ {\Bbb {if}}\ a=\ \operatorname*{argmax}\limits_{a\in {\cal A}}\ q_*\left( s,a \right)\\              0\ {\Bbb {otherwise}}              \end{array} \right.

对于任何MDP问题,总存在一个确定性的最优策略;同时如果我们知道最优行为价值函数,则表明我们找到了最优策略。

2.4.10、学生MDP最优策略示例

2.4.11、Bellman最优方程(Bellman Optimality Equation)

针对 v_* ,一个状态的最优价值等于从该状态出发采取的所有行为产生的行为价值中最大的那个行为价值:

v_∗(s) =\operatorname*{max}\limits_a\ q_∗(s, a)

和贝尔曼期望方程( {v_\pi}(s)= \sum \limits_{a\in \cal A}π(a|s)q_\pi(s,a) )的关系:

v_*\left( s \right)=v_{\pi_*}\left( s \right)=\sum \limits_{a\in \cal A}\pi_*(a|s)q_{\pi_*}(s,a)=\max_aq_{\pi_*}\left( s,a \right)=\max_aq_*\left( s,a \right)

(注:假设最优策略是确定性的策略,那么 {\pi_*}(s,a) 是one-hot的形式,那么我们只需取最大的 q_{\pi_*}(s,a) 就可以了。又因为所有的最优策略具有相同的行为价值函数,即 q_{\pi_*}\left( s,a \right)=q_*\left( s,a \right)

针对 q_*,在某个状态 s 下,采取某个行为的最优价值由2部分组成,一部分是离开状态 s 的即刻奖励,另一部分则是所有能到达的状态 s' 的最优状态价值按出现概率求和:

q_*\left( s,a \right)={\cal R}{_s^a}+\gamma \sum \limits_{s^{'}\in{\cal S}}{\cal P}{_{ss^{'}}^a}v_*\left( s^{'} \right)

组合起来,针对 v_* ,有:

v_∗(s) =\operatorname*{max} \limits_a\left( {\cal R}{_s^a}+\gamma \sum \limits_{s^{'}\in{\cal S}}{\cal P}{_{ss^{'}}^a}v_*\left( s^{'} \right) \right)

针对 q_* ,有:

q_*\left( s,a \right)={\cal R}{_s^a}+\gamma \sum \limits_{s^{'}\in{\cal S}}{\cal P}{_{ss^{'}}^a}\operatorname*{max} \limits_{a^{'}}q_∗(s^{'}, a^{'})

  • Bellman最优方程与Bellman方程的关系
  1. 贝尔曼最优方程本质上就是利用了 \pi_* 的特点,将求期望的算子转化成了 \max_a
  2. 在贝尔曼期望方程中, \pi 是已知的,而在贝尔曼最优方程中, \pi_* 是未知的
  3. 解贝尔曼期望方程的过程即对应了评价,解贝尔曼最优方程的过程即对应了优化

2.4.12、Bellman最优方程求解学生MDP示例

首先求指向终点方框处的最优动作价值函数:

(注:对于终点方框位置,由于其没有下一个状态,也没有当前状态的动作,因此其状态价值函数 v(\textrm{Sleep}) 恒为0,不受策略 \pi 的影响。)

{q_\pi}(s,a)={\cal R}{^a_s}+\mathop{\gamma}\limits_{=1} \sum \limits_{s'\in \cal S}\cal P{^a_{ss'}}v_\pi(s')

 q_*(s,a) = \max \limits_\pi \ q_{\pi}(s,a)

{q_*}(\textrm{S2},Sleep)={\cal R}{^{Sleep}_\textrm{S2}}+\mathop{\underline{\gamma}}\limits_{=1}{\cal P}{^{Sleep}_{\textrm{S2}\ \textrm{Sleep}}}\mathop{\underline{v(\textrm{Sleep}}}_{=0})=0+0=0

{q_*}(\textrm{S3},Study)={\cal R}{^{Study}_\textrm{S3}}+\mathop{\underline{\gamma}}\limits_{=1} {\cal P}{^{Study}_{\textrm{S3}\ \textrm{Study}}}\mathop{\underline{v(\textrm{Sleep}}}_{=0})=10+0=10 然后ellman最优方程 q_{*}(s,a) = {\cal R}_s^a + \mathop{\gamma}\limits_{=1} \sum\limits_{s' \in S}{\cal P}_{ss'}^a\max_{a'}q_{*}(s',a') 列方程组求出所有的 q_∗(s,a)

\begin{align*} {q_*}(\textrm{S1},Study)& ={\cal R}_\textrm{S1}^{Study} + \mathop{\gamma}\limits_{=1} {\cal P}_{\textrm{S1}\ \textrm{S2}}^{Study}\max_{a'}q_{*}(\textrm{S2},a')\\ &={\cal R}_\textrm{S1}^{Study} + \mathop{\gamma}\limits_{=1} {\cal P}_{\textrm{S1}\ \textrm{S2}}^{Study}\max\left( \mathop{\underline{q_{*}(\textrm{S2},Sleep)}}\limits_{a'=Sleep},\mathop{\underline{q_{*}(\textrm{S2},Study)}}\limits_{a'=Study} \right)\\ &=-2 + \max\left( 0,q_{*}(\textrm{S2},Study)\right)\\ \end{align*}

\begin{align*}{q_*}(\textrm{S1},Facebook)& ={\cal R}_\textrm{S1}^{Facebook} + \mathop{\gamma}\limits_{=1} {\cal P}_{\textrm{S1}\ \textrm{S4}}^{Facebook}\max_{a'}q_{*}(\textrm{S4},a')\\ &={\cal R}_\textrm{S1}^{Facebook} + \mathop{\gamma}\limits_{=1} {\cal P}_{\textrm{S1}\ \textrm{S4}}^{Facebook}\max\left( \mathop{\underline{q_{*}(\textrm{S4},Facebook)}}\limits_{a'=Facebook},\mathop{\underline{q_{*}(\textrm{S4},Quit)}}\limits_{a'=Quit} \right)\\ &=-1 + \max\left( q_{*}(\textrm{S4},Facebook),q_{*}(\textrm{S4},Quit)\right)\\ \end{align*}

{q_*}(\textrm{S2},Sleep)=0

\begin{align*} {q_*}(\textrm{S2},Study) &={\cal R}_\textrm{S2}^{Study} + \mathop{\gamma}\limits_{=1} {\cal P}_{\textrm{S2}\ \textrm{S3}}^{Study}\max_{a'}q_{*}(\textrm{S3},a')\\ &={\cal R}_\textrm{S2}^{Study} + \mathop{\gamma}\limits_{=1} {\cal P}_{\textrm{S2}\ \textrm{S3}}^{Study}\max\left( \mathop{\underline{q_{*}(\textrm{S3},Study)}}\limits_{a'=Study},\mathop{\underline{q_{*}(\textrm{S3},Pub)}}\limits_{a'=Pub} \right)\\ &=-2 + \max\left( 10,q_{*}(\textrm{S3},Pub)\right)\\ \end{align*}

{q_*}(\textrm{S3},Study)=10

\begin{align*} {q_*}(\textrm{S3},Pub)   &={\cal R}_\textrm{S3}^{Pub} +\mathop{\gamma}\limits_{=1} \sum \limits_{s'\in \cal S}  {\cal P}_{\textrm{S3}\ s'}^{Pub}\max_{a'}q_{*}(s',a')\\ &={\cal R}_\textrm{S2}^{Pub} \\ &+\mathop{\gamma}\limits_{=1} \left( \mathop{\underline{{\cal P}_{\textrm{S3}\ \textrm{S1}}^{Pub}\max\left( \mathop{\underline{q_{*}(\textrm{S1},Study)}}\limits_{a'=Study},\mathop{\underline{q_{*}(\textrm{S1},Facebook)}}\limits_{a'=Facebook} \right)}}\limits_{s'=\textrm{S1}} +\\ \mathop{\underline{{\cal P}_{\textrm{S3}\ \textrm{S2}}^{Pub}\max\left( \mathop{\underline{q_{*}(\textrm{S2},Study)}}\limits_{a'=Study},\mathop{\underline{q_{*}(\textrm{S2},Sleep)}}\limits_{a'=Sleep} \right)}}\limits_{s'=\textrm{S2}}\\+ \mathop{\underline{{\cal P}_{\textrm{S3}\ \textrm{S3}}^{Pub}\max\left( \mathop{\underline{q_{*}(\textrm{S3},Study)}}\limits_{a'=Study},\mathop{\underline{q_{*}(\textrm{S3},Pub)}}\limits_{a'=Pub} \right)}}\limits_{s'=\textrm{S3}} \right)\\ &=1 + 0.2*\max\left( q_{*}(\textrm{S1},Study),q_{*}(\textrm{S1},Facebook)\right)\\&+0.4* \max\left( q_{*}(\textrm{S2},Study),0\right)\\&+0.4* \max\left( 10,q_{*}(\textrm{S3},Pub)\right)\\ \end{align*}

\begin{align*} {q_*}(\textrm{S4},Facebook) &={\cal R}_\textrm{S4}^{Facebook} + \mathop{\gamma}\limits_{=1} {\cal P}_{\textrm{S4}\ \textrm{S4}}^{Facebook}\max_{a'}q_{*}(\textrm{S4},a')\\ &={\cal R}_\textrm{S4}^{Facebook} + \mathop{\gamma}\limits_{=1} {\cal P}_{\textrm{S4}\ \textrm{S4}}^{Facebook}\max\left( \mathop{\underline{q_{*}(\textrm{S4},Facebook)}}\limits_{a'=Facebook},\mathop{\underline{q_{*}(\textrm{S4},Quit)}}\limits_{a'=Quit} \right)\\ &=-1 + \max\left( q_{*}(\textrm{S4},Facebook),q_{*}(\textrm{S4},Quit)\right)\\  \end{align*}

\begin{align*} {q_*}(\textrm{S4},Quit) &={\cal R}_\textrm{S4}^{Quit} + \mathop{\gamma}\limits_{=1} {\cal P}_{\textrm{S4}\ \textrm{S1}}^{Quit}\max_{a'}q_{*}(\textrm{S1},a')\\ &={\cal R}_\textrm{S4}^{Quit} + \mathop{\gamma}\limits_{=1} {\cal P}_{\textrm{S4}\ \textrm{S1}}^{Quit}\max\left( \mathop{\underline{q_{*}(\textrm{S1},Study)}}\limits_{a'=Study},\mathop{\underline{q_{*}(\textrm{S1},Facebook)}}\limits_{a'=Facebook} \right)\\ &=0 + \max\left( q_{*}(\textrm{S1},Study),q_{*}(\textrm{S1},Facebook)\right)\\  \end{align*}

观察一下:

{q_*}(\textrm{S2},Study)=-2 + \max\left( 10,q_{*}(\textrm{S3},Pub)\right)\geq 8

那么:

 {q_*}(\textrm{S1},Study)=-2 + \max\left( 0,q_{*}(\textrm{S2},Study)\right)=-2+q_{*}(\textrm{S2},Study)\geq 6

\begin{align*} {q_*}(\textrm{S3},Pub) &=1 + 0.2*\max\left( q_{*}(\textrm{S1},Study),q_{*}(\textrm{S1},Facebook)\right)\\&+ 0.4*\max\left( q_{*}(\textrm{S2},Study),0\right)+0.4* \max\left( 10,q_{*}(\textrm{S3},Pub)\right)\\ &=1+ 0.2*\max\left( q_{*}(\textrm{S1},Study),q_{*}(\textrm{S1},Facebook)\right)\\&+0.4*q_{*}(\textrm{S2},Study)+0.4*\max\left( 10,q_{*}(\textrm{S3},Pub)\right) \end{align*}

再观察一下:

{q_*}(\textrm{S4},Facebook) =-1 + \max\left( q_{*}(\textrm{S4},Facebook),q_{*}(\textrm{S4},Quit)\right)

如果:

\max\left( q_{*}(\textrm{S4},Facebook),q_{*}(\textrm{S4},Quit)\right)=q_{*}(\textrm{S4},Facebook)

可是 q_{*}(\textrm{S4},Facebook)=-1+q_{*}(\textrm{S4},Facebook) 是不成立的。

那么:

{q_*}(\textrm{S4},Facebook) =-1 +q_{*}(\textrm{S4},Quit)

{q_*}\left( \textrm{S1},Facebook \right)=-1 + \max\left(\mathop{ \underline{q_{*}(\textrm{S4},Facebook)}}\limits_{=q_{*}(\textrm{S4},Quit)-1},q_{*}(\textrm{S4},Quit)\right)=-1 + q_{*}(\textrm{S4},Quit)

{q_*}\left( \textrm{S4},Quit \right)=\max\left( q_{*}(\textrm{S1},Study),\mathop{\underline{q_{*}(\textrm{S1},Facebook)}}\limits_{={q_*}\left( \textrm{S4},Quit \right)-1}\right)=q_{*}(\textrm{S1},Study)

\begin{align*} {q_*}(\textrm{S3},Pub) &=1 + 0.2*\max\left( q_{*}(\textrm{S1},Study),q_{*}(\textrm{S1},Facebook)\right)+ 0.4*\max\left( q_{*}(\textrm{S2},Study),0\right)+0.4* \max\left( 10,q_{*}(\textrm{S3},Pub)\right)\\ &=1+0.2* \max\left( \mathop{\underline{q_{*}(\textrm{S1},Study)}}\limits_{={q_*}\left( \textrm{S4},Quit \right)},\mathop{\underline{q_{*}(\textrm{S1},Facebook)}}\limits_{=-1 + q_{*}(\textrm{S4},Quit)}\right)+0.4*q_{*}(\textrm{S2},Study)+0.4*\max\left( 10,q_{*}(\textrm{S3},Pub)\right)\\ &=1+0.2*\mathop{\underline{q_{*}(\textrm{S1},Study)}}\limits_{=-2+q_{*}(\textrm{S2},Study)}+0.4*q_{*}(\textrm{S2},Study)+0.4*\max\left( 10,q_{*}(\textrm{S3},Pub)\right)\\ &=0.6*\mathop{\underline{q_{*}(\textrm{S2},Study)}}\limits_{\geq8}+0.6+0.4*\mathop{\underline{\max\left( 10,q_{*}(\textrm{S3},Pub)\right)}}\limits_{=10}\\ &=0.6*q_{*}(\textrm{S2},Study)+0.6+4\\ &=0.6*q_{*}(\textrm{S2},Study)+4.6 \end{align*}

(注:\textrm{if}\ \max\left( 10,q_{*}(\textrm{S3},Pub)\right)=q_{*}(\textrm{S3},Pub)\ \left( \forall q_{*}(\textrm{S3},Pub)>10 \right)

那么两边消项得到 q_{*}(\textrm{S3},Pub)=1+q_{*}(\textrm{S2},Study)

{q_*}(\textrm{S2},Study)=-2 + \max\left( 10,q_{*}(\textrm{S3},Pub)\right)=q_{*}(\textrm{S3},Pub)-2

这是自相矛盾的。)

所以:

{q_*}(\textrm{S2},Study)=-2 +\mathop{\underline{ \max\left( 10,q_{*}(\textrm{S3},Pub)\right)}}\limits_{=10}=8

 {q_*}(\textrm{S1},Study)=-2+q_{*}(\textrm{S2},Study)=6

{q_*}\left( \textrm{S4},Quit \right)=q_{*}(\textrm{S1},Study)=6

{q_*}(\textrm{S4},Facebook) =-1 +q_{*}(\textrm{S4},Quit)=-1+6=5

{q_*}\left( \textrm{S1},Facebook \right)=-1 + q_{*}(\textrm{S4},Quit)=-1+6=5

{q_*}(\textrm{S3},Pub)=0.6*q_{*}(\textrm{S2},Study)+4.6=0.6*8+4.6=4.8+4.6=8.4

有了所有的 q_∗(s,a),利用 v_{*}(s) = \max_{a}q_{*}(s,a) 就可以求出所有的 v_∗(s)

v_{*}(\textrm{S1}) = \max_{a}q_{*}(\textrm{S1},a)=\max\left\{ q_{*}(\textrm{S1},Study),q_{*}(\textrm{S1},Facebook) \right\}=\max\left\{ 6,5 \right\}=6

v_{*}(\textrm{S2}) = \max_{a}q_{*}(\textrm{S2},a)=\max\left\{ q_{*}(\textrm{S2},Study),q_{*}(\textrm{S2},Sleep) \right\}=\max\left\{ 8,0 \right\}=8

v_{*}(\textrm{S3}) = \max_{a}q_{*}(\textrm{S3},a)=\max\left\{ q_{*}(\textrm{S3},Study),q_{*}(\textrm{S3},Pub) \right\}=\max\left\{ 10,8.4 \right\}=10

v_{*}(\textrm{S4}) = \max_{a}q_{*}(\textrm{S4},a)=\max\left\{ q_{*}(\textrm{S4},Quit),q_{*}(\textrm{S4},Facebook) \right\}=\max\left\{ 6,5 \right\}=6

最终求出的所有 v_∗(s)q_∗(s,a) 如上面两图所示。

2.4.13、求解Bellman最优方程

Bellman最优方程是非线性的,没有固定的解决方案,通过一些迭代方法来解决:价值迭代、策略迭代、Q学习、Sarsa等。后续会逐步讲解展开。

参考文献:

【1】一个简单的马尔可夫过程例子

【2】机器学习十大算法---10. 马尔科夫

【3】《强化学习》第二讲 马尔科夫决策过程

【4】深度增强学习David Silver(二)——马尔科夫决策过程MDP

【5】马尔可夫决策过程MDP

【6】强化学习(二):马尔科夫决策过程(Markov decision process)

【7】马尔可夫过程

【8】3 有限马尔可夫决策过程(Finite Markov Decision Processes)

【9】强化学习(二)马尔科夫决策过程(MDP)

【10】matlab奇异矩阵如何处理?

【11】Total Expected Discounted Reward MDPs : Existence of Optimal Policies

请大家批评指正,谢谢😄~

(PS:2017年学习RL的时候笔记比较简略,2018年修稿的过程中给出了详尽的求解过程,如有不正确的地方请指出,我会尽快修改,谢谢)

(PS:2018.12.19完成第三版的修订~)

编辑于 2019-08-19

文章被以下专栏收录