强化学习笔记1————马尔科夫链与Q值和V值
最近工作上的事情比较少,有时间来学一下自己一直比较感兴趣的强化学习,之前多次有想法去系统的学习一下,但都因为其他事情中断了,这次打算趁着这段时间比较空闲,把强化学习入个门,为了督促自己学下去,开个坑记录一下,争取用1-2周完成这个系列。
网上的教程大多数原自David Silver大神的课程(B站链接),各种翻译水平层次不齐,看到不好的教程直接把人劝退。在广泛的搜罗后发现知乎有一位大神的讲解很好,本系列也是结合视频以及他的文章所做的学习笔记。原文链接
马尔科夫链
谈起强化学习就一定离不开马尔科夫链,就像谈起神经网络就离不开神经元一样。作为在大学《随机课程》里面就接触到过的概念,这里理解起来还是比较容易的的,这里的简要的回顾一下。
70年代的时候,数学家们为了更好的研究强化学习问题,提出了重要的假设——马尔科夫性(Markov property),它讲的是系统的下一个状态$S_{t+1}$仅与当前状态$S_t$有关,而与之前的所有状态无关,即:
这个公式强大的地方在于我们可以把历史全部甩去,只对当前状态负责任,注意到上式是一个条件概率,也就是说:我当前看到一帧图像,我未来可能会看到的下一帧图像的概率,等于从我历史上看到的所有图像、到下一帧图像的概率;以打砖块为例,我当前把这个游戏打成这个德行,它可能是有很多很多次操作促成的,但没关系,我都不管,未来我要怎么操作,只和我当前的德行有关,至于过去是怎么做的,我完全不管。因为有了马尔科夫性,我当前概率由很多的历史状态过来,它们都有相应的概率,于是就可以将这些概率展开,直接进行状态向前推移或回退的计算。就算状态数量很多,我至少“扔掉了历史的包袱”。
在强化学习中,马尔科夫链的经典表达图例这样的。在马尔科夫链中,有三个重要的元素:S,A,R。我们分别来看一下,他们代表的是什么。然后大家就会明白,为什么马尔科夫链是一个很好很常用的模型。
- 智能体在环境中,观察到状态(S);
- 状态(S)被输入到智能体,智能体经过计算,选择动作(A);
- 动作(A)使智能体进入另外一个状态(S),并返回奖励(R)给智能体。
- 智能体根据返回,调整自己的策略。 重复以上步骤,一步一步创造马尔科夫链。
总结
- 马尔科夫链是用来描述智能体和环境互动的过程。
- 马尔科夫链包含三要素:state,action,reward
- state:只有智能体能够观察到的才是state。
- action:智能体的动作。
- reward:引导智能体工作学习的主观的值。
- 马尔科夫链的不确定性
- 核心思想:如果你不希望孩子有某种行为,那么当这种行为出现的时候就进行惩罚。如果你希望孩子坚持某种行为,那么就进行奖励。这也是整个强化学习的核心思想
V值和Q值
学习V值和Q值之前牢记一句话:V是对状态节点的估算,Q是对动作节点的估算。其中,我们估算的是,从该节点,一直到最终状态,能够获得的奖励的总和的平均值。
V值的定义
从V值的计算,我们可以知道,V值代表了这个状态的今后能获得奖励的期望。从这个状态出发,到达最终状态,平均而言能拿到多少奖励。所以我们轻易比较两个状态的价值。V值跟我们选择的策略有很大的关系。 会根据不同的策略有所变化!具体来说,会更加每个测量选择的概率不同而不同,因为最后算期望的的时候,其实是各个Q值的概率加权平均。
Q值的定义
如果了解V值的定义,那么理解Q值也不会有什么困难。Q值和V值的概念是一致的,都是衡量在马可洛夫树上某一个节点的价值。只不过V值衡量的是状态节点的价值,而Q值衡量的是动作节点的价值。用大白话总结就是:从某个状态选取动作A,走到最终状态很多很多次;最终获得奖励总和的平均值,就是Q值。【敲黑板】 与V值不同,Q值和策略并没有直接相关,而与环境的状态转移概率相关,而环境的状态转移概率是不变的。
V值和Q值关系
总结一下,从以上的定义,我们可以知道Q值和V值的意义相通的: 1. 都是马可洛夫树上的节点; 2. 价值评价的方式是一样的: - 从当前节点出发 - 一直走到最终节点-所有的奖励的期望值.所以,其实Q和V之间是可以相互换算的。
从Q到V
我们先来看看,怎样用Q值算V值。
从定义出发,我们要求的V值,就是从状态S出发,到最终获取的所获得的奖励总和的期望值。也就是蓝色框部分。
S状态下有若干个动作,每个动作的Q值,就是从这个动作之后所获得的奖励总和的期望值。也就是红色框部分。
假设我们已经计算出每个动作的Q值,那么在计算V值的时候就不需要一直走到最终状态了,只需要走到动作节点,看一下每个动作节点的Q值,根据策略 ,计算Q的期望就是V值了。
大白话就是:一个状态的V值,就是这个状态下的所有动作的Q值,在策略 下的期望。
从V到Q
现在我们换个角度,看一下怎样从V换算成Q值。
道理还是一样,就是用Q就是V的期望!而且这里不需要关注策略,这里是环境的状态转移概率决定的。注意当我们选择A,并转移到新的状态时,就能获得奖励,我们必须把这个奖励也算上!
其中,折扣率:在强化学习中,有某些参数是人为主观制定。这些参数并不能推导,但在实际应用中却能解决问题,所以我们称这些参数为超参数,而折扣率就是一个超参数。 与金融产品说的贴现率是类似的。我们计算Q值,目的就是把未来很多步奖励,折算到当前节点。但未来n步的奖励的10点奖励,与当前的10点奖励是否完全等价呢?未必。所以我们人为地给未来的奖励一定的折扣,例如:0.9,0.8,然后在计算到当前的Q值。
现在我们知道如何从V到Q,从Q到V了。但实际应用中,我们更多会从V到V。
但其实从V到V也是很简单的。把公式代进去就可以了。
总结
- 比起记住公式,其实我们更应该注意Q值和V值的意义:他们就像一个路牌一样,告诉我们从马可洛夫树的一个节点出发,下面所有节点的收获的期望值。也就是假设从这个节点开始,走许多许多次,最终获取的奖励的平均值。
- V就是子节点的Q的期望!但要注意V值和策略相关。
- Q就是子节点的V的期望!但要注意,记得把R计算在内。
目前来看,计算某一个节点的Q值和V值,需要许多次试验,取其中的平均值。但实际上,我们不但需要求一个节点的值,而是求所有节点的值。如果我们每一个节点都用同样的方法,消耗必然会很大。所以人们发明了许多方式去计算Q值和V值,基于价值计算的算法就是围绕Q和V展开的。