马尔可夫决策过程

马尔可夫决策过程

个人在学习「马尔可夫过程」时(基于这本教材,强烈推荐),做了些总结,并将遇到了一些感到困惑自我解答了,在此整理并记录一下。

1. 马尔可夫性质

简单的一句话:当前状态 只取决于上一时刻 的状态。这个视频很生动地解释了这一性质。

2. 马尔可夫过程

image

「马尔可夫过程」也叫「马尔可夫链」,可以用元组 \((S, P)\) 来表示,也就是组成马尔可夫过程的这些东西。

图中 绿圈 表示的 $s_1, s_2, s_3 …… $ 就是状态(state),所有的状态就组成了 状态集合 \(S\)
图中 蓝色 的那些数字与它所在的箭头就表示了「状态之间的转移概率」。将状态视为节点,转移概率视为单向边,看得出来它就是图结构。用「邻接矩阵」表示就得到了 状态转移矩阵 \(P\)

\[P = \begin{bmatrix} 0.9 & 0.1 & 0 & 0 & 0 & 0 \\ 0.5 & 0 & 0.5 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0.6 & 0 & 0.4 \\ 0 & 0 & 0 & 0 & 0.3 & 0.7 \\ 0 & 0.2 & 0.3 & 0.5 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 \end{bmatrix}\]

所以,我们可以像寻路(图搜索)一样,从一个状态出发去往某个状态,途径节点所构成的「路径」我们称为 「状态转移序列」,例如从 \(s_2\) 出发,可以有这样的序列:\(s_2 \to s_3 \to s_4 \to s_6\),我们也将寻路的这个步骤称为 「采样」

3. 马尔可夫奖励过程(MRP)

image

在「马尔可夫过程」的基础上添加 \(r 和 \gamma\),构成了「马尔可夫奖励过程」,可以用 \((S, P, r, \gamma)\) 表示。

其中 \(r\)「奖励函数」,表示 到达状态时 获得的奖励期望。图中用红色数字就表示了每个状态的 \(r\)
\(\gamma\) 是一个 0 ~ 1 的数字,表示 「折扣因子」, 是对远期收益的采取的限制,在计算状态序列的「回报」时会用到。

1. 回报

计算「回报」需要 通过「状态转移序列」,而且计算出来的这个「回报」是指这个 序列起点状态的回报 。比如下图红线标出的选中的序列 \(s_1 \to s_2 \to s_3 \to s_6\):

image

取折扣因子 \(\gamma = 0.5\),那么\(s_1\) 的回报

\[ \begin{aligned} G_1 &= 0.5^0 \times (-1) + 0.5^1 \times (-2) + 0.5 ^2 \times(-2) + 0.5^3 \times (0) \\ & = -1 + 0.5 \times (-2) + 0.5^2 \times (-2)\\ & = -2.5 \end{aligned} \]

回报的计算过程可以用「秦九昭算法」进行简化,这也是开篇提及的那本教材中代码部分的做法。

2. 价值函数

以一个状态作为起点所生成的「状态转移序列」可以有很多,而且从一个状态转移到另外一个状态是有概率的,把这点考虑在内后,我们可以求得 从一个状态开始执行的所有可能状态转移序列的累积期望回报(这也是蒙特卡洛法的依据),这个期望值就称为起点状态的 「价值」

所有状态的价值就组成了 「价值函数」,用 \(V\) 表示,它允许我们输入一个状态,就返回其对应的「价值」。根据「价值函数」的计算过程(不细说了),我们可以得出 贝尔曼方程

\[V(s) = r(s) + \gamma \sum_{s'\in S} p(s'|s)V(s') \]


PS:可能有人会对贝尔曼期望方程推导的这一步感到困惑:

image

其实这么转换的依据是 「全期望公式」

image

对于小型的马尔可夫链,可以直接通过矩阵运算将上述式子硬解出 \(V\),这也就是 「解析法」

4. 马尔可夫决策过程(MDP)

image

「马尔可夫过程」和「马尔可夫奖励过程」都是 自发改变 的随机过程;而如果有「外力」来共同改变这个随机过程,就有了「马尔可夫决策过程」。在「马尔可夫奖励过程」的基础上,再添加作为「外力」的 动作集合 \(A\) 就得到「马尔可夫决策过程」,用 \((S, A, P, r, \gamma)\) 表示。

图中黄色圆圈就表示「动作」,可以看出,在马尔可夫决策过程中,状态之间的切换必须通过动作。

通过与「马尔可夫奖励过程」的对比,来看看一些新概念:

image

二者都有蓝色虚线箭头,表示单向转移的概率(「决策过程」没有标出数字的蓝色箭头,是因为从那个动作出发只有一根箭头,概率为1);但明显「马尔可夫决策过程」还有一种黑色实线箭头,而且也没有标注表示概率的数字,是因为没有概率吗?

image

非也,这个黑色箭头也是要有概率的,只不过具体概率的多少是人为给定的,所有这样人为制定的从「状态」到「动作」的概率就称为 「策略」,用 \(\pi\) 表示,例如,针对上面的决策过程,给出一个「策略」\(\pi_2\) ,那么决策过程就像上图那样。

还可以看到一个明显的不同,奖励过程中的 奖励值 \(R\) 标在状态上,而决策过程, \(R\) 标在动作上。更具体地,奖励过程中的奖励函数只取决于状态,可记为 \(r(s)\);决策过程的奖励函数 同时取决于状态和动作,记为 \(r(s, a)\)

image

既然「奖励函数」在动作身上,那我们也可以像「马尔可夫奖励过程」一样求得动作的「价值函数」,只不过这个「价值函数」表示的是,在策略 \(\pi\) 下,从起点状态 \(s\) 通过执行动作 \(a\) 所得的期望回报,我们称其为 「动作价值函数」,用 \(Q^\pi(s, a)\) 表示:

\[Q^\pi(s,a)=r(s,a)+\gamma\sum_{s'\in S}P(s'|s,a)V^\pi(s') \]

通过「动作价值函数」可以进一步求得「从状态 \(s\) 出发遵循策略 \(\pi\) 能获得的期望回报」,也就是 「状态价值函数」,用 \(V^\pi(s)\) 表示。它等于在该状态下基于策略 \(\pi\) 采取所有动作的概率与相应的价值相乘再求和的结果:

\[V^\pi(s)=\sum_{n \in A}\pi(a|s)Q^\pi(s,a) \]

1. 贝尔曼期望方程

通过上述两个价值函数,可以得出各自的 贝尔曼期望方程

image

5. 蒙特卡洛法求解 \(V\)

解析法的时间复杂度是 \(O(n^3)\),难以用于普遍情况。蒙特卡洛法对于每个状态都进行大量「采样」,各自得到大量状态转移序列,再分别求出这些序列的「回报」的平均值作为各自状态的「价值」,从而求出「价值函数」。听起来很无脑,但却是合理的,因为这就是在模拟获取状态的所有可能序列,与「价值」的定义相符。

再求平均值时,推荐使用 增量式 方法:

image

6. 占用度量

即便是同一个「马尔可夫决策过程」,策略 \(\pi\) 不同,就会导致「价值函数」不同。

我们可以定义 「状态访问概率」,顾名思义,表示在执行某个策略时,状态 被访问到的概率。这意味着它告诉我们在与MDP交互并执行某个策略时,智能体会花费多少时间在每个状态上,或者说智能体会以多大的概率处于每个状态。

\(P_t^\pi(s)\) 表示采取策略 \(\pi\) 使得智能体在时刻状态 \(t\) 时刻状态为 \(s\) 的概率,那么

\[v^\pi(s) = (1-\gamma)\sum_{t=0}^\infty\gamma^tP_t^\pi(s) \]

注意,根据等比数列求和公式可知, \(\sum_{t=0}^\infty\gamma^t = \frac{1}{1-\gamma}\),所以乘上 \((1-\gamma)\) 进行归一化。

同样,我们定义 「占用度量」,它表示执行某个策略时,行动 被访问到的概率:

\[v^\pi(s) = (1-\gamma)\sum_{t=0}^\infty\gamma^tP_t^\pi(s)\pi(a|s) \]

7. 最优策略

强化学习的目标通常是找到一个策略,使得智能体从初始状态出发能获得最多的期望回报。

因此,我们希望能找到一个最好的策略 \(\pi\),对于任一的状态 \(s\),都能使得 $V^\pi(s) \ge V^\pi{'}(s) \((\)\pi'$指其它策略),那这个策略就称为 「最优策略」,用 \(\pi^*\) 表示。

对应的,最优策略下得到的「状态价值函数」也用 \(V^{*}(s)\) 表示,意为「最优状态价值函数」。「动作价值函数」同理:「最优动作价值函数」\(Q^{*}(s,a)\)

1. 贝尔曼最优方程

同样,我们可以写出这两个状态函数的 贝尔曼最优方程

image
posted @ 2024-03-04 21:41  狐王驾虎  阅读(66)  评论(0编辑  收藏  举报