强化学习:强化学习简介
一、简介
由于工作和研究的需要,不得不接触一部分的强化学习课程。而强化学习系列大部分原理都涉及到相当多的数学原理,啃起来也比较麻烦。我在学习的过程中,也是参考了多方资料,整个系列看下来,深感只有真正动手coding才能理解到强化学习的精髓吧。但碍于时间的限制,我并没有真正的去动手编程,而是粗略的去阅读了别人的源码,这一部分欠缺,等日后有时间了再补上去。
常用的资料:
《Reinforcement Learning: An Introduction》 author: Richard S.Sutton and Andrew G.Barto
UCL Course: https://www.davidsilver.uk/teaching/
博客园:https://www.cnblogs.com/pinard/
二、强化学习基本概念
强化学习是一种将状态映射到动作,以期望获得最大回报的学习方法。这一句话很拗口,以一个比喻来说,下象棋。设想一下我们正在下象棋,执棋人在这个状态下,根据对棋盘情况的观察,决定用“车”吃掉对面的“炮”,从而得到奖励:对方失去一员大将:“炮”,也就是回报。那么执棋人就学习到了一个潜在的可能的规律:在那个状态之下,如果我用“车”吃掉了对方的“炮”,那么我会收到回报,也就是赢的几率变大了。那么如何用数学形式化的定义这个过程呢?我们可能需要如下的定义:
-
agent (智能体)。学习的主体,也就是agent需要从环境中去学习。对应于上例中的执棋人。
-
state (状态)。当前agent所处的环境。对应于上例中棋盘状态,也就是棋子的位置、形势。状态一般用符号 S S S表示,假如 t t t时刻的状态为 s s s,那么可以表示为(注意大小写):
S t = s S_t=s St=s -
policy(策略)。根据状态,agent会如何采取行动,这就是策略。这个怎么理解呢?执棋人根据棋盘的状况,做出判断,可以用“车”吃掉对方的“炮”,但也可以不吃掉对方的“炮”,而是选择利用自己“马”去吃掉对方的“象”。当然,还有很多种其他的动作,执棋人会根据棋盘的情况,做出最有利于自己的选择,例如他感觉吃掉对面的“炮”,那我赢得几率更大。这就是策略,在面对众多的选择的情况下,如何根据状态去选择最优的策略。策略一般用 π \pi π表示。因此,我们可以用数学的方式去定义:他的意思是,在状态 s s s的情况下,agent采取动作 a a a的概率。其实强化学习的目标,就是为了学得这样一个概率分布,让agent知道在某个环境下该采取什么样的动作。
π ( s , a ) = p ( a ∣ s ) \pi(s,a)=p(a|s) π(s,a)=p(a∣s) -
reward (奖励,即时奖励)。从名字可以看出,reward指的是,当agent采取一个动作时,环境给予agent的一个奖励。对应于上例中,执棋人吃掉了对方的“炮”,那么我的奖励就是对方少了一个“炮”,我的威胁更少了。注意,reward是一个短期的、单步的变量,每采取一个动作,都会获得一个奖励。
-
value (价值)。价值是一个长期的过程,它指的是,agent处在某一个状态,那么它在这个状态,期望获得的总汇报的大小。value是一个比较难以理解的变量,我们还是以棋盘为例:设想一个比较极端的情况,执棋人的几乎所有棋子都比对面吃掉了,只剩下了“将”和“车”,此时记为状态 s s s。那么,此盘棋执棋人大概率已经输掉了,他每执行一个动作,虽然都会得到奖励,但这个奖励很少,因为他已经很难翻盘了。那么在这个状态下,一直到棋盘结束,有很多种走法(执棋人可以被打到输棋,或者制造和棋,甚至翻盘,但大概率输棋),每一种走法都对应一个动作序列,这个动作序列又对应一个reward序列,对这个reward序列进行求和,然后对所有走法取平均(期望),就是value。这个value注定很小,因为执棋人大概率已经输了,所以每一步的reward会很小。用公式可以表达如下:
G t = R t + 1 + γ R t + 2 + γ 2 R t + 3 + . . . V π ( s ) = E π ( G t ∣ S t = s ) \begin{aligned} G_t &=R_{t+1}+\gamma R_{t+2} + \gamma^2 R_{t+3}+...\\ V_{\pi}(s)&=E_{\pi}(G_t|S_t=s) \end{aligned} GtVπ(s)=Rt+1+γRt+2+γ2Rt+3+...=Eπ(Gt∣St=s)
公式解析:第一个变量
G
t
G_t
Gt代表状态
s
s
s下,某一种走法序列的加权回报总和,因为后期的回报对目前的影响较小,因此需要加权。第二个式子则是所有走法的期望值。
为了更加深刻的理解
V
π
(
s
)
V_{\pi}(s)
Vπ(s),我们用一个图来表示,其中,空心圈代表状态,实心圈代表动作。
如图所示,大小字母代表状态,
a
i
j
a_{ij}
aij代表动作,
R
R
R代表回报。注意这个图,我们的起始状态是
A
A
A,在这个状态下,我们会根据策略去选择不同的动作(
a
11
,
a
12
,
a
13
a_{11},a_{12},a_{13}
a11,a12,a13),选择不同的动作会转移到的不同的状态。每一个叶子节点都代表终止状态。在某次测试中,假设我们根据策略选择了
a
11
,
a
21
a_{11},a_{21}
a11,a21,产生了如下的状态变化:
我们的状态序列则是( A 、 C 、 I A、C、I A、C、I) ,从而计算出此条路径的 G t = R 1 + γ R 2 G_t=R_1+\gamma R_2 Gt=R1+γR2。同理,我们可以算出其他叶子节点的G,最后求平均就是我们的value。因此可以总结,某一状态的V,代表的是从此状态出发到达重点的所有可能路径总回报的期望,也就是平均值。有两点值得注意,1. 上图是所有可能的路径,现实生活中一次策略选择只会产生一条路径;2. 一个动作可能会产生两个不同的状态(如上图的B和C),这是有可能的,因为自然界很多事情有随机性,你的一个动作,会产生很多的结果。
- p s s , a p_{ss^,}^a pss,a,状态转移矩阵。正如上文所说,一个动作可能会产生不同的状态,因此需要一个变量去表达此现象。 p s s , a p_{ss^,}^a pss,a则代表在状态 s s s下,采取动作 a a a后,转换到状态 s , s^, s,的概率。
总结
以上就是强化学习用的非常多的概念,需要重点理解的是 V , R , G t , π , p s s , a V,R,G_t,\pi,p_{ss^,}^a V,R,Gt,π,pss,a,理解了这些概念,才能方便以后更加深刻的理解贝尔曼方程。