请先阅读上一篇文章:【RL系列】马尔可夫决策过程与动态编程

在上一篇文章里,主要讨论了马尔可夫决策过程模型的来源和基本思想,并以MAB问题为例简单的介绍了动态编程的基本方法。虽然上一篇文章中的马尔可夫决策过程模型实现起来比较简单,但我认为其存在两个小问题:

  • 数学表达上不够简洁
  • 状态价值评价型问题与动作价值评价型问题是分离的,形式上不够统一

本篇主要来解决第一个问题。

第一个问题是比较直观的,下面给出状态价值函数以作分析:

$$ \mathbb{Value}(S_1) = \mathbb{Reward}(S_1) + \gamma \sum_{i = 1}^{n} \pi(A_i|S_1)\sum_{j = 1}^{N(A_i)}P\left[S_{A_i}(j)|A_i, S_1\right] \mathbb{Value}\left[S_{A_i}(j)\right] $$

实际上如果将这个价值函数的后半Futrue Value部分展开了写,可以写为:

$$\begin{align}
\mathbb{Value}(S_1) & = \mathbb{Reward}(S_1) + \gamma \sum_{i = 1}^{n} \pi(A_i|S_1) \left[ \begin{matrix} P\left[S_{A_i}(1)|A_i, S_1\right] \mathbb{Value}S_{A_i}(1) + \\ P\left[S_{A_i}(2)|A_i, S_1\right] \mathbb{Value}S_{A_i}(2) + \\......\\P\left[S_{A_i}(N(A_i))|A_i, S_1\right] \mathbb{Value}S_{A_i}(N(A_i)) \end{matrix} \right] \\& = \mathbb{Reward}(S_1) + \gamma \sum_{i = 1}^{n} \pi(A_i|S_1) \left[\begin{matrix} P\left[S_{A_i}(1)|A_i, S_1\right]\\ P\left[S_{A_i}(2)|A_i, S_1\right]\\ ......\\ P\left[S_{A_i}(N(A_i)|A_i, S_1\right]
\end{matrix} \right]^T \left[\begin{matrix} \mathbb{Value}S_{A_i}(1)\\ \mathbb{Value}S_{A_i}(2)\\ ......\\ \mathbb{Value}S_{A_i}(N(A_i))
\end{matrix} \right] \end{align}$$

可以将关于动作$ A_i $的可能转移状态的价值函数矩阵写为$ \mathbf{V}(A_i) $,将状态转移概率矩阵写为$ \mathbf{P}^{T}(A_i) $,那么价值函数就可以表示为:

$$ \mathbb{Value}(S_1) = \mathbb{Reward}(S_1) + \gamma \sum_{i = 1}^{n} \pi(A_i|S_1) \mathbf{P}^{T}(A_i) \mathbf{V}(A_i) $$

如果每一个可执行的动作所可以得到的状态都是固定一样多的话,那么这个式子的形式还可以继续化简。假设在有限马尔可夫决策过程中,存在有限的动作集合$ \mathbb{A} = \{A_1, A_2, ...,A_n \} $和有限的状态集合$ \mathbb{S} = \{S_1, S_2, ...,S_m \} $, 每个动作都可以产生m个有限的状态(如果实际应用中,不可能产生的状态则状态转移概率为0)。所有动作所对应的状态转移概率矩阵$ \mathbb{P} $ 就可以写为:

$$ \mathbb{P} = \left[\begin{matrix} \mathbf{P}^{T}(A_1) \\ \mathbf{P}^{T}(A_2)\\ ......\\ \mathbf{P}^{T}(A_n) \end{matrix}\right] = \left[\begin{matrix} P\left[S_{A_1}(1)|A_1, S_1\right] & P\left[S_{A_1}(2)|A_1, S_1\right]& ... & P\left[S_{A_1}(m)|A_1, S_1\right] \\ P\left[S_{A_2}(1)|A_2, S_1\right] & P\left[S_{A_2}(2)|A_2, S_1\right]& ... & P\left[S_{A_2}(m)|A_2, S_1\right] \\ ...... & ...... & ... & ......\\ P\left[S_{A_n}(1)|A_n, S_1\right] & P\left[S_{A_n}(2)|A_n, S_1\right]& ... & P\left[S_{A_n}(m)|A_n, S_1\right] \end{matrix}\right] $$

我们同样可以设动作转移概率举证$ \mathbf{\Pi} $为:

$$ \mathbf{\Pi} = \left[\begin{matrix} \pi(A_1|S_1)\\ \pi(A_2|S_1)\\ ......\\ \pi(A_n|S_1) \end{matrix}\right]^{T} $$

这样我们就可以将对状态$ S_1 $的价值评价的一般形式写出来:

$$ \mathbb{Value}(S_1) = \mathbb{Reward}(S_1) + \gamma \mathbf{\Pi} \mathbb{P} \mathbf{V}$$

到目前位置所有公式的推导都有一个大前提,就是当前状态为$ S_1 $,如果我们将价值函数的一般形式推广到所有状态,那么除了向量$ \mathbf{V} $外,每个项的维度都会提升一个。这样的话,$\mathbf{\Pi}$矩阵变为二维矩阵,状态转移矩阵$\mathbb{P}$变为一个三维矩阵,即张量$ \mathrm{P}_{s'a}^{s} $

$$ \mathrm{P} = \mathrm{fold} \left[\begin{matrix} \mathbb{P}(S_1) \\ \mathbb{P}(S_2) \\......\\ \mathbb{P}(S_m) \end{matrix} \right] $$

至此我们可以写出状态价值函数的最一般形式:

$$ \mathbf{V} = \mathbf{R} + \gamma \mathbf{\Pi} \mathrm{P}_{s',a}^{s} \mathbf{V} $$

我们可以用状态转移图将该式表示出来,这样更加直观:

【RL系列】马尔可夫决策过程中状态价值函数的一般形式-LMLPHP

05-11 20:18