强化学习(reinforcement learning, RL)是近年来你们提的很是多的一个概念,那么,什么叫强化学习?html
强化学习是机器学习的一个分支,和监督学习,非监督学习并列。web
参考文献[1]中给出了定义:app
Reinforcement learning is learning what to do ----how to map situations to actions ---- so as to maximize a numerical reward signal.机器学习
即强化学习是经过学习将环境状态转化为动做的策略,从而得到一个最大的回报。函数
举个栗子[2],在flappy bird游戏中,咱们想设计一个得到高分的策略,可是却不清楚他的动力学模型等等。这是咱们能够经过强化学习,让智能体本身进行游戏,若是撞到柱子,则给负回报,不然给0回报。(也能够给不撞柱子持续给1点回报,撞柱子不给回报)。经过不断的反馈,咱们能够得到一只飞行技术高超的小鸟。学习
经过上面例子,咱们能够看到强化学习的几个特性[3]:优化
上面的大脑表明咱们的智能体,智能体经过选择合适的动做(Action)\(A_t\),地球表明咱们要研究的环境,它拥有本身的状态模型,智能体选择了合适的动做\(A_t\),环境的状态\(S_t\)发生改变,变为\(S_{t+1}\),同时得到咱们采起动做\(A_t\)的延迟奖励\(R_t\),而后选择下一个合适的动做,环境状态继续改变……这就是强化学习的思路。spa
在这个强化学习的思路中,整理出以下要素[4]:设计
(1)环境的状态\(S\),\(t\)时刻环境的状态\(S_t\)是它的环境状态集中的某一个状态;3d
(2)智能体的动做\(A\),\(t\)时刻智能体采起的动做\(A_t\)是它的动做集中的某一个动做;
(3)环境的奖励\(R\),\(t\)时刻智能体在状态\(S_t\)采起的动做\(A_t\)对应的奖励\(R_{t+1}\)会在\(t+1\)时刻获得;
除此以外,还有更多复杂的模型要素:
(4)智能体的策略\(\pi\),它表明了智能体采起动做的依据,即智能体会依据策略\(\pi\)选择动做。最多见的策略表达方式是一个条件几率分布\(\pi(a|s)\),即在状态\(s\)时采起动做\(a\)的几率。即\(\pi(a|s)=P(A_t=a|S_t=s)\),几率越大,动做越可能被选择;
(5)智能体在策略\(\pi\)和状态\(s\)时,采起行动后的价值\(v_\pi(s)\)。价值通常是一个指望函数。虽然当前动做会对应一个延迟奖励\(R_{t+1}\),可是光看这个延迟奖励是不行的,由于当前的延迟奖励高,不表明到\(t+1,t+2,\dots\)时刻的后续奖励也高, 好比下象棋,咱们能够某个动做能够吃掉对方的车,这个延时奖励是很高,可是接着后面咱们输棋了。此时吃车的动做奖励值高可是价值并不高。所以咱们的价值要综合考虑当前的延时奖励和后续的延时奖励。 \(v_\pi(s)\)通常表达为:
\[ v_\pi(s)=E(R_{t+1}+\gamma R_{t+2}+\gamma^2R_{t+3}+\dots|S_t=s) \]
(6)其中\(\gamma\)做为奖励衰减因子,在\([0,1]\)之间,若是为0,则是贪婪法,即价值只有当前延迟奖励决定。若是为1,则全部的后续状态奖励和当前奖励一视同仁。大多数时间选择一个0到1之间的数字
(7) 环境的状态转化模型,能够理解为一个状态几率机,它能够表示为一个几率模型,即在状态\(s\)下采起动做\(a\),转到下一个状态\(s^{'}\)的几率,表示为\(P_{ss{'}}^{a}\)
(8)探索率$\epsilon \(主要用在强化学习训练迭代过程当中,因为咱们通常会选择使当前轮迭代价值最大的动做,可是这会致使一些较好的但咱们没有执行过的动做被错过。所以咱们在训练选择最优动做时,会有必定的几率\)\epsilon $不选择使当前轮迭代价值最大的动做,而选择其余的动做。
环境的状态转化模型,表示为一个几率模型\(P_{ss{'}}^{a}\),它能够表示为一个几率模型,即在状态\(s\)下采起动做\(a\),转到下一个状态\(s^{'}\)的几率。在真实的环境转化中,转化到下一个状态\(s{'}\)的几率既和上一个状态\(s\)有关,还和上一个状态,以及上上个状态有关。这样咱们的环境转化模型很是很是很是复杂,复杂到难以建模。
所以,咱们须要对强化学习的环境转化模型进行简化。简化的方法就是假设状态转化的马尔科夫性:转化到下一个状态\(s{'}\)的几率仅和当前状态\(s\)有关,与以前状态无关,用公式表示就是:
\[ P_{ss'}^{a}=E(S_{t+1}=s'|S_t=s,A_t=a) \]
同时对于第四个要素策略\(\pi\),咱们也进行了马尔科夫假设,即在状态\(s\)下采起动做\(a\)的几率仅和当前状态\(s\)有关,和其余要素无关:
\[ \pi(a|s)=P(A_t=a|S_t=s) \]
价值函数\(v_\pi(s)\)的马尔科夫假设:
\[ v_\pi(s)=E(G_t|S_t=s)=E_\pi(R_{t+1}+\gamma R_{t+2}+\gamma^2R_{t+3}+\dots|S_t=s) \]
\(G_t\)表示收获(return), 是一个MDP中从某一个状态\(S_t\)开始采样直到终止状态时全部奖励的有衰减的之和。
推导价值函数的递推关系,很容易获得如下公式:
\[ v_\pi(s)=E_\pi(R_{t+1}+\gamma v_\pi(S_{t+1})|S_t=s) \]
上式通常称之为贝尔曼方程,它表示,一个状态的价值由该状态以及后续状态价值按必定的衰减比例联合组成。
对于马尔科夫决策过程,咱们发现它的价值函数\(v_\pi(s)\)没有考虑动做,仅仅表明了当前状态采起某种策略到最终步骤的价值,如今考虑采起的动做带来的影响:
\[ q_\pi{(s,a)}=E(G_t|S_t=s,A_t=a)=E_\pi(R_{t+1}+\gamma R_{t+2}+\gamma^2R_{t+3}+\dots|S_t=s,A_t=a) \]
动做价值函数\(q_\pi(s,a)\)的贝尔曼方程:
\[ q_\pi(s,a)=E_\pi(R_{t+1}+\gamma q_\pi(S_{t+1},A_{t+1})|S_t=s,A_t=a) \]
按照定义,很容易获得动做价值函数\(q_\pi(s,a)\)和状态价值函数\(v_\pi(s)\)的关系:
\[ v_\pi(s)=\sum_{a\in A}\pi(a|s)q_\pi(s,a) \]
也就是说,状态价值函数是全部动做价值函数基于策略\(\pi\)的指望。
同时,利用贝尔曼方程,咱们利用状态价值函数\(v_\pi(s)\)表示动做价值函数\(q_\pi(s,a)\),即:
\[ q_\pi(s,a)=E_\pi(R_{t+1}+\gamma q_\pi(S_{t+1},A_{t+1})|S_t=s,A_t=a) \]
\[ =E_\pi(R_{t+1}|S_t=s,A_t=a)+\gamma E_\pi(q_\pi(S_{t+1},A_{t+1})|S_t=s,A_t=a) \]
\[ =R_s^a+\gamma \sum_{s'}P_{ss'}^{a}\sum_{a'}\pi(a'|s')q_\pi(s',a') \]
\[ =R_s^a+\gamma \sum_{s'}P_{ss'}^av_\pi(s') \]
公式5和公式12总结起来,咱们能够获得下面两式:
\[ v_\pi(s)=\sum_{a \in A}\pi(a|s)(R_s^a+\gamma \sum_{s'}P_{ss'}^av_\pi(s')) \]
\[ q_\pi(s,a)=R_s^a+\gamma \sum_{s'}P_{ss'}^av_\pi(s') \]
解决强化学习问题意味着要寻找一个最优的策略让个体在与环境交互过程当中得到始终比其它策略都要多的收获,这个最优策略咱们能够用 \(\pi^*\)表示。一旦找到这个最优策略 \(\pi^*\),那么咱们就解决了这个强化学习问题。通常来讲,比较难去找到一个最优策略,可是能够经过比较若干不一样策略的优劣来肯定一个较好的策略,也就是局部最优解。
如何比较策略优劣?通常经过对应的价值函数进行比较:
\[ v_{*}(s)=\max _{\pi} v_{\pi}(s)=\max_\pi \sum_a\pi(a | s) q_{\pi}(s, a)=\max _{a} q_{*}(s, a) \]
或者最优化动做价值函数:
\[ q_{*}(s, a)=\max _{\pi} q_{\pi}(s, a) \]
\[ =R_s^a+\gamma \max_\pi v_\pi(s') \]
状态价值函数\(v\)描述了一个状态的长期最优化价值,即在这个状态下考虑到全部可能发生的后续动做,而且都挑选最优动做执行的状况下,这个状态的价值。
动做价值函数\(q\)描述了处于一个状态,而且执行了某个动做后,所带来的长期最有价值。即在这个状态下执行某一特定动做后,考虑再以后全部可能处于的状态下老是选取最优动做来执行所带来的长期价值。
对于最优的策略,基于动做价值函数咱们能够定义为:
\[ \pi_{*}(a | s)=\left\{\begin{array}{ll}{1} & {\text { if } a=\arg \max _{a \in A} q_{*}(s, a)} \\ {0} & {\text { else }}\end{array}\right. \]
只要咱们找到了最大的状态价值函数或者动做价值函数,那么对应的策略\(\pi^*\)就是咱们强化学习问题的解。
关于强化学习的实例,具体可参见[4]和[5],很强,很棒。
在不少人的文章中,将强化学习训练的模型被称之为“智能体”,为何呢?由于它和咱们人类学习的思路很类似:
模型在没有样本的状况下,主动去探索,而后从环境中获取一个(延迟)反馈,而后经过反馈进行反思,优化策略/动做,最终学习成为一个强大的智能体。
固然,强化学习还拥有一些缺点[6]:
样本利用率低,须要用大量样本进行训练。而且有时训练速度还很慢(远远低于人类)。
奖励函数难以设计。大部分的奖励函数都是0,过于稀疏。
容易陷入局部最优。文献[6]中例子指出,一个以速度为奖励函数的马,能够四角朝天的“奔跑”。
对环境的过拟合。每每没办法一个模型用于多个环境。
不稳定性。 不稳定对于一个模型是灾难性的。一个超参数的变化可能引发模型的崩溃。
固然,咱们不能一味确定,也不能一味否认,强化学习在AUTOML,AlphaGO的成功应用也说明了强化学习尽管会有不少困难,可是也是具备一个具备探索性、启发性的方向。
[1] R.Sutton et al. Reinforcement learning: An introduction , 1998
[2] https://www.cnblogs.com/jinxulin/p/3511298.html
[3] https://zhuanlan.zhihu.com/p/28084904
[4] https://www.cnblogs.com/pinard/p/9385570.html
[5] https://www.cnblogs.com/pinard/p/9426283.html
[6] https://www.alexirpan.com/2018/02/14/rl-hard.html
本文由飞剑客原创,如需转载,请联系私信联系知乎:@AndyChanCD