请先阅读上一篇文章:【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系列】马尔可夫决策过程中状态价值函数的一般形式的更多相关文章

  1. 【RL系列】马尔可夫决策过程——状态价值评价与动作价值评价

    请先阅读上两篇文章: [RL系列]马尔可夫决策过程中状态价值函数的一般形式 [RL系列]马尔可夫决策过程与动态编程 状态价值函数,顾名思义,就是用于状态价值评价(SVE)的.典型的问题有“格子世界(G ...

  2. 强化学习入门基础-马尔可夫决策过程(MDP)

    作者:YJLAugus 博客: https://www.cnblogs.com/yjlaugus 项目地址:https://github.com/YJLAugus/Reinforcement-Lear ...

  3. 马尔可夫决策过程MDP

    1. 马尔可夫模型的几类子模型 马尔科夫链(Markov Chain),了解机器学习的也都知道隐马尔可夫模型(Hidden Markov Model,HMM).它们具有的一个共同性质就是马尔可夫性(无 ...

  4. 转:增强学习(二)----- 马尔可夫决策过程MDP

    1. 马尔可夫模型的几类子模型 大家应该还记得马尔科夫链(Markov Chain),了解机器学习的也都知道隐马尔可夫模型(Hidden Markov Model,HMM).它们具有的一个共同性质就是 ...

  5. 增强学习(二)----- 马尔可夫决策过程MDP

    1. 马尔可夫模型的几类子模型 大家应该还记得马尔科夫链(Markov Chain),了解机器学习的也都知道隐马尔可夫模型(Hidden Markov Model,HMM).它们具有的一个共同性质就是 ...

  6. 【RL系列】马尔可夫决策过程——Jack‘s Car Rental

    本篇请结合课本Reinforcement Learning: An Introduction学习 Jack's Car Rental是一个经典的应用马尔可夫决策过程的问题,翻译过来,我们就直接叫它“租 ...

  7. [Reinforcement Learning] 马尔可夫决策过程

    在介绍马尔可夫决策过程之前,我们先介绍下情节性任务和连续性任务以及马尔可夫性. 情节性任务 vs. 连续任务 情节性任务(Episodic Tasks),所有的任务可以被可以分解成一系列情节,可以看作 ...

  8. 【cs229-Lecture16】马尔可夫决策过程

    之前讲了监督学习和无监督学习,今天主要讲“强化学习”. 马尔科夫决策过程:Markov Decision Process(MDP) 价值函数:value function 值迭代:value iter ...

  9. 强化学习-MDP(马尔可夫决策过程)算法原理

    1. 前言 前面的强化学习基础知识介绍了强化学习中的一些基本元素和整体概念.今天讲解强化学习里面最最基础的MDP(马尔可夫决策过程). 2. MDP定义 MDP是当前强化学习理论推导的基石,通过这套框 ...

随机推荐

  1. SQLServer2008导出表数据为SQL脚本

    SQLServer2008的导出脚本方法: 数据库名-->右键 任务-->生存脚本 之后弹出SQLServer脚本生成向导 选择数据库 把编写数据可脚本这一项改为true,默认是false ...

  2. [HNOI2005]汤姆的游戏

    嘟嘟嘟 直接O(n ^ 2)暴力判断就行了. 对于圆,判断该点和圆心的距离是否小于半径. 然而为啥我这么写编译不过: scanf("%lf%lf%lf%lf", &a[++ ...

  3. Python 装饰器---装饰类的两种方法

    这是在类的静态方法上进行装饰,当然跟普通装饰函数的装饰器区别倒是不大 def catch_exception(origin_func): def wrapper(self, *args, **kwar ...

  4. Python Flask高级编程

    第1章 课程导语介绍课程的内容1-1 开宗明义 试看1-2 课程维护与提问 第2章 Flask的基本原理与核心知识本章我们首先介绍Python官方推荐的最佳包与虚拟环境管理工具:Pipenv.接着我们 ...

  5. HDU 1203 01背包变形题,(新思路)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1203 I NEED A OFFER! Time Limit: 2000/1000 MS (Java/ ...

  6. STM32定时器输出PWM频率和步进电机控制速度计算

    1.STM32F4系列定时器输出PWM频率计算 第一步,了解定时器的时钟多少: 我们知道AHP总线是168Mhz的频率,而APB1和APB2都是挂在AHP总线上的. (1)高级定时器timer1, t ...

  7. Python 包、模块、函数、变量作用域

    Python 项目的组织结构 - 包 -- 模块 --- 类 ---- 函数.变量   Python是利用包和模块来组织一个项目的.   包: 包的物理表现是一个文件夹,但是一个文件夹却不一定是个包, ...

  8. canvas 绘制双线技巧

    楔子 最近一个项目,需要绘制双线的效果,双线效果表示的是轨道(类似铁轨之类的),如下图所示: 负责这块功能开发的小伙,姑且称之为L吧,最开始是通过数学计算的方式来实现这种双线,也就是在原来的路径的基础 ...

  9. Spark MemoryManager内存模型

  10. linux下pcf8563驱动时钟使用

    环境: HelperA64开发板 Linux3.10内核 时间:2019.01.17 目标:PCF8563实时时钟驱动的使用 问题:因为pcf8563的驱动是linux内核自带的,网上也有很多分析的方 ...