马尔可夫决策过程实例讲解
(1)
在这样的目标函数下,因为 [0,1) ,越往后权重 m 的值越小,因此采取的行动策略是:
积极的奖励尽量在前面(越快出现越好),消极惩罚尽量在后面(越晚出现越好)。
相应的,一个策略(policy)函数定义为 : S A ,即输入为状态 S,输出为 A,亦即策 略 (s) a 告诉我们在状态 s 下该执行的动作是什么。例子中格子机器人行走至目的地的最
(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))]
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 :假设机器人的行为核心设计并不是那么精准,机器人在受到相关指令后有可能会走偏 方向或者行走距离不那么精确,为简化分析,建立机器人随机动态模型如下:
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
对每个状态 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 部分。
佳策略如下:
对应目标函数,我们或许就不难理解机器人位于(3,1)时的最佳策略是向左走而不是向 上走,因为希望“积极奖励越快出现越好,消极惩罚越晚出现越好”,向上确实可以更快 得到奖励+1,但是路途中有更大的可能会出现消极惩罚-1.因此该最佳策略可以理解为一 种折中选择的结果。
为了知道如何得出最佳策略的算法,我们还需要定义一些变量:
设置其他状态的奖励函数为 R(s) 0.02 的做法相当普遍,可以认为这是电池消耗所应有
的付出,目的在于提醒机器人不要浪费时间,尽快达到目的地。 另外一个需要注意的是,当机器人达到目的地(我们这里是(4,3))后,那么系统应该
停止,不再计算下去。
让我们来看看 MDP 的动态处理过程:
初始状态 s0 采取的动作是 a0 A ,那么下一个状态将会被随机选择(只不过概率不一
V :对于任意指定的策略 ,定义值函数V 为:
V (s) E[R(s0 ) R(s1) 2R(s2) s0 s, ] (2)
由V 的定义可以看出,V (s) 就是从状态 s 出发,依据策略 采取行动后的总回子机器人例子中的某一个策略以及相应的计算出了的V (具体计
这个时候,需要做的事情就是尝试从数据中估计出状态转移分布{ Psa },具体做法如下:
Psa (s, )
#在状态s采取行动a时转变到状态s,的次数 (如果 #在状态s采取行动a时转变转变状态的总次数
0 0
,则令 Psa (s, )
1 s
)
在实际工作中,随着我们试验次数的增加或者对实验对象了解程度有所加深,我们不仅
这并不意味着我们无法求解 * 了,毕竟我们的目标就是找到最优的策略 * 来指导我们
的行动。求解思路如下:先求解出V * ,然后由 * 的定义求解出 * ,下面有两种算法可以帮
助我们实现目标:
Value Interation
算法步骤:
1. 对于每个状态 s,初始化V (s) =0; 2. 重复以下步骤直至收敛 {
算方式很快会给出):
当然,这个策略是一个很糟糕的策略,和最优策略相比差太多了。
上式还可以写成:V (s) E[R(s0 ) (R(s1) R(s2) ) s0 s, ] ,里面的一项 其实就是:V (s1) E[R(s1) R(s2) s1 s, ] 。也就是说,值函数可以表示成:
(b)
对每个状态 s,更新 (s) : arg max aA
s,
Psa (s, )V (s, )
}
算法步骤依然简洁。在比较两个算法的计算成本时候,因为 policy iteration 需要求解 n
个方程联立的问题(n 为状态数),所以可以这样选:在状态数较少的时候,选 policy iteration ,
Machine Learning 16—Reinforcement Learning
之前我们学过 3 个部分的内容:监督学习、学习理论、半监督学习。现在我们来学 习第四部分:自增强学习。
在监督学习中,给定了训练集以及对应的标签 y ,算法要做的就是令预测输出尽可能
地接近 y 。在这种情况下,算法运行过程中对应的是有正确答案的。但有些时候,在对问题
同样的,还可以写下另外 10 个状态下的贝尔曼公式,一共 11 个公式,求解 11 个未知数(现
在变成了求解线性方程组的问题了),可以求解出对应的V 。
V * (s) 定义最优值函数为:
V *(s)= maxV (s)
从定义可以看出,V *(s) 其实就是从状态 s 出发,依据任意一个 所能够获得的最大的总回 报函数的期望。注意,这里不再限制需要依据某一个固定的策略 。关于最优值函数的贝尔
样),即 s1 Ps0a0 。在 s1 采取的动作是 a1 A ,同样地得到一个新的状态 s2
流程图如下:
Ps1a1 ,类推。
我们令状态序列 s0,s1,s2 的总回报为:
在上面机器人例子中,由于奖励函数 R 只与状态 S 有关,则总回报写成:
自增强学习算法的目标是使得总回报的期望最大化,即:
max E[R(s0 ) R(s1) 2R(s2) ]
有了V * ,我们就能够通过公式得到 * 。该算法可以使用同步更新和异步更新,效果差不多。
回到格子机器人的例子,我们最终算出和 * 如下所示:
让我们用计算来说明,为什么在状态(3,1)中向左走更好? 向左走:
Psa (s, )V *(s, ) s,
0.8*0.75 0.1*0.69 0.1*0.71 0.74
向上走:
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 通过求解贝尔曼方程(多个方程联立)得到;
即命令机器人朝北(朝上)行走,他有 0.1 的概率朝着左右方向,0.8 的概率朝指定方 向。当机器人撞到墙上或者要走到不是相邻的格子时,其概率为 0.(当然,也有关于 Psa 的确定性模型,即命令机器人朝北,那么机器人就必然是向北运动的,这是很理想的模型, 我们在此不加以研究。)让我们还是用例子来说明:假设上例中机器人状态为(3,1),动 作指令为 N,则相应的如下:
自增强学习成功应用在了无人机飞行、机器人行走、市场决策选择等问题上。为了正式 地定义自增强学习,我们先来看马尔科夫决策过程(Markov Decision Process,简写 MDP)。
Markov Decision Process
一个马尔科夫决策过程是一个五元组 (S,A,{Psa}, ,R) ,当然有一些书籍上用四元组表示,
Psa (s, ) 1, Psa (s, ) 0 。这里隐含的是马尔科夫性质:一个随机过程的未来状态的条件概 s,
率分布仅仅依赖于当前状态与该状态下的动作,换句话说,在给定现在状态的时候,它与过
去状态是条件独立的。在一些资料中将 Psa 写成矩阵形式,即状态转换矩阵。
[0,1) 表示的是 discount factor,具体含义稍后解释。
曼方程可以写成:
(4) 第一项可以视为采取状态 s 作为最初状态的立即回报,第二项即使在状态 s 上采取行动 a 时获得的将来回报(由于 a 有多重选择,选择可以令总回报期望最大的那个 a)。同样
需要注意的是,这里不再限制需要依据某一个固定的 作选择。同样的,我们可以通过联
立方程求解V * 。
* --根据上面的推导,可以定义 * 如下:
反之选 value iteration。
下面来着手解决一个可能的情况:假设 MDP 中的五元组中我不知道{ Psa },如何处理呢?这