RL笔记

一、Markov Decision Process

马尔可夫决策过程(Markov Decision Process),即马尔可夫奖励过程的基础上加上action,即:Markov Chain + Reward + action。如果还用刚才的股票为例子的话,我们只能每天看到股票价格的上涨或者下降,然后看到自己的收益,但是无法操作股票的价格的,只有看到份,只是一个“小散户”。这里的马尔可夫决策过程相当于政策的制定者,相当于一个操盘手,可以根据不同的状态而指定一些政策,也就相当于 action。

在马尔可夫决策过程中,所有的状态是我们看成离散的,有限的集合。所有的行为也是离散有限的集合。记作:

$S: \quad state \quad set \quad \quad \quad\quad\quad\quad\quad\quad\quad\quad S_t $

\(\it A: \quad action \quad set ,\quad \quad \forall s \in S,A_{(s)} \quad\quad A_t\\\)

\(\it R: \quad reward \quad set \quad\quad\quad\quad\quad\quad\quad\quad\quad R_t, R_{(t+1)}\)

对于上述公式简单说明,\(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)}\)​ 是配对使用的。

二、Markov Decision Process中的动态函数和状态转移函数

在MDP中,打个比喻,更像是有人划的小船,这里相比较MRP中的小船来说,多了“人划船桨”的概念,可以认为控制船的走向。这里我们看下面的图:

s1状态到s2状态的过程,agent从s1发出action A1,使得s1状态转移到s2状态,并从s2状态得到一个R2的奖励。其实就是下图所示的一个过程。这是一个动态的过程,由此,引出动态函数

image-20201127132127738

2.1 动态函数: $ p(s',r\mid s,a)$

The function \(p\)​ defines the dynamics of the MDP. 这是书上的原话,也就说,这个动态函数定义了MDP的动态特性,动态函数如下:

\[\large p(s',r\mid s,a) \dot{=} Pr\lbrace S_{t+1}=s',R_{t+1} = r \mid S_{t} =s,A_{t}=a \rbrace \]

r确定

2.2 状态转移函数: \(p(s'\mid s,a)\)

我们去掉 \(r\)​ ,也就是reward,动态函数也就成了状态转移函数。

\[\large{ p(s'\mid s,a) \dot{=} Pr\lbrace S_{t+1}=s',\mid S_{t} =s,A_{t}=a \rbrace \\ p(s'\mid s,a) = \sum_{r\in R} p(s'\mid s,a) } \]

  • reward的动态性: 在 s 和 a 选定后,r 也有可能是不同的,即 r 也是随机变量。但是,大多数情况在 s 和 a 选定后 r 是相同的,这里只做简单的介绍。

r为变量

三、Markov Decision Process的价值函数

3.1 策略:Policy

在Markov Decision Process中,即马尔可夫决策过程,最重要的当然是策略(Policy)\(\pi\) 来表示

\[Policy= \begin{cases} 确定性策略, & \text {a $\dot{=}\pi(s)$} \\ 随机性策略, & \text { $\pi(a\mid s) \dot{=} P \lbrace A_t=a \mid S_t = s \rbrace$} \end{cases} \]

3.1.1 确定性策略:\(a \dot{=}\pi(s)\)

也就是说和时间 \(t\) 已经没有关系了,只和这个状态有关,只要遇到这个状态,就做出这样的选择。

3.1.2 随机性策略:\(\pi(a\mid s) \dot{=} P \lbrace A_t=a \mid S_t = s \rbrace\)

与确定性策略相对,当遇到 \(S\) 状态时,可能选择 \(a_1\) ,可能选择 \(a_2\),也可能选择 \(a_3\)。只是选择action的概率不同。如下图,就是两种不同的策略:

从上面两天图中,因为一个策略是基于一个状态而言的,在 \(S\) 状态,可能选择 \(a_1\) ,可能选择 \(a_2\),也可能选择 \(a_3\),故三个 action 之间是的关系,所以说以上是两个策略,而不要误以为是6个策略。

3.2 回报:\(G_t\)

评价策略的好坏的一种方法

而是后续多个reward的加和,也就是回报,用 \(G_t\) 表示 \(t\) 时刻的回报。

如上图所示,此时的“回报”可以表示为:\(G_t = R_{t+1} + R_{t+2}+ \ ...\ +R_T\)

值得注意的是,\(T\) 可能是有限的,也有可能是无限的。

举例:张三对李四做了行为,对李四造成了伤害,李四在当天就能感受到伤害,而且,这个伤害明天,后头都还是有的,但是,时间是最好的良药,随着时间的推移,李四对于张三对自己造成的伤害感觉没有那么大了,会有一个wei折扣,用 \(\gamma\) 来表示。故真正的回报表示为:

\[\large G_t = R_{t+1} + \gamma R_{t+2}+\gamma^2 R_{t+3} \ ...\ +\gamma^{T-t-1}R_T = \sum_{i=0}^{\infty}\gamma^i R_{t+i+1} \quad \quad \gamma\in[0,1],\quad (T\rightarrow\infty) \]

\(G_t\) 来衡量一个策略的好坏,\(G_t\) 大的策略就好,反之。

举个例子,就像我们给一盆花浇水,水是多了还是少了,对于这盆花来说我们是不得知的,可能会少,也可能会多。这个花的状态变化也就是随机的了。从上面的例子得知,如果还是用 \(G_t\) 来对一个策略来进行评估的话,至少有9中情况(随机策略,3个action选一种)。

\(G_t\) 只能评估的是一个“分叉”而已(图中绿色分支)。而不能更好的进行评估。如下图所示:

因为回报不能很好的对策略进行一个评估,由此引入了另外一个概念——价值函数。

3.3 价值函数:Value Function

在指定一个状态 \(s\) ,采取一个随机策略 \(\pi\) ,然后加权平均,以上图为例,把9 个分叉(\(G_t\))加权平均。也就是期望 \(E\)。故得出价值函数:

\[\large V_\pi(s) = E_\pi[G_t\mid S_t = s] \]

3.3.1 价值函数分类

\[Value \quad Function = \begin{cases} v_\pi(s) = E_\pi[G_t\mid S_t = s], & \text {only $s$ is independent variable} \\ q_\pi(s,a) = E_\pi[G_t\mid S_t = s,A_t = a], & \text{Both $s$ and a are independent variable} \end{cases} \]

上面提到的的价值函数其实是其中的一种

(1)状态价值函数\(v_\pi(s)\)​​​

只和状态有关系

(2)状态动作价值函数\(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\) 是没有约束的。

3.3.2 两种价值函数之间的关系
(1) \(v_\pi(s)\)\(q_\pi(s,a)\) 之间的关系

还是以上图为例,对于 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) = \pi(a_1 \mid s)·q_\pi(s,a_1) + \pi(a_2 \mid s)·q_\pi(s,a_2) + \pi(a_3 \mid s)·q_\pi(s,a_3) \]

这样一来我们就得出了 \(v_\pi(s)\)\(q_\pi(s,a)\) 之间的关系,若条件已知,就可以直接计算出 \(v_\pi\)

\[\large v_\pi(s) = \sum_{a\in A} \pi(a\mid s) ·q_\pi(s,a) \]

对于某个状态 \(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)\)​​​)。

(2) \(q_\pi(s,a)\)\(v_\pi(s')\) 之间的关系

从下面图中可得,在 \(q_\pi(s,a)\)​ 位置,(一个action)状态转移只能向“箭头”方向转移,而不能向上。如果想从下面的状态转移到上面的状态,那必须还要另外一个action。情况是一样的,就按下图来说明,经过a3后到达状态s',此时的状态函数就是 \(v_\pi(s’)\)​。

image-20201128134834753

上面的图可知: 在确定了s 后,由随机策略的action,引起“分叉”,同理,以a3为例,因为系统状态转移的随机性,也会引起分叉,也就是 s' 的状态也是不确定的。还有一点 r 也又不确定性,如下图蓝色虚线部分。

image-20201128135658979

由我们前面提到的公式也可得知:s' 和 r 都是随机的。比如说s,a ,s' 都是给定的,r也是不确定的。

\(p(s',r\mid s,a) \dot{=} Pr\lbrace S_{t+1}=s',R_{t+1} = r \mid S_{t} =s,A_{t}=a \rbrace\)

这样一来,可得一条蓝色通路的回报

\(q_\pi(s,a) = r + \gamma v_\pi(s') \quad\quad\quad (1)\)

(1)式是怎么来的呢?

以上图为例,在 \(q_\pi(s,a)\)​ 处往下走,选定一个 r ,再往下到达一个状态s', 此时在往下还是同样的状态,就是俄罗斯套娃,以此类推。关于其中的 $\gamma v_\pi(s') $​ ,来自于 \(G_t\)​​。看下面的式子:

\(G_t = R_{t+1} + \gamma R_{t+2}+\gamma^2 R_{t+3} \ ...\ +\gamma^{T-t-1}R_T \quad\quad \gamma\in[0,1],\quad (T\rightarrow\infty)\)

\(G_t = R_{t+1} + \gamma(R_{t+2}+\gamma R_{t+3}+\gamma^2 R_{t+4}+ ...)\)

因为 \(v_\pi(s)\) 来自 \(G_t\) ,故类比得(1)式。

因为走每条蓝色的通路也都是有概率的,故我们需要乘上概率,同时累加求和,一个是多条蓝色通路另一个是多个s'。故得:\(q_\pi(s,a)\)​ 和 \(v_\pi(s')\)​ 之间的关系 如下:

\(q_\pi(s,a) =\sum_{s',r}P(s',r \mid s,a)[r+ \gamma v_\pi(s')] \quad\quad\quad (2)\)

三、贝尔曼期望等式(方程)

这样我们得到两个式子:

$v_\pi(s) = \sum_{a\in A} \pi(a\mid s) ·q_\pi(s,a) \quad\quad\quad\quad\quad\quad\quad\quad\ (3) $

\(q_\pi(s,a) =\sum_{s',r}P(s',r \mid s,a)[r+ \gamma v_\pi(s')] \quad\quad\quad (4)\)

(4)式带入(3)得:

\(v_\pi(s) = \sum_{a\in A} \pi(a\mid s) \sum_{s',r}P(s',r \mid s,a)[r+ \gamma v_\pi(s')] \quad\quad\quad\quad\quad\quad (5)\)

(3)式带入(4)得:

\(q_\pi(s,a) =\sum_{s',r}P(s',r \mid s,a)[r+ \gamma \sum_{a'\in A} \pi(a'\mid s') ·q_\pi(s',a') ] \quad\quad (6)\)

关于(6)式可以看下图,更容易理解:

(5)式和(6)式 被称为贝尔曼期望方程

  • 一个实例:

    例子是一个学生学习考试的MDP。里面实心圆位置是起点,方框那个位置是终点。上面的动作有study, Pub, Facebook, Quit, Sleep,每个状态动作对应的即时奖励R已经标出来了。我们的目标是找到最优的状态动作价值函数或者状态价值函数,进而找出最优的策略。

    image-20201129160656460

    为了方便,我们假设衰减因子 \(\gamma =1, \pi(a|s) = 0.5\) 。对于终点方框位置,由于其没有下一个状态,也没有当前状态的动作,因此其状态价值函数为0,对于其他的状态(圆圈)按照从上到下,从左到右的顺序定义其状态价值函数分别是 \(v_1,v_2,v_3,v_4\) ,根据(5)式 :

    \[v_\pi(s) = \sum_{a\in A} \pi(a\mid s) \sum_{s',r}P(s',r \mid s,a)[r+ \gamma v_\pi(s')] \quad\quad\quad\quad\quad\quad (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\), 即每个状态的价值函数如下图:

image-20201129162749453

从上面可以看出,针对一个特定状体,状态价值函数计算都是基于下一个状态而言的,通俗的讲,按照“出箭头”的方向计算当前状态的价值函数。

Summary

image-20201128152843746

四、MDP贝尔曼最优方程

4.1 最优价值函数

能够使得 \(v\)(状态价值函数)​ 达到最大值的那个 \(\pi\)​ ,这个 \(\pi\)​ 被成为最优策略,进而得到最优状态价值函数。同理得到最优状态动作价值函数

$ v_*(s)\ \dot{=}\ \ \underset{\pi}{max} \ v_\pi(s) $​

$q_*(s,a)\ \dot{=}\ \ \underset{\pi}{max} \ q_\pi(s,a) $

\(\pi_* = \underset{\pi}{argmax} \ v_\pi(s) = \underset{\pi}{argmax} \ q_\pi(s,a)\),含义是 \(\pi_*\) 可以使得 $ v_*(s)$达到最大值,同样的,也可以使得 \(q_\pi(s,a)\) 达到最大值。

由以上公式得:

$v_(s)=\underset{\pi}{max}\ v_\pi(s)= v_{\pi_}(s) $

\(q_*(s,a)=\underset{\pi}{max}\ q_\pi(s,a)= 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)= \underset{a}{max}\ q_\pi(s,a)\)

假定 \(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)\)​ 中的\(\pi_{*}\)还有提高的空间,并不是最优策略,这和条件矛盾了。所以这个小于不成立,得证:\(v_{\pi_*}(s)= \underset{a}{max}\ q_\pi(s,a)\)

其实,上面的式子是由 (3)式

\(v_\pi(s) = \sum_{a\in A} \pi(a\mid s) ·q_\pi(s,a) \quad\quad (3)\)

演变而来的。\(v_{\pi_*}(s)\)​ 直接取最大值时候和 \(\underset{a}{max}\ q_\pi(s,a)\)​ 的最大值是相等的。也就是此时不用加权平均了,直接是 \(v_\pi(a) = q_\pi(s,a)\)​​ 。

详细证明过程如下:

image-20201129190023306

那么从原先的(4)式能不能也得出相似的结论,把求和符号去掉,直接等于最大值呢?

\(q_\pi(s,a) =\sum_{s',r}P(s',r \mid s,a)[r+ \gamma v_\pi(s')] \quad\quad (4)\)

答案是否定的,因为\(v_{\pi_*}(s)= \underset{a}{max}\ q_\pi(s,a)\) 是作用在action上的,在公式中也可以看出,换句话说,我们对于下图的a1,a2,a3这里是可以控制的。但是对于下图中的蓝色虚线部分,系统状态转移是无法控制的。

image-20201128135658979

所以,原先的两组公式(3)、(4)并 结合(7)、(8)

$v_\pi(s) = \sum_{a\in A} \pi(a\mid s) ·q_\pi(s,a) \quad\quad\quad\quad\quad\quad\quad\quad\ (3) $

\(q_\pi(s,a) =\sum_{s',r}P(s',r \mid s,a)[r+ \gamma v_\pi(s')] \quad\quad\quad (4)\)

并进行一个推导,得出另外的两组公式(9)、(10)如下:

\(v_*(s)=\underset{a}{max}\ q_*(s,a) \quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad (9)\)

\(q_*(s,a)= \sum_{s',r}P(s',r \mid s,a)[r+\gamma v_*(s')] \quad\quad\quad (10)\)

4.2 贝尔曼最优方程

(10)式带入(9)式得:

\(v_*(s)=\underset{a}{max}\sum_{s',r}P(s',r \mid s,a)[r+\gamma v_{*}(s')] \quad\quad(11) \\\)

(9)式带入(10)式得:

\(q_*(s,a)= \sum_{s',r}P(s',r \mid s,a)[r+\gamma \underset{a'}{max}\ q_*(s',a') ] \quad\quad (12)\)

(11)、(12)被称为贝尔曼最优方程

  • 一个实例:还是以上面的例子讲解,我们这次以动作价值函数 \(q_*(s,a)\) 为例来求解 $v_(s),q_(s,a) $

    image-20201129160656460

根据(12)式

\[\large q_*(s,a)= \sum_{s',r}P(s',r \mid s,a)[r+\gamma \underset{a'}{max}\ q_*(s',a') ] \quad\quad (12) \]

可得方程组如下:

\[\large{\begin{align} q_*(s_4, study) & = 10 \\ q_*(s_4, pub) & = 1 + 0.2 * \underset{a'}{max}q_*(s_2, a') + 0.4 * max_{a'}q_*(s_3, a') + 0.4 * \underset{a'}{max}q_*(s_4, a') \\ q_*(s_3, sleep) & = 0 \\ q_*(s_3, study) & = -2 + \underset{a'}{max}q_*(s_4, a') \\ q_*(s_2, study) & = -2 + \underset{a'}{max}q_*(s_3, a') \\ q_*(s_2, facebook) & = -1 + \underset{a'}{max}q_*(s_1, a') \\ q_*(s_1, facebook) & = -1 + \underset{a'}{max}q_*(s_1, a') \\ q_*(s_1, quit) & = 0 + \underset{a'}{max}q_*(s_2, a') \end{align}} \]

然后求出所有的 \(q_*(s,a)\),然后再利用 \(v_*(s) = \underset{a'}{max}q_*(s,a)\),就可以求出所有的 \(v_*(s)\),最终结果如下图所示:

image-20201130141108720

详细的计算过程可以看下视频 的简单分析。https://www.bilibili.com/video/BV1Fi4y157vR/

Summary

image-20201129210325397

参考文献

https://www.bilibili.com/video/BV1RA411q7wt

https://www.cnblogs.com/pinard/p/9426283.html

https://www.davidsilver.uk/wp-content/uploads/2020/03/MDP.pdf

https://www.cnblogs.com/jsfantasy/p/jsfantasy.html

posted @ 2021-08-19 10:55  TR_Goldfish  阅读(157)  评论(0编辑  收藏  举报