马尔可夫决策过程实例讲解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
V :对于任意指定的策略 ,定义值函数V 为:
V (s) E[R(s0 ) R(s1) 2R(s2) s0 s, ] (2)
由V 的定义可以看出,V (s) 就是从状态 s 出发,依据策略 采取行动后的总回报函数的
期望。
为直观理解,画出格子机器人例子中的某一个策略以及相应的计算出了的V (具体计
这并不意味着我们无法求解 * 了,毕竟我们的目标就是找到最优的策略 * 来指导我们
的行动。求解思路如下:先求解出V * ,然后由 * 的定义求解出 * ,下面有两种算法可以帮
助我们实现目标:
Value Interation
算法步骤:
1. 对于每个状态 s,初始化V (s) =0; 2. 重复以下步骤直至收敛 {
(5) 这是最优值函数的贝尔曼方程中的第二项,它回答的问题是:在当前状态 s 下,才采取 怎样的行动才是最优的。当然,想求解该表达式,必须先求得V *(s) 的具体表示。但是公
式(4)并没有给我们一个漂亮的算法去计算它(相比于之前固定的策略 然后求解 n 个线 性方程的解法,这里由于策略 不固定,可能有的 组合过多)。
本意是不变的哈。其中: S 表示状态集(states) A 表示行为集(actions)
Psa 表示状态转换分布,对于当前状态 s 和当前采取的动作 a,下一个状态 s, 服从 Psa 分布(下
一 个 状 态 出 现 的 概 率 依 赖 于 前 一 个 状 态 以 及 前 状 态 所 采 取 的 动 作 ), 而 且 有
即命令机器人朝北(朝上)行走,他有 0.1 的概率朝着左右方向,0.8 的概率朝指定方 向。当机器人撞到墙上或者要走到不是相邻的格子时,其概率为 0.(当然,也有关于 Psa 的确定性模型,即命令机器人朝北,那么机器人就必然是向北运动的,这是很理想的模型, 我们在此不加以研究。)让我们还是用例子来说明:假设上例中机器人状态为(3,1),动 作指令为 N,则相应的如下:
R:SxR 表示奖励函数。R 为实数。有时候 R 只与状态 S 有关(更多时候与状态 S 与行
为 A 都有关),下面的例子就是如此。为了更加具体的表示五元组的含义,我们来说一个 MDP 相关的具体例子:
上图的场景表征的是机器人导航任务,想象一个机器人生活在网格世界中,阴暗单元是 一个障碍。假设我希望机器人到达的目的地是右上角的格子(4,3),于是我用+1 奖励来 关联这个单元;我想让它避免格子(4,2),于是我用-1 奖励来关联该单元。现在让我们 来看看在该问题中,MDP 的五元组是什么: S:机器人可以在 11 个网格中的任何一个,那么一共有 11 个状态;集合 S 对应 11 个可 能到达的位置。 A={N S E W}。机器人可以做出的动作有 4 个:向东 向南 向西 向北。 Psa :假设机器人的行为核心设计并不是那么精准,机器人在受到相关指令后有可能会走偏 方向或者行走距离不那么精确,为简化分析,建立机器人随机动态模型如下:
对每个状态 s,更新
} 算法步骤简单,思想也简单但有效:重复贝尔曼公式(4),更新V (s) 。经过验证,该算
法 最 终 能 够 使 得 V (s) V *(s) 。 具 体 证 明 值 迭 代 算 法 收 敛 的 过 程 可 以 参 考 文 档
file:///E:/rearchStudent3/201501.15@MDP/MDP%E8%B5%84%E6%96%99/introduction%20of% 20MDP--Princeton.pdf 中的 3-10 部分。
样),即 s1 Ps0a0 。在 s1 采取的动作是 a1 A ,同样地得到一个新的状态 s2
流程图如下:
Ps1a1 ,类推。
我们令状态序列 s0,s1Baidu Nhomakorabeas2 的总回报为:
在上面机器人例子中,由于奖励函数 R 只与状态 S 有关,则总回报写成:
自增强学习算法的目标是使得总回报的期望最大化,即:
max E[R(s0 ) R(s1) 2R(s2) ]
(1)
在这样的目标函数下,因为 [0,1) ,越往后权重 m 的值越小,因此采取的行动策略是:
积极的奖励尽量在前面(越快出现越好),消极惩罚尽量在后面(越晚出现越好)。
相应的,一个策略(policy)函数定义为 : S A ,即输入为状态 S,输出为 A,亦即策 略 (s) a 告诉我们在状态 s 下该执行的动作是什么。例子中格子机器人行走至目的地的最
反之选 value iteration。
下面来着手解决一个可能的情况:假设 MDP 中的五元组中我不知道{ Psa },如何处理呢?这
种情况是常见的:当试图控制直升机的时候,你一开始并不知道直升机从初始状态过渡到什 么状态或者在某一状态下采取的行动是什么,因为直升机整个系统很复杂,往往不清楚会到
达什么状态。
(3) 上式就是贝尔曼公式(Bellman equation).其中, R(s) 项可视为我们采取状态 s 作为初始状 态的立即回报,而第二项可视为将来的回报。
事实上,给定一个固定的策略 ,我们可以通过贝尔曼公式求接触相应的V ,以刚刚 的例子来说,设 为
对于状态(3,1),策略 指示动作为向上,写下贝尔曼公式为: V ((3,1)) R((3,1)) [0.8V ((3, 2)) 0.1V ((4,1)) 0.1V ((2,1))]
有了V * ,我们就能够通过公式得到 * 。该算法可以使用同步更新和异步更新,效果差不多。
回到格子机器人的例子,我们最终算出和 * 如下所示:
让我们用计算来说明,为什么在状态(3,1)中向左走更好? 向左走:
Psa (s, )V *(s, ) s,
0.8*0.75 0.1*0.69 0.1*0.71 0.74
算方式很快会给出):
当然,这个策略是一个很糟糕的策略,和最优策略相比差太多了。
上式还可以写成:V (s) E[R(s0 ) (R(s1) R(s2) ) s0 s, ] ,里面的一项 其实就是:V (s1) E[R(s1) R(s2) s1 s, ] 。也就是说,值函数可以表示成:
自增强学习成功应用在了无人机飞行、机器人行走、市场决策选择等问题上。为了正式 地定义自增强学习,我们先来看马尔科夫决策过程(Markov Decision Process,简写 MDP)。
Markov Decision Process
一个马尔科夫决策过程是一个五元组 (S,A,{Psa}, ,R) ,当然有一些书籍上用四元组表示,
曼方程可以写成:
(4) 第一项可以视为采取状态 s 作为最初状态的立即回报,第二项即使在状态 s 上采取行动 a 时获得的将来回报(由于 a 有多重选择,选择可以令总回报期望最大的那个 a)。同样
需要注意的是,这里不再限制需要依据某一个固定的 作选择。同样的,我们可以通过联
立方程求解V * 。
* --根据上面的推导,可以定义 * 如下:
向上走:
Psa (s, )V *(s, ) s,
0.8*0.69 0.1*0.75 0.1*0.49 0.67
计算结果显示:向左走的总回报期望更大。
Policy Interation
算法步骤:
1. 随机初始化策略 ;
2. 重复以下步骤直至收敛 {
(a) 令V : V ;其中V 通过求解贝尔曼方程(多个方程联立)得到;
同样的,还可以写下另外 10 个状态下的贝尔曼公式,一共 11 个公式,求解 11 个未知数(现
在变成了求解线性方程组的问题了),可以求解出对应的V 。
V * (s) 定义最优值函数为:
V *(s)= maxV (s)
从定义可以看出,V *(s) 其实就是从状态 s 出发,依据任意一个 所能够获得的最大的总回 报函数的期望。注意,这里不再限制需要依据某一个固定的策略 。关于最优值函数的贝尔
设置其他状态的奖励函数为 R(s) 0.02 的做法相当普遍,可以认为这是电池消耗所应有
的付出,目的在于提醒机器人不要浪费时间,尽快达到目的地。 另外一个需要注意的是,当机器人达到目的地(我们这里是(4,3))后,那么系统应该
停止,不再计算下去。
让我们来看看 MDP 的动态处理过程:
初始状态 s0 采取的动作是 a0 A ,那么下一个状态将会被随机选择(只不过概率不一
作出决策或者控制时,我们很难提供一个确切的正确答案。比如在四足机器人行走编程中, 我们在一开始的时候对才去怎样的行动是“正确的”根本没有概念,我们只知道这是一个足部 调节的过程,因此在这里,监督学习算法并不适用。
在自增强学习框架中,算法的核心是奖励函数,区分出学习过程中哪些行为是“好”的, 哪些行为是“坏”的。对于四足机器人行走问题,当机器人能够向前进时,我们给予积极奖励; 当机器人向后退或者跌倒时候,我们给予消极惩罚。这样,有了奖励惩罚机制,在多次训练 后,机器人会越走越好。
仅可以使用以上方法来估计{ Psa },还可以结合更多的先验知识(经验方法)。当奖励函数 R
不清楚的时候,同样的思路可以让我们去估计在状态 s 下的即时奖励 R(s). 值得注意的是,在增强学习算法当中,面对不同的实际问题时,有很多时候是多种方法
混合使用的。我们不需要拘泥于仅仅使用一种算法。
补充: 关于 MDP 的代码实现,由于我正在学习 java,找到一个 java 的算法库: http://burlap.cs.brown.edu/index.html 这是一个基于面向对象 MDP(OO-MDP)建立起来的框架,能够实现增强学习方面的很
这个时候,需要做的事情就是尝试从数据中估计出状态转移分布{ Psa },具体做法如下:
Psa (s, )
#在状态s采取行动a时转变到状态s,的次数 (如果 #在状态s采取行动a时转变转变状态的总次数
0 0
,则令 Psa (s, )
1 s
)
在实际工作中,随着我们试验次数的增加或者对实验对象了解程度有所加深,我们不仅
(b)
对每个状态 s,更新 (s) : arg max aA
s,
Psa (s, )V (s, )
}
算法步骤依然简洁。在比较两个算法的计算成本时候,因为 policy iteration 需要求解 n
个方程联立的问题(n 为状态数),所以可以这样选:在状态数较少的时候,选 policy iteration ,
佳策略如下:
对应目标函数,我们或许就不难理解机器人位于(3,1)时的最佳策略是向左走而不是向 上走,因为希望“积极奖励越快出现越好,消极惩罚越晚出现越好”,向上确实可以更快 得到奖励+1,但是路途中有更大的可能会出现消极惩罚-1.因此该最佳策略可以理解为一 种折中选择的结果。
为了知道如何得出最佳策略的算法,我们还需要定义一些变量:
Psa (s, ) 1, Psa (s, ) 0 。这里隐含的是马尔科夫性质:一个随机过程的未来状态的条件概 s,
率分布仅仅依赖于当前状态与该状态下的动作,换句话说,在给定现在状态的时候,它与过
去状态是条件独立的。在一些资料中将 Psa 写成矩阵形式,即状态转换矩阵。
[0,1) 表示的是 discount factor,具体含义稍后解释。
P(3,1)N ((3, 2)) 0.8; P(3,1)N ((2,1)) 0.1; P(3,1)N ((4,1)) 0.1;P(3,1)N ((3,3)) 0;...
R:奖励函数可以设置为:
R((4,3)) 1 R((4, 2)) 1 R(s) 0.02对于其他状态s
Machine Learning 16—Reinforcement Learning
之前我们学过 3 个部分的内容:监督学习、学习理论、半监督学习。现在我们来学 习第四部分:自增强学习。
在监督学习中,给定了训练集以及对应的标签 y ,算法要做的就是令预测输出尽可能
地接近 y 。在这种情况下,算法运行过程中对应的是有正确答案的。但有些时候,在对问题
V (s) E[R(s0 ) R(s1) 2R(s2) s0 s, ] (2)
由V 的定义可以看出,V (s) 就是从状态 s 出发,依据策略 采取行动后的总回报函数的
期望。
为直观理解,画出格子机器人例子中的某一个策略以及相应的计算出了的V (具体计
这并不意味着我们无法求解 * 了,毕竟我们的目标就是找到最优的策略 * 来指导我们
的行动。求解思路如下:先求解出V * ,然后由 * 的定义求解出 * ,下面有两种算法可以帮
助我们实现目标:
Value Interation
算法步骤:
1. 对于每个状态 s,初始化V (s) =0; 2. 重复以下步骤直至收敛 {
(5) 这是最优值函数的贝尔曼方程中的第二项,它回答的问题是:在当前状态 s 下,才采取 怎样的行动才是最优的。当然,想求解该表达式,必须先求得V *(s) 的具体表示。但是公
式(4)并没有给我们一个漂亮的算法去计算它(相比于之前固定的策略 然后求解 n 个线 性方程的解法,这里由于策略 不固定,可能有的 组合过多)。
本意是不变的哈。其中: S 表示状态集(states) A 表示行为集(actions)
Psa 表示状态转换分布,对于当前状态 s 和当前采取的动作 a,下一个状态 s, 服从 Psa 分布(下
一 个 状 态 出 现 的 概 率 依 赖 于 前 一 个 状 态 以 及 前 状 态 所 采 取 的 动 作 ), 而 且 有
即命令机器人朝北(朝上)行走,他有 0.1 的概率朝着左右方向,0.8 的概率朝指定方 向。当机器人撞到墙上或者要走到不是相邻的格子时,其概率为 0.(当然,也有关于 Psa 的确定性模型,即命令机器人朝北,那么机器人就必然是向北运动的,这是很理想的模型, 我们在此不加以研究。)让我们还是用例子来说明:假设上例中机器人状态为(3,1),动 作指令为 N,则相应的如下:
R:SxR 表示奖励函数。R 为实数。有时候 R 只与状态 S 有关(更多时候与状态 S 与行
为 A 都有关),下面的例子就是如此。为了更加具体的表示五元组的含义,我们来说一个 MDP 相关的具体例子:
上图的场景表征的是机器人导航任务,想象一个机器人生活在网格世界中,阴暗单元是 一个障碍。假设我希望机器人到达的目的地是右上角的格子(4,3),于是我用+1 奖励来 关联这个单元;我想让它避免格子(4,2),于是我用-1 奖励来关联该单元。现在让我们 来看看在该问题中,MDP 的五元组是什么: S:机器人可以在 11 个网格中的任何一个,那么一共有 11 个状态;集合 S 对应 11 个可 能到达的位置。 A={N S E W}。机器人可以做出的动作有 4 个:向东 向南 向西 向北。 Psa :假设机器人的行为核心设计并不是那么精准,机器人在受到相关指令后有可能会走偏 方向或者行走距离不那么精确,为简化分析,建立机器人随机动态模型如下:
对每个状态 s,更新
} 算法步骤简单,思想也简单但有效:重复贝尔曼公式(4),更新V (s) 。经过验证,该算
法 最 终 能 够 使 得 V (s) V *(s) 。 具 体 证 明 值 迭 代 算 法 收 敛 的 过 程 可 以 参 考 文 档
file:///E:/rearchStudent3/201501.15@MDP/MDP%E8%B5%84%E6%96%99/introduction%20of% 20MDP--Princeton.pdf 中的 3-10 部分。
样),即 s1 Ps0a0 。在 s1 采取的动作是 a1 A ,同样地得到一个新的状态 s2
流程图如下:
Ps1a1 ,类推。
我们令状态序列 s0,s1Baidu Nhomakorabeas2 的总回报为:
在上面机器人例子中,由于奖励函数 R 只与状态 S 有关,则总回报写成:
自增强学习算法的目标是使得总回报的期望最大化,即:
max E[R(s0 ) R(s1) 2R(s2) ]
(1)
在这样的目标函数下,因为 [0,1) ,越往后权重 m 的值越小,因此采取的行动策略是:
积极的奖励尽量在前面(越快出现越好),消极惩罚尽量在后面(越晚出现越好)。
相应的,一个策略(policy)函数定义为 : S A ,即输入为状态 S,输出为 A,亦即策 略 (s) a 告诉我们在状态 s 下该执行的动作是什么。例子中格子机器人行走至目的地的最
反之选 value iteration。
下面来着手解决一个可能的情况:假设 MDP 中的五元组中我不知道{ Psa },如何处理呢?这
种情况是常见的:当试图控制直升机的时候,你一开始并不知道直升机从初始状态过渡到什 么状态或者在某一状态下采取的行动是什么,因为直升机整个系统很复杂,往往不清楚会到
达什么状态。
(3) 上式就是贝尔曼公式(Bellman equation).其中, R(s) 项可视为我们采取状态 s 作为初始状 态的立即回报,而第二项可视为将来的回报。
事实上,给定一个固定的策略 ,我们可以通过贝尔曼公式求接触相应的V ,以刚刚 的例子来说,设 为
对于状态(3,1),策略 指示动作为向上,写下贝尔曼公式为: V ((3,1)) R((3,1)) [0.8V ((3, 2)) 0.1V ((4,1)) 0.1V ((2,1))]
有了V * ,我们就能够通过公式得到 * 。该算法可以使用同步更新和异步更新,效果差不多。
回到格子机器人的例子,我们最终算出和 * 如下所示:
让我们用计算来说明,为什么在状态(3,1)中向左走更好? 向左走:
Psa (s, )V *(s, ) s,
0.8*0.75 0.1*0.69 0.1*0.71 0.74
算方式很快会给出):
当然,这个策略是一个很糟糕的策略,和最优策略相比差太多了。
上式还可以写成:V (s) E[R(s0 ) (R(s1) R(s2) ) s0 s, ] ,里面的一项 其实就是:V (s1) E[R(s1) R(s2) s1 s, ] 。也就是说,值函数可以表示成:
自增强学习成功应用在了无人机飞行、机器人行走、市场决策选择等问题上。为了正式 地定义自增强学习,我们先来看马尔科夫决策过程(Markov Decision Process,简写 MDP)。
Markov Decision Process
一个马尔科夫决策过程是一个五元组 (S,A,{Psa}, ,R) ,当然有一些书籍上用四元组表示,
曼方程可以写成:
(4) 第一项可以视为采取状态 s 作为最初状态的立即回报,第二项即使在状态 s 上采取行动 a 时获得的将来回报(由于 a 有多重选择,选择可以令总回报期望最大的那个 a)。同样
需要注意的是,这里不再限制需要依据某一个固定的 作选择。同样的,我们可以通过联
立方程求解V * 。
* --根据上面的推导,可以定义 * 如下:
向上走:
Psa (s, )V *(s, ) s,
0.8*0.69 0.1*0.75 0.1*0.49 0.67
计算结果显示:向左走的总回报期望更大。
Policy Interation
算法步骤:
1. 随机初始化策略 ;
2. 重复以下步骤直至收敛 {
(a) 令V : V ;其中V 通过求解贝尔曼方程(多个方程联立)得到;
同样的,还可以写下另外 10 个状态下的贝尔曼公式,一共 11 个公式,求解 11 个未知数(现
在变成了求解线性方程组的问题了),可以求解出对应的V 。
V * (s) 定义最优值函数为:
V *(s)= maxV (s)
从定义可以看出,V *(s) 其实就是从状态 s 出发,依据任意一个 所能够获得的最大的总回 报函数的期望。注意,这里不再限制需要依据某一个固定的策略 。关于最优值函数的贝尔
设置其他状态的奖励函数为 R(s) 0.02 的做法相当普遍,可以认为这是电池消耗所应有
的付出,目的在于提醒机器人不要浪费时间,尽快达到目的地。 另外一个需要注意的是,当机器人达到目的地(我们这里是(4,3))后,那么系统应该
停止,不再计算下去。
让我们来看看 MDP 的动态处理过程:
初始状态 s0 采取的动作是 a0 A ,那么下一个状态将会被随机选择(只不过概率不一
作出决策或者控制时,我们很难提供一个确切的正确答案。比如在四足机器人行走编程中, 我们在一开始的时候对才去怎样的行动是“正确的”根本没有概念,我们只知道这是一个足部 调节的过程,因此在这里,监督学习算法并不适用。
在自增强学习框架中,算法的核心是奖励函数,区分出学习过程中哪些行为是“好”的, 哪些行为是“坏”的。对于四足机器人行走问题,当机器人能够向前进时,我们给予积极奖励; 当机器人向后退或者跌倒时候,我们给予消极惩罚。这样,有了奖励惩罚机制,在多次训练 后,机器人会越走越好。
仅可以使用以上方法来估计{ Psa },还可以结合更多的先验知识(经验方法)。当奖励函数 R
不清楚的时候,同样的思路可以让我们去估计在状态 s 下的即时奖励 R(s). 值得注意的是,在增强学习算法当中,面对不同的实际问题时,有很多时候是多种方法
混合使用的。我们不需要拘泥于仅仅使用一种算法。
补充: 关于 MDP 的代码实现,由于我正在学习 java,找到一个 java 的算法库: http://burlap.cs.brown.edu/index.html 这是一个基于面向对象 MDP(OO-MDP)建立起来的框架,能够实现增强学习方面的很
这个时候,需要做的事情就是尝试从数据中估计出状态转移分布{ Psa },具体做法如下:
Psa (s, )
#在状态s采取行动a时转变到状态s,的次数 (如果 #在状态s采取行动a时转变转变状态的总次数
0 0
,则令 Psa (s, )
1 s
)
在实际工作中,随着我们试验次数的增加或者对实验对象了解程度有所加深,我们不仅
(b)
对每个状态 s,更新 (s) : arg max aA
s,
Psa (s, )V (s, )
}
算法步骤依然简洁。在比较两个算法的计算成本时候,因为 policy iteration 需要求解 n
个方程联立的问题(n 为状态数),所以可以这样选:在状态数较少的时候,选 policy iteration ,
佳策略如下:
对应目标函数,我们或许就不难理解机器人位于(3,1)时的最佳策略是向左走而不是向 上走,因为希望“积极奖励越快出现越好,消极惩罚越晚出现越好”,向上确实可以更快 得到奖励+1,但是路途中有更大的可能会出现消极惩罚-1.因此该最佳策略可以理解为一 种折中选择的结果。
为了知道如何得出最佳策略的算法,我们还需要定义一些变量:
Psa (s, ) 1, Psa (s, ) 0 。这里隐含的是马尔科夫性质:一个随机过程的未来状态的条件概 s,
率分布仅仅依赖于当前状态与该状态下的动作,换句话说,在给定现在状态的时候,它与过
去状态是条件独立的。在一些资料中将 Psa 写成矩阵形式,即状态转换矩阵。
[0,1) 表示的是 discount factor,具体含义稍后解释。
P(3,1)N ((3, 2)) 0.8; P(3,1)N ((2,1)) 0.1; P(3,1)N ((4,1)) 0.1;P(3,1)N ((3,3)) 0;...
R:奖励函数可以设置为:
R((4,3)) 1 R((4, 2)) 1 R(s) 0.02对于其他状态s
Machine Learning 16—Reinforcement Learning
之前我们学过 3 个部分的内容:监督学习、学习理论、半监督学习。现在我们来学 习第四部分:自增强学习。
在监督学习中,给定了训练集以及对应的标签 y ,算法要做的就是令预测输出尽可能
地接近 y 。在这种情况下,算法运行过程中对应的是有正确答案的。但有些时候,在对问题