赞
踩
第十八章 Python 机器学习入门之强化学习
目录
强化学习中的状态动作函数Q(s,a)是一个非常重要的概念,再后面的贝尔曼方程中有所应用。本文主要来阐述一下什么是状态动作函数Q。
State-action value function definition
状态动作函数是一个通常用大写字母 Q 表示的函数,它是你可能处于的状态以及你可能选择在该状态中采取的行动的函数,将给出一个等于回报的数字。
定义:如果你从某个状态 S 开始,并只采取行动 A 一次, 在采取行动 A 一次之后,你就会表现得最佳。
因此,在那之后,你采取的任何行动都会导致最高的回报。
如果你从某个状态 S 开始,并只采取行动 A 一次, 在采取行动 A 一次之后,你就会表现得最佳。
上面这个定义看起来有些奇怪,我们怎么知道什么是最佳行为?
我们不要急,先来看一下之前的例子,来帮助理解。
之前我们学了一个非常好的策略,即从第2,3,4阶段向左走,从第5阶段向右走。事实证明,当折扣因子gamma γ 为0.5 时,这就是火星探测器应用的最优策略,
Q(s, a ) 将等于总回报,如果你从说采取行动 A 开始,然后在此之后表现最佳。意思就是根据这个策略采取行动,我们会得到最高的回报。
是不是还是不太懂?没关系,我们来举例说一说!
如果我们在状态2 继续采取行动,向右运动,我们会进入状态 3 ,如果想要表现最佳,继续向右最后得到回报没有向左运动得到的回报高,所以这时候我们向左运行,最后到达终端状态1,得到的回报是12.5.(这里的折扣因子是0.5),注意,这并不是最优的策略。这样运动的前提是,它采取的第一个动作是向右。状态动作函数Q 的值就是12.5.
我们接着看第二个例子,如果我们在状态2 继续采取行动,向左运动,我们会进入状态 1,如果想要表现最佳,继续向左最后得到回报比向右运动得到的回报高,所以这时候我们向左运行,最后到达终端状态1,得到的回报是50. 状态动作函数Q 的值就是50.
我们接着看第三个例子,如果我们在状态4 继续采取行动,向左运动,我们会进入状态3,如果想要表现最佳,继续向左最后得到回报比向右运动得到的回报高,所以这时候我们向左运行,最后到达终端状态1,得到的回报是12.5.状态动作函数Q 的值就是12.5.
怎么样,听完三个例子,上面有点豁然开朗的感觉?
如果我们继续这样做,我们会得到所有的对于不同状态、不同动作的状态价值函数Q 的值。
因为状态动作函数用Q 表示,所以也被叫做Q 函数,它告诉我们什么是我们的回报或真正的价值是什么?它有什么用?只需采取行动A 和 ST S(在哪个状态),然后在此之后做到表现最佳。
一旦我们可以计算Q 函数,这也将为我们提供一种选择动作的方法。
如图,上面是策略Pi 和回报R,下面是Q( s, a) 的值,
结果对比,不难发现,任何状态 S 的最佳可能回报是Q(s, a) 的最大值, 比如说在状态4,向左行动,得到的回报是12.5,向右得到的是10,12.5大,所以向左走是该状态的最佳可能返回。或者说,我们希望从状态4获得的最高回报是12.5.。
反过来说,如果我们想得到的最高回报是12.5而不是10,那么我们就一个采取行动A,向左行动,这为我们提供了更大的Q 值。所以最好的动作状态是动作A,这实际上也最大化了Q(s, a) 。
计算Q(s, a) 是后面会构建的强化学习算法的重要组成部分。
也就是说,如果我们对于每个状态和每个动作,有一种计算Q(s, a )的方法,当我们处于某种状态时,我们要做的就是查看不同的动作 A, 并选择最好的动作 A, 这也会使得Q(s, a) 最大化,所以Pi(S) 只能选择动作A,这给了Q(s, a)的最大值,这将是一个很好的行动,
如果我们在每个状态和每个动作中都可以计算Q(s, a) ,这就为我们提供了一种计算状态 S 的自动策略Pi的好方法。后面我们会提到。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。