做者:YJLAugus 博客: https://www.cnblogs.com/yjlaugus 项目地址:https://github.com/YJLAugus/Reinforcement-Learning-Notes,若是感受对您有所帮助,烦请点个⭐Star。html
随机变量(Random Variable),一般用大写字母来表示一个随机事件。好比看下面的例子:git
\(X\): 河水是咸的github
\(Y\): 井水是甜的dom
很显然,\(X\), \(Y\)两个随机事件是没有关系的。也就是说\(X\)和\(Y\)之间是相互独立的。记做:ide
对于一类随机变量来讲,它们之间存在着某种关系。好比:函数
\(S_{t}\):表示在 \(t\) 时刻某支股票的价格,那么 \(S_{t+1}\) 和 \(S_t\) 之间必定是有关系的,至于具体什么样的关系,这里原先不作深究,但有一点能够肯定,二者之间必定存在的一种关系。随着时间 \(t\) 的变化,能够写出下面的形式:学习
这样就生成了一组随机变量,它们之间存在着一种至关复杂的关系,也就是说,各个随机变量之间存在着关系,即不相互独立。由此,咱们会把按照某个时间或者次序上的一组不相互独立的随机变量的这样一个总体做为研究对象。这样的话,也就引出了另外的一个概念:随机过程(Stochastic Process)。也就是说随机过程的研究对象不在是单个的随机变量,而是一组随机变量,而且这一组随机变量之间存在着一种很是紧密的关系(不相互独立)。记做:ui
马尔科夫链(Markov Chain)即马尔可夫过程,是一种特殊的随机过程——具有马尔可夫性的随机过程。spa
马尔可夫链/过程 即知足马尔可夫性质的随机过程,记做:code
状态空间模型(State Space Model),常应用于 HMM,Kalman Filterm Particle Filter,关于这几种这里不作讨论。在这里就是指马尔可夫链 + 观测变量,即Markov Chain + Obervation
如上图所示,s1-s2-s3为马尔可夫链,a1, a2, a3为观测变量,以a2为例,a2只和s2有关和s1, s3无关。状态空间模型能够说是由马尔可夫链演化而来的模型。记做:
马尔可夫奖励过程(Markov Reward Process),即马尔可夫链+奖励,即:Markov Chain + Reward
。以下图:
举个例子,好比说你买了一支股票,而后你天天就会有“收益”,固然了这里的收益是泛化的概念,收益有多是正的,也有多是负的,有可能多,有可能少,总之从今天的状态\(S_t\) 到明天的状态 \(S_{s+1}\) ,会有一个reward
。记做:
马尔可夫决策过程(Markov Decision Process),即马尔可夫奖励过程的基础上加上action
,即:Markov Chain + Reward + action
。若是还用刚才的股票为例子的话,咱们只能天天看到股票价格的上涨或者降低,而后看到本身的收益,可是没法操做股票的价格的,只有看到份,只是一个“小散户”。这里的马尔可夫决策过程至关于政策的制定者,至关于一个操盘手,能够根据不一样的状态而指定一些政策,也就至关于 action。
在马尔可夫决策过程当中,全部的状态是咱们当作离散的,有限的集合。全部的行为也是离散有限的集合。记做:
对于上述公式简单说明,\(S_t\) 用来表示某一个时刻的状态。\(A_{(s)}\) 表示在某一个状态时候的行为 ,这个行为必定是基于某个状态而言的,假设在\(t\) 时刻的状态为\(S\) 此时的action
记做 \(A_t\) 。\(R_t 和 R_{(t+1)}\) 只是记法不一样,好比下面的例子:从\(S_t\)状态通过 \(A_t\) 到\(S_{t+1}\)状态,得到的奖励通常记做\(R_{(t+1)}\)。 也就是说\(S_t\), \(A_t\) ,\(R_{(t+1)}\) 是配对使用的。
马尔可夫链只有一个量——状态。好比 \(S\in(s_1,s_2,s_3,s_4,s_5,s_6,s_7,s_8,s_9,s_{10})\) ,在状态集合中一共有十个状态,每一个状态之间能够互相转化,便可以从一个状态转移到另一个状态,固然,“另外的状态” 也有多是当前状态自己。以下图所示,s1状态到能够转移到s2状态,s1状态也能够转移到本身当前的状态,固然s1也有可能转移到s3,s4,s5,状态,下图中没有给出。
根据上面的例子,咱们能够把全部的状态写成矩阵的形式,就成了状态转移矩阵。用状态转移矩阵来描述马尔可夫链的动态特性。以上面的状态集合\(S\in(s_1,s_2,s_3,s_4,s_5,s_6,s_7,s_8,s_9,s_{10})\) 为例,可得一个 \(10\times10\) 的矩阵。以下图所示:
由上面的例子可知,在状态转移的过程当中,对于下一个状态转移是有几率的,好比说s1转移到到s1状态的几率多是0.5,s1有0.3的几率转移到s2状态。⻢尔科夫过程是⼀个⼆元组(S, P) , 且满⾜: S是有限状态集合, P是状态转移几率。 可得:
一个简单的例子:如图2.2所⽰为⼀个学⽣的7种状态{娱乐, 课程1, 课程2, 课程3, 考过, 睡觉, 论⽂}, 每种状态之间的转换几率如图所⽰。 则该⽣从课程 1 开始⼀天可能的状态序列为:
在 MPR 中,打个比喻,更像是随波逐流的小船,没有人为的干预,小船能够在大海中随波逐流。
在MDP中,打个比喻,更像是有人划的小船,这里相比较MRP中的小船来讲,多了“人划船桨”的概念,能够认为控制船的走向。这里咱们看下面的图:
s1状态到s2状态的过程,agent从s1发出action A1,使得s1状态转移到s2状态,并从s2状态获得一个R2的奖励。其实就是下图所示的一个过程。这是一个动态的过程,由此,引出动态函数。
动态函数: The function \(p\) defines the dynamics of the MDP. 这是书上的原话,也就说,这个动态函数定义了MDP的动态特性
,动态函数以下:
状态转移函数: 咱们去掉 \(r\) ,也就是reward
,动态函数也就成了状态转移函数。
reward
的动态性: 在 s 和 a 选定后,r 也有多是不一样的,即 r 也是随机变量。可是,大多数状况在 s 和 a 选定后 r 是相同的,这里只作简单的介绍。在MDP中,即马尔可夫决策过程,最重要的固然是策略(Policy),用 \(\pi\) 来表示。在策略中其主要做用的就是action
,也即 \(A_t\),须要指出的必定是,action 必定是基于某一状态 S 时。看下面的例子:
即,当 \(S_t = S\) 状态时,不管 \(t\) 取何值,只要遇到 \(S\) 状态就 选定 \(a_1\) 这个 action ,这就是一种策略,而且是肯定性策略。
肯定性策略:也就是说和时间 \(t\) 已经没有关系了,只和这个状态有关,只要遇到这个状态,就作出这样的选择。
随机性策略:与肯定性策略相对,当遇到 \(S\) 状态时,可能选择 \(a_1\) ,可能选择 \(a_2\),也可能选择 \(a_3\)。只是选择action的几率不一样。以下图,就是两种不一样的策略:
从上面两天图中,由于一个策略是基于一个状态而言的,在 \(S\) 状态,可能选择 \(a_1\) ,可能选择 \(a_2\),也可能选择 \(a_3\),故三个 action
之间是或的关系,因此说以上是两个策略,而不要误觉得是6个策略。
故策略可分为肯定性策略和随机性策略两种。
对于随机性策略而言,给定一个 \(s\) ,选择一个 \(a\) ,也就是条件几率了。
肯定性策略能够看做是一种特殊的随机性策略,以上表-Policy1为例,选择a1的几率为1,选择a2,a3的几率都为0。
在全部的策略中必定存在至少一个最优策略,并且在强化学习中,reward
的得到有延迟性(delay),举雅达利游戏中,不少游戏只有到结束的时候才会知道是否赢了或者输了,才会获得反馈,也就是reward
,因此这就是奖励得到延迟。当选定一个状态 \(S_t\) 时,选定action \(A_t\) ,由于奖励延迟的缘由可能对后续的 \(S_{t+1}\) 等状态都会产生影响。这样,就不能用当前的reward来衡量策略的好坏、优劣。这里引入了回报和价值函数的概念。
而是后续多个reward的加和,也就是回报,用 \(G_t\) 表示 \(t\) 时刻的回报。
如上图所示,此时的“回报”能够表示为:\(G_t = R_{t+1} + R_{t+2}+ \ ...\ +R_T\)
值得注意的是,\(T\) 多是有限的,也有多是无限的。
举例:张三对李四作了行为,对李四形成了伤害,李四在当天就能感觉到伤害,并且,这个伤害明天,后头都仍是有的,可是,时间是最好的良药,随着时间的推移,李四对于张三对本身形成的伤害感受没有那么大了,会有一个wei折扣,用 \(\gamma\) 来表示。故真正的回报表示为:
用 \(G_t\) 来衡量一个策略的好坏,\(G_t\) 大的策略就好,反之。
可是使用 \(G_t\) 也不能很好的衡量策略的好坏,好比一个最大的问题是,在给定一个状态后,选择一个肯定的action后(这里仍是在随机策略的角度),进入的下一个状态也是随机的。以下图所示:把左侧的过程放大,只给出a3下的随机状态,a1,a2也是有一样的状况,这里胜率。
举个例子,就像咱们给一盆花浇水,水是多了仍是少了,对于这盆花来讲咱们是不得知的,可能会少,也可能会多。这个花的状态变化也就是随机的了。从上面的例子得知,若是仍是用 \(G_t\) 来对一个策略来进行评估的话,至少有9中状况(随机策略,3个action选一种)。
\(G_t\) 只能评估的是一个“分叉”而已(图中绿色分支
)。而不能更好的进行评估。以下图所示:
由于回报不能很好的对策略进行一个评估,由此引入了另一个概念——价值函数。
在指定一个状态 \(s\) ,采起一个随机策略
\(\pi\) ,而后加权平均,以上图为例,把9 个分叉(\(G_t\))加权平均。也就是指望 \(E\)。故得出价值函数:
上面提到的的价值函数实际上是其中的一种,确切的能够称为 状态价值函数
,用\(v_\pi(s)\) 来表示只和状态有关系。初次以外还有另一种价值函数,那就是状态动做价值函数
,用\(q_\pi(s,a)\)这里引入的action
。故价值函数能够分为下面的两种:
从上面的公式中,咱们能够得知,在 \(v_\pi(s)\) 中,只有 \(s\) 是自变量,一个 \(\pi\) 其实就是一个状态\(s\) 和一个action的一个映射。故,只要\(\pi\) 肯定了,那么\(s,a\) 也就肯定了,即此时的 \(\pi\) 对状态 \(s\) 是有限制做用的。可是,在 \(q_\pi(s,a)\) 中,子变量为\(s,a\) 两个,这两个自变量之间是没有特定的关系的。也就是说,\(s\)和\(a\) 都在变,没法肯定一个映射(策略) \(\pi\) ,那么也就是说在 \(q_\pi\) 中的\(\pi\) 对于\(s\) 是没有约束的。
仍是以上图为例,对于 s 状态,在随机策略中有三种 action 选择,分别是 \(\pi(a_1 \mid s)\),\(\pi(a_1 \mid s)\),\(\pi(a_1 \mid s)\),三种action(行为)对应的价值函数(此时为动做价值函数)为 \(q_\pi(s,a_1)\), \(q_\pi(s,a_2)\), \(q_\pi(s,a_3)\)。那么此时的 \(v_\pi(s)\) 就等于各个action的动做状态价值函数的加和,即:
这样一来咱们就得出了 \(v_\pi(s)\) 和 \(q_\pi(s,a)\) 之间的关系,若条件已知,就能够直接计算出 \(v_\pi\)。
对于某个状态 \(s\) 来讲,\(v_\pi \leq \underset{a}{max}\ q_\pi(s,a)\) ,\(v_\pi(s)\) 是一个加权平均,实际上就是一个平均值,固然要小于等于\(\ q_\pi(s,a)\)的最大值。\(v_\pi(s)\)只有所有是最大值的时候,二者才有可能相等。好比 5,5,5,平均值是5,最大值也是5;3,4,5而言,平均值为4,可是最大值为5。注意的是,4是乘上权值后的值,换句话说也就是乘了一个几率(\(\pi(a\mid s)\))。
从下面图中可得,在 \(q_\pi(s,a)\) 位置,(一个action)状态转移只能向“箭头”方向转移,而不能向上。若是想从下面的状态转移到上面的状态,那必须还要另一个action。状况是同样的,就按下图来讲明,通过a3后到达状态s',此时的状态函数就是 \(v_\pi(s’)\)。
上面的图可知: 在肯定了s 后,由随机策略action,引发“分叉”,同理,以a3为例,由于系统状态转移的随机性,也会引发分叉,也就是 s' 的状态也是不肯定的。还有一点 r 也又不肯定性,以下图蓝色虚线部分。
由咱们前面提到的公式也可得知:s' 和 r 都是随机的。好比说s,a ,s' 都是给定的,r也是不肯定的。
这样一来,可得一条蓝色通路的回报:
(1)式是怎么来的呢?以上图为例,在 \(q_\pi(s,a)\) 处往下走,选定一个 r ,再往下到达一个状态s', 此时在往下仍是一样的状态,就是俄罗斯套娃,以此类推。关于其中的 $\gamma v_\pi(s') $ ,来自于 \(G_t\)。看下面的式子:
由于 \(v_\pi(s)\) 来自 \(G_t\) ,故类比得(1)式。
由于走每条蓝色的通路也都是由几率的,故咱们须要乘上几率,同时累加求和,一个是多条蓝色通路另外一个是多个s'。故得:\(q_\pi(s,a)\) 和 \(v_\pi(s')\) 之间的关系 以下:
这样咱们获得两个式子:
(4)式带入(3)得:
(3)式带入(4)得:
关于(6)式能够看下图,更容易理解:
(5)式和(6)式 被称为贝尔曼指望方程。
一个实例:
例子是一个学生学习考试的MDP。里面实心圆位置是起点,方框那个位置是终点。上面的动做有study, Pub, Facebook, Quit, Sleep,每一个状态动做对应的即时奖励R已经标出来了。咱们的目标是找到最优的状态动做价值函数或者状态价值函数,进而找出最优的策略。
为了方便,咱们假设衰减因子 \(\gamma =1, \pi(a|s) = 0.5\) 。对于终点方框位置,因为其没有下一个状态,也没有当前状态的动做,所以其状态价值函数为0,对于其余的状态(圆圈)按照从上到下,从左到右的顺序定义其状态价值函数分别是 \(v_1,v_2,v_3,v_4\) ,根据(5)式 :
对于\(v_1\)位置,咱们有:\(v_1 = 0.5*(-1+v_1) +0.5*(0+v_2)\)
对于\(v_2\)位置,咱们有:\(v_2 = 0.5*(-1+v_1) +0.5*(-2+v_3)\)
对于\(v_3\)位置,咱们有:\(v_3 = 0.5*(0+0) +0.5*(-2+v_4)\)
对于\(v_4\)位置,咱们有:\(v_4 = 0.5*(10+0) +0.5*(1+0.2*v_2+0.4*v_3+0.4*v_4)\)
解出这个方程组能够获得 \(v_1=-2.3, v_2=-1.3, v_3=2.7, v_4=7.4\), 即每一个状态的价值函数以下图:
从上面能够看出,针对一个特定状体,状态价值函数计算都是基于下一个状态而言的,通俗的讲,按照“出箭头”的方向计算当前状态的价值函数。
可以使得 \(v\) 达到最大值的那个 \(\pi\) ,这个 \(\pi\) 被成为最优策略,进而获得最优状态价值函数。同理获得最优状态动做价值函数。
记 \(\pi_* = \underset{\pi}{argmax} \ v_\pi(s) = \underset{\pi}{argmax} \ q_\pi(s,a)\),含义是 \(\pi_*\) 可使得 $ v_*(s)$达到最大值,一样的,也可使得
\(q_\pi(s,a)\) 达到最大值。
由以上公式得:
值得注意的一点是$ v_*(s)$ 强调的是,无论你采用的是什么策略,只要状态价值函数达到最大值,而 \(v_{\pi_*}(s)\) 则更为强调的是 \(\pi\) ,达到最大的状态价值函数所采起的最优的那个 \(\pi\)
此时,咱们再探讨一下\(v_{\pi_*}(s)\) 和 \(q_{\pi_*}(s,a)\) 的关系。在贝尔曼指望方程中,咱们提到过 \(v_\pi(s) \leq \underset{a}{max}\ q_\pi(s,a)\) ,那么在这里是否是也由相似的关系\(v_{\pi_*}(s)\leq \underset{a}{max}\ q_\pi(s,a)\) 成立?咱们知道 \(v_{\pi_*}(s)\) 是一种策略,而且是最优的策略,\(q_{\pi_*}(s,a)\) 是表明一个“分支”,由于 \(v_{\pi_*}(s)\) 是一个加权平均值,但一样的,和\(v_\pi(s)\) 不一样的是,\(v_{\pi_*}(s)\) 是最优策略的加权平均,那么是否是能够把小于号去掉,写成下面的形式:
假定 \(v_{\pi_*}(s)\leq \underset{a}{max}\ q_\pi(s,a)\) 中的 \(\pi_*\) 仍是一个普通的策略,那么必定知足 \(v_{\pi_*}(s)\leq \underset{a}{max}\ q_\pi(s,a)\) ,这一点咱们已经提到过,若是说 \(v_{\pi_*}(s)< \underset{a}{max}\ q_\pi(s,a)\) ,说明\(v_{\pi_*}(s)\) 还有提升的空间,并非最优策略,这和条件矛盾了。因此这个小于不成立,得证:\(v_{\pi_*}(s)= \underset{a}{max}\ q_\pi(s,a)\)
详细证实过程以下:
其实,上面的式子是由 (3)式
演变而来的。\(v_{\pi_*}(s)\) 直接取最大值时候和 \(\underset{a}{max}\ q_\pi(s,a)\) 的最大值是相等的。也就是此时不用加权平均了,直接是 \(v_\pi(a) = q_\pi(s,a)\) 。那么从原先的(4)式能不能也得出类似
的结论,把求和符号去掉,直接等于最大值呢?答案是否认的,由于\(v_{\pi_*}(s)= \underset{a}{max}\ q_\pi(s,a)\) 是做用在action
上的,在公式中也能够看出,换句话说,咱们对于下图的a1,a2,a3这里是能够控制的。可是对于下图中的蓝色虚线部分,系统状态转移是没法控制的。
因此,原先的两组公式(3)、(4)并 结合(7)、(8)
并进行一个推导,得出另外的两组公式(9)、(10)以下:
(10)式带入(9)式得:
(9)式带入(10)式得:
(11)、(12)被称为贝尔曼最优方程。
一个实例:仍是以上面的例子讲解,咱们此次以动做价值函数 \(q_*(s,a)\) 为例来求解 $v_(s),q_(s,a) $
根据(12)式
可得方程组以下:
而后求出全部的 \(q_*(s,a)\),而后再利用 \(v_*(s) = \underset{a'}{max}q_*(s,a)\),就能够求出全部的 \(v_*(s)\),最终结果以下图所示:
详细的计算过程能够看下视频 的简单分析。https://www.bilibili.com/video/BV1Fi4y157vR/
https://www.bilibili.com/video/BV1RA411q7wt
http://www.javashuo.com/article/p-cahukyzm-gg.html
https://www.davidsilver.uk/wp-content/uploads/2020/03/MDP.pdf