0%

强化学习---入门基础

本文主要介绍强化学习的入门基础知识。

入门强化学习已经有半年多了,现在想着把以前做的笔记分享一下。一是帮助自己巩固,二是帮助大家。内容可能还不能做到方方面面都充足,但是逻辑上目前个人看来还是比较通畅的,如果大家有疑问也请提出。接下来让我们开始学习吧!

一、强化学习的应用

现如今强化学习(Reinforcement Learning,RL)越来越火热,应用到了各行各业之中。最常见的就是用强化学习玩Atari游戏了,不过感觉真正让强化学习逐渐备受重视的就是Alpha-Go下围棋的胜利了,除此以外强化学习还会用于机器人、自动化的一些应用领域上,如今无人驾驶领域对于强化学习这一技术也逐渐重视了。

image-20200428210255802 image-20200428210307527 查看源图像
Atari游戏 Alpha-Go 无人驾驶

二、机器学习分支---强化学习

机器学习通常可以分为有监督学习无监督学习两类。强化学习也是机器学习的一类,但是不属于上述的任何一类。三者的关系可以归结为下图:

首先我们先了解一下有监督和无监督学习。两者的数据都是静态的,也就是说这些数据拿来训练以后不会在有其他的交互作用,再换句话说,只要有足够的数据样本,最终都能够训练出一个模型出来。

有监督学习(Supervised Learning):从带标签(label)的样本中学习后得到一个决策模型。

无监督学习(Unsupervised Learning):通过在无标签的数据中发现隐藏结构从而构建一个决策模型。

而强化学习的数据是动态的,需要和环境不断交互,数据都是在和环境交互过程中产生的。学习者不会被告知在这个状态应该采取什么动作,而是必须通过尝试去发现哪些动作会产品丰厚的收益,进而获得经验,从经验中学习哪些决策会带来好的回报,最终的目的是最大化奖励回报

三、强化学习简述

1. 强化学习的特性

  • Trial-and-error(试错)
  • Delayed reward(延迟奖励)

针对上述两点特性,这里举一个简单的例子:

小朋友Jack想要拿到好成绩,于是不断的好好学习,最后拿到了一个不错的成绩,但是身心感觉很疲惫。后来Jack太累了,于是尝试学习过程中加入玩游戏,最好考试反而也拿到不错成绩,而且身心也感到愉快。这验证了一句:“All work and no play makes Jack a dull boy!!!”

  • Jack尝试通过玩游戏的方式让自己变得快乐,但这同时会带来成绩下降的风险,这就可以理解为一个试错的过程,因为Jack在尝试玩游戏的时候也不知道会带来什么的结果。

  • 而获得好的成绩和身心感受就可理解为延迟奖励,经过和环境互动后,拿到奖励。

2. 强化学习的学习过程

下图是强化学习书里面的一幅图,很好的描述了强化学习的学习过程。

强化学习就是智能体(agent)通过和环境(environment)互动拿到奖励然后不断成长。智能体就可以理解为刚才例子里的Jack,环境因素可以有很多,比如学习的屋子,甚至智能体本身的特性(疲惫值)都理解成环境。

其具体交互过程可以详述为以下3步:

  1. 智能体会观测环境,得到一个当前的环境状态(state: $ s_{t} $)。
  2. 智能体根据状态选择一个动作去执行(action: $ a_{t} $)。
  3. 环境根据所采取的动作,呈现出新的环境状态(state: $ s_{t+1} $),同时向智能体反馈奖励(reward: $ r_{t} $)。然后重复步骤2,直到环境反馈学习结束的提示。

这种互动表现为一系列的状态,动作和奖励。在我们的问题中奖励始终是我们最关心的对象,智能体的目标就是最大化期望累积奖励(Return \(G_{t} = r_{t+1} + \gamma r_{t+2} +...\),这里的\(\gamma\)是折扣因子,会在下一节进行介绍,这里只需要只要我们优化目标是最大化累计奖励即可)。通过互动,智能体能充分了解环境中的一些规则,从而能够选择合适的动作实现目标,而我们在训练一个聪明的智能体Jack时,其实就相当于去解决在特定的状态选择哪个动作能带来最大收益,这就是我们要去解决的问题。

四、马尔可夫决策过程

介绍马尔可夫决策过程(Markov Decision Process,MDP)之前,先阐明其与强化学习的关系:

MDP是一个基石,相当于一个模型框架,问题如果建模成MDP,那就可以利用强化学习进行有效的求解,若问题不能建模成MDP,那只能说强化学习可能根本无法为你找到一个好的解决方案。


好,接下来对MDP进行讲解。

上一节中我们看到智能体和环境的交互会产生一系列的状态、动作、奖励、状态的序列,而其实MDP就是一个由这样的一个序列组成的。接下来给出其准确的定义:

MDP是一个元组\(<S,A,P,R,\gamma>\):

  • \(S\) -- 状态的集合
  • \(A\) -- 动作的集合
  • \(P\) --状态转移概率方程
  • \(R\) -- 奖励函数
  • \(\gamma\) -- 折扣因子

在一个定义好了的MDP下,智能体就可以和环境进行互动,从而观测到状态集合中的一个状态,然后从动作集合里面采取一个动作去执行,这时环境会根据采取动作进行动作的转移得到下一个状态,从而根据奖励函数反馈给智能体一个打了折扣的奖励。

这里给出更详细的一些解释:

  • 折扣是指对未来奖励的看重程度,\(\gamma\in[0,1]\),越接近于0说明越没有长远打算,越接近于1说明对未来的重视程度越高,通常来说,这个值都更接近于1。
  • 在有限的MDP中,\(S\)\(A\)\(R\)的元素都是有限的。有限的MDP利用传统的强化学习算法就可以求解,但是无限的MDP由于这些集合变得无限时,就需要采用我后面会提到的深度强化学习的方法进行求解。
  • 动作可以是离散的动作集合,也可以是连续动作的集合,只不过针对不同的动作集合需要采用不同的算法求解。

最后给出一个小例子帮助大家更有效的理解MDP:

状态集合:{A,B,C,D}

动作集合:{study, play, sleep}

状态转移:(从一个状态到另一个状态的概率,本例概率转移矩阵如下)

A B C D
A 0.5 0.5
B 1.0
C 0.6 0.2 0.2
D

特别解释一下,C状态下选择play可能有$(0.5*0.2+0.5)= 0.6 $的概率到达A状态,还有\(0.5*0.4 = 0.2\)的概率到达B和C状态。同时需要注意这个例子中,D为终态,意味着MDP终止。

奖励和折扣因子都是可以人为给定的,这里就没有给出具体数值,不过在下一节会带入这些内容。

从这个例子看来,需要解决的问题就是要学会在特定的状态做某个事情,如:在A状态的时候是应该睡觉好还是学习好,这其实就涉及到了策略的问题,下一节我们开始近一步阐述如何得到好的策略。

五、策略、状态值函数和动作值函数

1. 策略(policy)

策略简单说就是指在某个状态下选择哪一个动作。策略一般记为$ $,主要为了阐明状态和动作的关系,其定义可以有两种理解:

  • 策略\(\pi\)是在给定的状态下动作的分布:\[ \pi(a|s) = P[A_{t} = a| S_{t} = s] \]

  • 是从状态集合到动作集合的映射\[ \pi:S \rightarrow A \]

策略可以分为两类:

  • 确定性策略(Deterministic policy)
  • 随机性策略(Stochastic policy)

接下来继续通过上述的例子来理解策略以及策略的分类。在上述例子中,我们可以一一列举出状态和动作的关系,如下就是各种策略: \[ P(a = study|s = A) = 0.5 \\ P(a = sleep|s = A) = 0.5 \\ P(a = study|s = B) = 1 \\ P(a = study|s = C) =0.5 \\ P(a = play|s = C) = 0.5 \] 这里面确定性的策略就是 \(P(a = study|s = B) = 1\),因为在B状态下只能采取动作study,而其他的几个策略都是存在状态动作映射的可能。


这里我想要解释一下,可能我们大多时候都会觉得找到最优解就是应该有一个确定性策略,其实未必,有时候随机性策略可能会得到更好的结果,比如我们猜拳或者掷骰子,如果每个人真的是随机出拳和随意投掷骰子,那么我相信确定性策略怕是给不出你好结果。


当然上述的策略也只是我们人为给出的,如果想要拥有一个“聪明的”智能体,那么就需要让智能体通过不断和环境互动,从而学习到一个好的策略,这个策略可能是确定性的,也可能是不确定性的,也可能是掺杂的。那么如何评判一个策略的好坏呢,这就需要接下来我要介绍的状态价值函数来帮助我们了。

2. 状态价值函数(state-value function)

定义:状态价值函数\(v_{\pi}(s)\)是在MDP中从状态s开始根据策略\(\pi\)所获得的期望回报。 \[ v_{\pi}(s) = \mathbb{E}_{\pi}[G_{t}|S_{t} = s] \] 如果忘记\(G_{t}\)是什么的,大家去第三节的第二小节回顾一下。我们仍采用上述的例子,只不过这次我们加入了奖励,并且为了方便理解,再一次简化了MDP。

这里我们的状态集合为{A, B, C},动作集合为{study, sleep}。策略是从A到B和C的概率分别为0.5,从B到C的概率为1,C为终态。奖励设置为在A时采取动作study到达B能够拿到-2的奖励,采取动作sleep到C能拿到0的奖励,在B采取动作sleep到C则能拿到+1的奖励。同时设置折扣因子\(\gamma = 1\)

那么每一个状态的价值是多少呢?根据定义我们可以计算出结果如下: \[ v_{\pi}(A) = 0.5 * (0) + 0.5 * (-2 + 1) = -0.5 \\ v_{\pi}(B) = 1 * (+1) = 1 \\ v_{\pi}(C) = 0 \] 我们拿A的状态价值来详细阐明计算过程,在A状态时,有0.5的概率可以到达B拿到-2的结果,还有0.5的概率到达C拿到0的奖励,所以A状态的价值为两种情况下的加和即-0.5。也即意味着在这样的策略下当处于A状态时,能拿到期望奖励为-0.5。

总的来说状态价值函数反映的就是这个状态的好坏。从上述例子可以看出,B状态是要优于AC状态的,那么对于我们来说,我们会尽可能希望我们的智能体处于B状态。因为这时候其期望奖励最大。

上述的计算过程看着很简单,可是如果当状态集合以及动作集合的元素变得很多的时候,或者无限个元素的时候该怎么办呢?相信手算就会变得很难了。那么就有了下面我们要说的一种方便计算价值函数的一个工具:贝尔曼期望方程

贝尔曼期望方程(Bellman expectation equation)--- 将状态价值函数分解为立即奖励加上折扣的后继状态的价值,即: \[ v_{\pi}(s) = \mathbb{E}_{\pi}[R_{t+1} + \gamma v_{\pi}(S_{t+1})|S_{t} = s] \] 这样在计算过程中,只要知道后继状态的价值,那么我们当前状态的价值就可以获悉。如我们知道状态C的价值为0,那么状态B就是\(1+ 1 * v_{\pi}(C)\) = 1,那么状态A的价值为$0.5 (0 +10) + 0.5(-2 + 11) = -0.5 $。这样倒着计算,是很方便,只是在我这个例子里可能你察觉不到,你可以自己画一个例子去看看比较就知道它有多方便了,这可以省去大量的重复计算。

我们现在学会了怎么快速计算状态的价值,这样我们就可以去评判策略好坏了。如下图,右图的策略就比左图的策略要好。因为BC状态价值一致的情况下,右图中A状态的价值更高。

这里,我们还要简单介绍一下最优策略:最优策略就是在这个策略下所有的状态价值函数都比任何一个策略所带来的状态价值相等或者更高。

那么如何得到最优策略呢?可以观察到上面两幅图中,在状态A下采取不同的动作会带来状态价值函数的改变,所以接下来就需要我们利用下一节的知识点---动作价值函数---来帮助我们去衡量动作能带来的价值。

3. 动作价值函数(action-value function)

定义:动作价值函数\(q_{\pi}(s,a)\)是在MDP中从状态s开始采取动作a并根据策略\(\pi\)所获得的期望回报。 \[ q_{\pi}(s,a) = \mathbb{E}_{\pi}[G_{t}|S_{t} = s, A_{t} = a] \] 同样还是利用上一节的例子,我们来看看如何找出最优策略。

每个动作价值根据定义可得: \[ q_{\pi}(A, study) = -2 + 1 = -1 \\ q_{\pi}(A, sleep) = 0 \\ q_{\pi}(B, sleep) = 1 \] 不难看出这里最优策略其实就是红线所标示的,从A到C和从B到C这时的策略是最优的。因为这样的策略下,A的状态价值函数为0,B的状态价值为1,C的为0。A的状态优于之前的例子。

这里值得一提的是动作价值函数同样可以利用贝尔曼方程进行快速计算,计算公式类似状态价值函数的计算: \[ q_{\pi}(s,a) = \mathbb{E}_{\pi}[R_{t+1} + \gamma q_{\pi}(S_{t+1},A_{t+1})|S_{t} = s,A_{t} = a] \] 这个例子还是非常简单的,随着动作和状态的增多,就不可能一眼看出最优策略了,于是,这就需要我们的智能体不断的和环境交互,不断更新策略,去探索当前状态下所有可能采取的动作,不断选择可以最大化状态价值函数的动作,最终找到那个最优的策略。

六、总结

至此,其实我们已经掌握了如何让智能体学习的方法,就是利用价值函数来计算动作的好坏,从而找到最优策略。但是之前的求解方式只是适用于状态、动作空间很小的情况,实际上很多智能体要面临的环境是相当复杂的,上述的解法必然不可行,由此有了后面很多的强化学习算法。不过后面好多算法我都还有点小懵,有机会一定好好梳理下来,继续分享!哈哈!

致谢

最后需要感谢一下我的师弟Gan,今天我写的这个博客其实是基于我们之前做过的PPT搞出来的,思路是我们彼此讲通了的,所以书写时简直感觉不要太清晰,不过也新添加了很多文字描述,毕竟博客文字版本,还是希望能让大家搞得明明白白,毕竟我没法给大家讲了哈哈哈。

参考文献

[1] Sutton, R, Barto, A. Reinforcement Learning:An Introduction[M]. MIT Press, 1998.

[2] David Silver. PPT of Reinforcement Learning. https://www.davidsilver.uk/teaching/

[3] 莫烦.强化学习. https://www.bilibili.com/video/av16921335


好了今天的分享结束!call it a day ! :)

-------------本文结束感谢您的阅读-------------