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的奖励。其实就是下图所示的一个过程。这是一个动态的过程,由此,引出动态函数。
2.1 动态函数: $ p(s',r\mid s,a)$
The function \(p\) defines the dynamics of the MDP. 这是书上的原话,也就说,这个动态函数定义了MDP的动态特性
,动态函数如下:
r确定
2.2 状态转移函数: \(p(s'\mid s,a)\)
我们去掉 \(r\) ,也就是reward
,动态函数也就成了状态转移函数。
reward
的动态性: 在 s 和 a 选定后,r 也有可能是不同的,即 r 也是随机变量。但是,大多数情况在 s 和 a 选定后 r 是相同的,这里只做简单的介绍。
r为变量
三、Markov Decision Process的价值函数
3.1 策略:Policy
在Markov Decision Process中,即马尔可夫决策过程,最重要的当然是策略(Policy),用 \(\pi\) 来表示。
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\) 来表示。故真正的回报表示为:
用 \(G_t\) 来衡量一个策略的好坏,\(G_t\) 大的策略就好,反之。
举个例子,就像我们给一盆花浇水,水是多了还是少了,对于这盆花来说我们是不得知的,可能会少,也可能会多。这个花的状态变化也就是随机的了。从上面的例子得知,如果还是用 \(G_t\) 来对一个策略来进行评估的话,至少有9中情况(随机策略,3个action选一种)。
\(G_t\) 只能评估的是一个“分叉”而已(图中绿色分支
)。而不能更好的进行评估。如下图所示:
因为回报不能很好的对策略进行一个评估,由此引入了另外一个概念——价值函数。
3.3 价值函数:Value Function
在指定一个状态 \(s\) ,采取一个随机策略
\(\pi\) ,然后加权平均,以上图为例,把9 个分叉(\(G_t\))加权平均。也就是期望 \(E\)。故得出价值函数:
3.3.1 价值函数分类
上面提到的的价值函数其实是其中的一种
(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)\) 和 \(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)\))。
(2) \(q_\pi(s,a)\) 和 \(v_\pi(s')\) 之间的关系
从下面图中可得,在 \(q_\pi(s,a)\) 位置,(一个action)状态转移只能向“箭头”方向转移,而不能向上。如果想从下面的状态转移到上面的状态,那必须还要另外一个action。情况是一样的,就按下图来说明,经过a3后到达状态s',此时的状态函数就是 \(v_\pi(s’)\)。
上面的图可知: 在确定了s 后,由随机策略的action,引起“分叉”,同理,以a3为例,因为系统状态转移的随机性,也会引起分叉,也就是 s' 的状态也是不确定的。还有一点 r 也又不确定性,如下图蓝色虚线部分。
由我们前面提到的公式也可得知: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已经标出来了。我们的目标是找到最优的状态动作价值函数或者状态价值函数,进而找出最优的策略。
为了方便,我们假设衰减因子 \(\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\), 即每个状态的价值函数如下图:
从上面可以看出,针对一个特定状体,状态价值函数计算都是基于下一个状态而言的,通俗的讲,按照“出箭头”的方向计算当前状态的价值函数。
Summary
四、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)\) 。
详细证明过程如下:
那么从原先的(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这里是可以控制的。但是对于下图中的蓝色虚线部分,系统状态转移是无法控制的。
所以,原先的两组公式(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) $
根据(12)式
可得方程组如下:
然后求出所有的 \(q_*(s,a)\),然后再利用 \(v_*(s) = \underset{a'}{max}q_*(s,a)\),就可以求出所有的 \(v_*(s)\),最终结果如下图所示:
详细的计算过程可以看下视频 的简单分析。https://www.bilibili.com/video/BV1Fi4y157vR/
Summary
参考文献
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