从马尔科夫决策过程到强化学习(From Markov Decision Process to Reinforcement Learning)
作者:Bluemapleman(tomqianmaple@outlook.com)
Github:https://github.com/bluemapleman (欢迎star和fork你喜欢的项目)
知识无价,写作辛苦,欢迎转载,但请注明出处,谢谢!
前言:强化学习本身的设定其实和马尔科夫决策过程(Markov Decision Process,简称MDP)很像,可以说,就是条件简化版的马尔科夫决策过程。因此,学习MDP模型,会很有助于我们理解强化学习的动机与意义。
文章目录
提前规划:马尔科夫决策过程
马尔科夫决策过程,是这样一类问题——它由以下几个集合或者函数定义——:
- 状态集合(Set of states):s ∈ \in ∈S
- 行动集合(Set of Actions):a ∈ \in ∈A
- 状态转换函数(Transition function) T(s,a,s’)
- 回报函数(Reward function) R(s,a,s’)
- 初始状态(Start state) s 0 s_0 s0
- 终点状态(Terminal state) (可有可无/optional)
用一个形象的机器人迷宫例子来说明以上这些概念的含义:
机器人迷宫
图来自Berkeley CS188教案
假设有如上这么一个网格游戏,主角是一个机器人,它从Start字样的方格开始出发,可以任意以1个方格为单位四处走动。而机器人走到有宝石的地方(4,3)会获得加分,并结束游戏;走到有陷阱的地方(4,2)会减分,并结束游戏。(2,2)位置是一个障碍,无法通过。
那么在以上场景里:
- 状态集合
机器人所可处的所有网格的集合:S={(1,1),(1,2),(1,3),(2,1)…}
- 行动集合
机器人可以采取的行动集合: A={上,下,左,右}
- 状态转换函数:
在这里我们有一个重要设定:当机器人采取某个行动,它并不一定达到该行动预期应当到达的状态,而是有一定可能到达其它状态。
举例来说,如果机器人当前在如上图所示的(3,1)位置,当它采取行动{上},它不会百分之百到达(3,2)位置,而是还有一定概率到达邻近的其它位置(比如(2,1),(4,1))。
停词,状态转换函数T(s,a,s’)描述了:机器人在状态s下采取行动a时,它到达不同后继状态的概率分布。
例如:
s | a | s’ | T(s,a,s’)/Probability(s’) |
---|---|---|---|
(3,1) | 上 | (2,1) | 0.2 |
(3,1) | 上 | (3,2) | 0.7 |
(3,1) | 上 | (4,1) | 0.1 |
… | … | … | … |
这个设定的意义在于,它在原本确定的搜索问题里引入了随机因素(不确定性)。如果这个问题的目标是找到一个行动策略序列,使得机器人的分值可以最大化,并且问题是确定的(即每个状态下的行动有确定的结果/后继状态),那么这个问题其实就是一个简单的搜索问题,我们可以依据给定的信息的程度,决策用非智能搜索(uninformed search)算法如BFS/DFS/Uniform Cost Search,或者用智能搜索(informed search)算法如A* Search来解决问题。(以上搜索算法详情请参考CS188教案)。
然而,因为有了这个设定,这个问题有了不确定性,这也是我们为什么专门设立了MDP这个新概念来描述这一类问题的动机所在。(而我们要费力气把问题搞得复杂,也正是为了让问题越来越贴近现实情况,强化学习也是把不确定问题近一步抽象化,使得更贴近实际情况,当然这是后话)
- 回报函数
当机器人在状态s下采取了行动a,到达后继状态s’后,会获得一个回报值,该值由R(s,a,s’)定义。
更一般的情况下,R(s,a,s’)可能只由s’决定,因此R(s,a,s’)=R(s’)。
比如在上图中,R((4,3))=1, R((4,2))=-1, R(other states)=0。
如何解决机器人迷宫的最优化问题
定义MDP搜索树
我们尝试把MDP问题贴近到确定性问题的搜索问题:可以定义如上这么一个MDP搜索树,每个三脚结点代表一个状态(根三角结点代表初始状态)。而每个椭圆结点代表一个“状态-行动”结点,它表示在状态s下采取行动a后,机器人可能处于的各种后继状态的总集,这个总集按照T(s,a,s’)的分布,分支出子结点。
而我们的目标就是:找到最优的叶子状态结点,它具有最高的reward值。
策略(Policy)
我们需要定义一个新概念:策略(Policy)。
如其字面意义,我们需要有一个参考,这个参考告诉机器人:当机器人处在状态s时,应当采取哪一个行动。
它可以表示为 π ∗ : S − > A \pi^*:S->A π∗:S−>A
所以策略本质上也是一个函数 π ( s ) = a \pi(s)=a π(s)=a。而一个**最优策略(optimal policy)**是一个只要机器人遵从,就会获得最大期望效益/得分的策略。
- 策略效用折现(Discounting)
我们每次往MDP搜索树的下一层进发时,我们都需要对下一层的效用进行一次折现。因为直觉来说,我们对于数量相同的效用,它出现在未来和出现在现在的价值可能完全是不一样的,(考虑给你两个选择,现在给你100块,和10年后给你105块,你选哪一个?肯定是前者对不对?毕竟有通货膨胀,而且指不定10年后我还给不给你这笔钱。)
而从问题解决来说,对后续的回报进行折现,也是有利于我们的算法尽快收敛到最优解上的。
解决方案:Value Iteration
总结一下,我们现在面对的MDP问题的设定是如上图这样的。
而我们接下来将给出的第一个解决MDP问题的方法是Value Iteration。在了解这个方法的具体做法之前,我们还需要定义几个新的重要函数:
- 状态s的效用: