大家对于马尔可夫性质应该很熟悉,就是下一时刻只于当前有关,与之前无关的性质(在此不做过多赘述,不了解可以参考其他文章),那一个具有马尔可夫性质的随机过程就叫做马尔科夫过程或者马尔科夫链。
马尔可夫过程可以用来描述一个智能体不同时刻的状态与状态间的转移特性,所以,一个马尔可夫过程就可以用两个元素来表示,分别为:
:有限的状态集,是智能体能达到所有状态的集合
:状态转移集合,是智能体在不同状态间转移的概率,即
可以定义状态转移矩阵(n为状态集的元素个数)来描述完整的状态转移,即
此时,我们的智能体就像一个木筏在水中随波逐流,什么也看不见,什么也动不了
这个模型描述了一位大学生会做的事情,所以,我们的动作集就包含了三门课程(class1, class2, class3),娱乐活动包括社交(Pub)和Facebook,还有睡觉和考试。这个图就描述了不同状态之间的转移特性,箭头表示可能发生的状态转移,箭头上的数字就代表着发生该状态转移的概率。例如当我们上完第二节课(class2)的时候,有0.8的概率去上第三门课,有0.2的概率去睡觉。所以我们的状态转移集合就可以表示了,例如 。
已知所有的转移概率和所有的状态,就可以用同一个矩阵来表示一个马尔可夫过程,如下图。
在马尔可夫过程的基础上,赋予不同状态奖励,例如在上节提到的学生马尔可夫链中,如果根据心情,每上一节课就会累一点,去休闲就会轻松一点,考试通过了就普天同庆,也就是说,赋予每一个状态一个对应的奖励,我们就得到了——马尔可夫奖励过程。
上图就是被赋予了奖励的马尔可夫过程。(CSDN有些吃像素,看不清可单击),我认为到目前为止还很容易理解。类比于MP,MRP也可以利用三个元素来表示,唯一增加的就是奖励集合。并且很容易地看出,集合中的元素和状态集中的元素相同(每个状态有且仅有一个奖励)。
假设我们现在处于一个状态,就可以看到下一步该去那个状态比较好,虽然我们现在还是小木船随波逐流,没有发动机没办法决定下一步怎么走,只能看着。想要进行状态转移的控制,就需要加上动作,就变成了马尔可夫决策过程。
铺垫了这么久,终于到了今天的主角:马尔可夫奖励过程。他被用来描述强化学习的交互过程。具体为什么用它,稍后就会明白。
我们把马尔可夫过程当作一个木筏, 只会随波逐流;马尔可夫奖励过程就是带着一位“观察员”的木筏,可以看到环境中不同状态下的奖励;那么接下来我们就要在船上安一个发动机。
再加入动作(动作集合)之后,我们就可以在不同状态下选择动作。标准的MDP如下流程:
在某一状态下,可以实行动作,在动作的作用下,状态发生改变并得到到达下一状态所对应的奖励。欸?这不就是强化学习的交互过程吗?所以说,用MDP再适合不过了。
由于我们添加了动作,之前定义的状态转移变得与动作有关,不仅仅随波逐流了,定义式也有所改变:
所以,动作可以一定程度上影响状态的转移,但是还需考虑海浪的随机作用。
我们还可以利用在某一状态下做某一动作获得奖励的期望来评价一个动作的好坏(做出一个动作之后,可能有多种的状态转移,按照出现的概率做加权求和)
现在你已经有一艘船,和一位看得比较近的(只能看见下一步的收益)观察员,船长就成了决定“船往哪里开?”的重要角色。策略就起到船长的作用。
在MDP中,我们需要做出动作来改变状态,策略π 是概率的集合或分布,定义了系统的行为方式,可以由以下矩阵表示, 其元素 π(a|s) 为对过程中的某一状态 s 采取可能的行为 a 的概率, 用 π(a|s)表示:。
策略分为两种:
固定性策略:面对同一状态,只采取唯一的动作,策略输出一个确定动作,可看做一种特殊的随机策略。
随机策略:面对一个状态,有不同概率做不同的动作,策略输出不同可能动作的概率分布。
强化学习的最终目标就是学习到一个最优策略,面对所有已知的状态,都能输出一个能得到最大收益的动作或动作的概率分布。
需要注意的是:策略具有静态的特性。同一策略,不是同一个时间,但是同一个状态的情况下,输出的动作或者动作的分布应该是相同的。
当前我们的观察员只能看见下一步的奖励,但一个好的观察者往往能额外看见比较远地方的情况以供船长做出更好的决策,所以我们引入回报。
考虑到状态的后效性,我们引入一个未来奖励的加和来代替一步的奖励作为评判基准。
其中,对于未来较近和较远获得的奖励不能同样看待,所以添加衰减折扣()。
接近0时会导致近视评估,接近1时会导致远视评估。
还是之前的学生马尔科夫奖励过程,我们来探讨为什么要引入累计奖励。
我们上完第一节课的时候,如果仅看一步的奖励,我们会选择奖励是-1的Facebook。但是选择之后我们发现它陷入了循环,对于奖励最大的PASS无动于衷。我们需要让他建立一个理想:获得PASS的+10奖励,看得远一点。
类似于前两个过程,MDP可以由五个元素表示:
下一章,我将会对评论状态好坏的状态价值函数,贝尔曼方程做叙述。
如果本文对你有帮助的话麻烦点个赞,对这方面感兴趣的同学可以关注下,如果有自己的见解欢迎评论区讨论,大家一起进步!!