[一起学RL] 十个问题认识MDP

2022-09-19 10:59:46 浏览数 (1)

关注我们,一起学习~

导读

强化学习的背景在之前的文章中已经进行了简单介绍,今天主要和大家分享MDP马尔科夫决策过程的相关内容。MDP可谓是其他强化学习的祖师爷,其他方法都是在祖师爷的基础上开枝散叶的,因此要学习强化学习就要学习MDP。

本文主要参考的内容在“参考”部分,将学习的一些笔记进行分享,和大家一起学习。关于MDP的讲解,这篇文章讲的很清楚,感兴趣的小伙伴可以进入阅读。此次主要将内容进行精简,从10个问题带大家认识MDP,对MDP有一个总体的了解。

主要内容:

  • 介绍MDP的基本概念
  • 知识点
  • 用例子串起来

MDP基本概念

Q1. 什么是MDP?

MDP,马尔科夫决策过程是一个随机过程,该随机过程中每个状态的转移都满足马尔科夫性,并且状态转移概率包含动作和上一个状态。主要由有限状态集合S,有限动作集合A,状态转移概率P,折扣因子γ以及回报(奖励)函数R组成。

Q2. 什么是随机过程?

一系列随机变量组成的序列称为随机过程

Q3. 什么是马尔科夫性?

下一个状态(

s_{t 1}

)只和当前状态(

s_{t}

)有关,与之前的状态(

s_{t-2},s_{t-3}...

)无关。

Q4. 什么是决策?

所谓决策即包含动作,由动作和当前状态来得到下一个状态。

P[S_{t 1}=s'|S_t=s,A_t=a]

表示的当前状态s下,执行动作a能转移到下一个状态s'的概率。

知识点

Q5. 什么是回报?

回报(R)是智能体在某个状态s下执行某个动作a从而转移到一下个状态s'后环境给予的反馈,称之为奖励或回报。

Q6. 什么是累积回报?

累积回报通常可以表示为

G_t=R_{t 1} gamma R_{t 2} ...=sum_{k=0}^{infty}{gamma^kR_{t 1 k}}

。从当前状态按照一定的策略往后面的状态转移,每次转移都可以得到环境给予的回报R,并且离当前位置越远的状态对当前位置的影响应该越小,因此这里需要一个折扣因子

gamma

对其进行加权。

Q7. 什么是策略?

所谓策略即为在状态s下智能体采取各种动作的概率表示为

pi(a|s)=p[A_t=a|S_t=s]

Q8. 什么是状态值函数?

因为策略是采取不同动作的概率,而在状态s处采取动作a后根据转移矩阵可能转移到不同的状态,因此在策略

pi

下同一状态s可能会产生不同的状态序列,不同的序列可以得到不同的累积回报G,从s出发的多个G的期望作为价值函数。其反映在该状态下可以得到的期望累积回报,通俗理解就是走到这个状态可以得到的累积回报是多少,从而判断是否要往这个状态走。

v_{pi}(s)=E_{pi}[sum_{k=0}^{infty}{gamma^kR_{t k 1}|S_t=s}]

通过对

R_{t 1}

之后的求和提取γ可以得到状态值函数的递推式

V(S_t)=E(R_{t 1} gamma V(S_{t 1}))

Q9. 什么是动作值函数?

如图所示,除了“7.4”以外,其他状态节点采取动作后转移的状态是固定的。这里以“7.4”节点为例,执行“发表”动作后,存在三种状态转移的可能,那么在执行某个动作之后可以得到的期望累积回报,通俗理解就是在状态s的时候如果选择这个状态可以得到的累积回报会是多少,从而判断是否要选这个动作。同样可以得到下面的递推式,

q_{pi}(s,a)=E_{pi}[R_{t 1} gamma q(S_{t 1},A_{t 1}) | S_t=s,A_t=a]

Q10. 状态值函数和动作值函数有什么关系?

一次转移过程:在状态s时根据策略π选择并执行动作后转移到下一个状态s'。那么这个过程可以表示为上图,白色圆表示状态,黑色圆表示动作。在状态s时,根据策略π可以选择两个动作,在执行动作a之后可能转移到两个后续状态。那么就可以得到下式来表达状态和动作之间值函数的关系,

白话:把这个状态下可能执行的动作都做一遍,然后计算他们的期望就是状态值函数

v_{pi}(s)=sum_{ain A}{pi(a|s)q_{pi}(s,a)}

白话:P表示在状态s时执行动作a转移到s'的概率,因此左式表示执行动作a后,后续可能到达的状态的值函数的期望,右式表示执行动作后可以得到的奖励(回报)。

q_{pi}(s,a)=R_s^a gamma sum_{s'}{P_{ss'}^av_{pi}(s')}

最后可以得到与Q8,Q9中bellman递推式的详细版本,具体如下,一个个位置对应一下比较容易理解的。

v_{pi}(s)=sum_{a in A} pi(a mid s)left(R_{s}^{a} gamma sum_{s^{prime} in S} P_{s s^{prime}}^{a} v_{pi}left(s^{prime}right)right)
q_{pi}(s, a)=R_{s}^{a} gamma sum_{s^{prime} in S} P_{s s^{prime}}^{a} sum_{a^{prime} in A} pileft(a^{prime} mid s^{prime}right) q_{pi}left(s^{prime}, a^{prime}right)

例子:

有一个机器人小夏,在一个迷宫里寻找宝藏,有的地方时陷阱,有的地方是路,有一个地方是宝藏,那么机器人应该如何才能快速地找到宝藏,并且不落入陷阱。这里的机器人需要作出一系列的决策从起点快速安全到达宝藏点。

那么这里小夏能到的每一个地方我们可以认为是状态s,小夏在迷宫中的移动是动作a,它每到一个地方都会得到不同的奖励(回报),例如到陷阱就要被惩罚(负回报),到宝藏点获得奖励(正回报)等,每次前进有所消耗,因此也可以给予相应的负回报,这样可以敦促他尽快到达宝藏点。而对从这个状态下到最终的地点的总回报的估计就是累积回报。通过不断的训练,小夏从一开始的导出乱撞,到最后可以快速的到达宝藏点,获取宝藏。

小夏每次做决策的时候,都需要考虑往哪走,走多少,到达哪个位置。通过什么来判断呢?就是通过在不断学习的过程中计算得到的状态值函数和动作值函数,小夏判断到达状态s的值函数最大,则他可以选择走这个位置。

下期预告:从Q9的图中可以发现,每个状态的值函数的值都已经给出了,那么应该如何在迭代中计算他们,并进行相应的决策呢?下期和大家分享。

参考

https://zhuanlan.zhihu.com/p/25498081 https://www.bilibili.com/video/BV15a4y1j7vg?p=2

0 人点赞