2017-03-09 09:40:41 LIYUAN123ZHOUHUI 阅读数 578

转载自:http://www.36dsj.com/archives/51780
将这篇文章里面比较好理解的概念抽象出来,能够对强化学习有一个直观的认识

强化学习其实也是机器学习的一个分支,但是它与我们常见的机器学习(比如监督学习supervised learning)不太一样。它讲究在一系列的情景之下,通过多步恰当的决策来达到一个目标,是一种序列多步决策的问题。举一个周志华老师在《机器学习》【8】中种西瓜的例子来帮助大家理解。种瓜有很多步骤,要经过选种,定期浇水,施肥,除草,杀虫这么多操作之后最终才能收获西瓜。但是,我们往往要到最后收获西瓜之后,才知道种的瓜好不好,也就是说,我们在种瓜过程中执行的某个操作时,并不能立即获得这个操作能不能获得好瓜,仅能得到一个当前的反馈,比如瓜苗看起来更健壮了。因此我们就需要多次种瓜,不断摸索,才能总结一个好的种瓜策略。以后就用这个策略去种瓜。摸索这个策略的过程,实际上就是强化学习。可以看到强化学习有别于传统的机器学习,我们是不能立即得到标记的,而只能得到一个反馈,也可以说强化学习是一种标记延迟的监督学习。

通过这个种瓜的过程能够看出来,强化学习实际上和我们人类与环境的交互方式类似。是一套非常通用的框架,可以用来解决各种各样的人工智能的问题。

总结起来,强化学习的目标就是要寻找一个能使得我们获得最大累积奖赏的策略。为啥是累积奖赏?你之前不是说种个好瓜就可以了嘛。但是种瓜得浇水施肥啊,比如你在一个资源稀缺的地方,你当然就会希望我少用资源,又能种出好瓜。因此这样的定义适用性更广。

2019-03-18 22:41:44 R18830287035 阅读数 396

一、基本理解

  • 强化学习是智能体(Agent)以“试错”的 方式进行学习,通过与环境进行交互获得的奖励指导行为,目标是使智能体获得最大的 奖励
  • 所谓强化学习,是指从环境状态到行为映 射的学习,以使系统行为从环境中获得的累积Reward(奖励值)最大。
  • 在强化学习中,算法来把外界环境转化为最大化奖励量的方式的动作,算法并没有 直接告诉Agent(行为主体)要做什么或者要采取哪个动作,而是Agent通过看哪个动作得到了最多的奖励来自己发现。
  • Agent的动作的影响不只是立即得到的奖励, 而且还影响接下来的动作和最终的奖励
    1、学习系统没有像很多其他形式的机器学习方法一样被告知应该做出什么行为
    2、必须在尝试之后才能发现哪些行为会导致奖励最大化
    3、当前的行为可能不仅仅会影响即时的奖励,还会影响下一步的奖励以及后续的所有奖励
    二、基本组成
    1、智能体(agent)
    2、状态(state)
    3、行为(action)
    4、奖励(reward)
    5、策略(policy)
    三、强化学习特点

强化学习与其他机器学习不同之处为:
◼ 没有教师信号,也没有label,只有reward。
◼ 反馈有延时,不是能立即返回。
◼ 数据是序列化的,数据与数据之间是有关的,而不是i.i.d的;
◼ agent执行的动作会影响之后的数据。
四、强化学习的关键要素
 强化学习的关键要素有:environment, reward,action 和 state。有了这些要素我们 就能建立一个强化学习模型。
 强化学习解决的问题是,针对一个具体问题 得到一个最优的policy(策略),使得在该 策略下获得的return(长期回报)最大。
 所谓的policy其实就是一系列action,也就是 sequential data。

四、强化学习的模型:

在这里插入图片描述
Agent与环境的交互接口包括行动(Action)、即 时奖励(Reward)和状态(State)。

在这里插入图片描述

在这里插入图片描述
五、奖励与动作

 reward
◼ reward通常都被记作Rt,表示第t个time step的返回奖励值。所有强化学习都是基于reward假设的。
◼ reward是一个标量。
◼ 注意:回报(return)是奖励(reward)的累积。
 action
◼ action是来自于动作空间,agent对每次所处的 state用以及上一状态的reward确定当前要执行什 么action。
◼ 执行action要达到最大化期望reward,直到最终 算法收敛,所得的policy就是一系列action的 sequential data。

六、状态与策略
 state
◼ 就是指当前agent所处的状态。
 policy
◼ policy就是指agent在特定状态下的行为依据,是从state到action的映射。
◼ 分为确定策略和与随机策略。
◼ 确定策略:就是某一状态下的确定动作a=π(s)
◼ 随机策略:以概率来描述,即某一状态下执行 这一动作的概率:π(a|s)=P[At=a | St=s]。

策略有两种
 把用来指导个体产生与环境进行实际交互行 为的策略称为:行为策略;
◼ 实际采样的策略
 把用来评价状态或行为价值的策略(或者待优化的策略)称为:目标策略

强化学习的学习过程
 RL采用的是边获得样例边学习的方式
◼ 在获得样例之后更新自己的模型,
◼ 利用当前的模型来指导下一步的行动,
◼ 下一步的行动获得reward之后再更新模型, ◼ 不断迭代重复直到模型收敛。
 在这个过程中,非常重要的一点在于“在已 有当前模型的情况下,如果选择下一步的行 动才对完善当前的模型最有利”。

2019-06-20 10:33:08 epubit17 阅读数 475
  • 强化学习的发展历史
  • 强化学习的理论知识
  • 强化学习的应用案例
  • 强化学习的特点与未来

凡是过往,皆为序章。

——莎士比亚《暴风雨》

“知往鉴今”,为了更好地学习强化学习,需要对强化学习的发展历史进行整体了解。唯有全面了解强化学习的发展历史,才能够更为直观、深刻地理解强化学习所取得的成就和存在的不足,并厘清强化学习的未来发展趋势。除此之外,由于强化学习是机器学习的分支之一,也需要对强化学习在机器学习领域中的定位以及与其他机器学习之间的异同进行辨析。同时,由于强化学习涉及的知识面广,尤其是涵盖了诸多数学知识,如贝尔曼方程、最优控制等,更需要对强化学习有系统性的梳理与认识,以便于更好地学习后面的章节。

基于此,本章将会按照顺序依次介绍强化学习:发展历史—基础理论—应用案例—思考。首先,从强化学习的发展历史中将会了解强化学习与机器学习的共同点与差异。然后,通过基础理论可了解强化学习的工作方式。接下来通过相关的具体应用案例,可直观地了解强化学习所能完成的任务。最后,从更加宏观的角度去探讨强化学习的特点与未来的发展。

1.1 初探强化学习

维基百科对强化学习的定义为:受到行为心理学的启发,强化学习主要关注智能体如何在环境中采取不同的行动,以最大限度地提高累积奖励。

强化学习主要由智能体(Agent)、环境(Environment)、状态(State)、动作(Action)、奖励(Reward)组成(见图1.1)。智能体执行了某个动作后,环境将会转换到一个新的状态。对于该新的状态,环境会给出奖励信号(正奖励或者负奖励)。随后,智能体根据新的状态和环境反馈的奖励,按照一定的策略执行新的动作。上述过程为智能体和环境通过状态、动作、奖励进行交互的方式。

0101.tif{60%}

图1.1 强化学习基本架构:主要由智能体和环境组成,两者间通过奖励、状态、 动作3个信号进行交互

智能体通过强化学习,可以知道自己在什么状态下,应该采取什么样的动作使得自身获得最大奖励。由于智能体和环境的交互方式与人类和环境的交互方式类似,可以认为强化学习是一套通用的学习框架,可用来解决通用人工智能的问题。因此,强化学习也被称为通用人工智能的机器学习方法。

下面给出强化学习基本组成元素的定义。

  • 智能体:强化学习的本体,作为学习者或者决策者。
  • 环境:强化学习智能体以外的一切,主要由状态集组成。
  • 状态:表示环境的数据。状态集是环境中所有可能的状态。
  • 动作:智能体可以做出的动作。动作集是智能体可以做出的所有动作。
  • 奖励:智能体在执行一个动作后,获得的正/负奖励信号。奖励集是智能体可以获得的所有反馈信息,正/负奖励信号亦可称作正/负反馈信号。
  • 策略:强化学习是从环境状态到动作的映射学习,该映射关系称为策略。通俗地说,智能体选择动作的思考过程即为策略。
  • 目标:智能体自动寻找在连续时间序列里的最优策略,而最优策略通常指最大化长期累积奖励。

因此,强化学习实际上是智能体在与环境进行交互的过程中,学会最佳决策序列。

1.1.1 强化学习与机器学习

2016年,由DeepMind开发的AlphaGo程序在人机围棋对弈中打败了韩国的围棋大师李世石。就如同1997年IBM的“深蓝”计算机战胜了国际象棋大师卡斯帕罗夫一样,媒体开始铺天盖地般地宣传人工智能时代的来临。

在介绍AlphaGo程序时,很多媒体会把人工智能(Artificial Intelligence)、机器学习(Machine Learning)和深度强化学习混为一谈。从严格定义上来说,DeepMind在AlphaGo程序中对上述3种技术都有所使用,但使用得更多的是深度强化学习。图1.2展示了人工智能、机器学习、深度强化学习三者之间的关系。其中人工智能包含机器学习,而强化学习则是机器学习的重要分支之一,它们三者是包含与被包含的关系,而非并列的关系。

0102.tif{80%}

图1.2 深度强化学习、机器学习、人工智能之间的关系。人工智能的概念从1950年左右开始被提出,而机器学习则是在1980年左右被提出,最近热门的深度强化学习则是在2010年左右被提出的

从20世纪50年代“人工智能”这一概念第一次提出至今,人工智能的问题大致分为6个具体的方向:问题求解、知识推理、规划问题、不确定推理、通信感知与行动、学习问题。而机器学习主要分为3个方向:分类、回归、关联性分析。最后到深度强化学习则是对机器学习中的强化学习进行深度拓展。

人工智能实际上包含了日常使用到的算法。例如在问题求解方面,用到A*搜索算法和a-b剪枝算法等经典算法;又如人工智能中的学习问题则包含了机器学习的大部分内容。现阶段已经有很多资料介绍机器学习的相关算法,较为著名的机器学习的十大算法为:决策树、支持向量机SVM、随机森林算法、逻辑回归、朴素贝叶斯、KNN算法、K-means算法、AdaBoost算法、Apriori算法、PageRank算法。

在机器学习里,其范式主要分为监督学习(Supervised Learning)、无监督学习(Unsupervised Learning)和强化学习,如图1.3所示。

正如维基百科所说,强化学习是机器学习的一个分支,但是却与机器学习中常见的监督学习和无监督学习不同。具体而言,强化学习是通过交互的一种目标导向学习方法,旨在找到连续时间序列中的最优策略;监督学习是通过带有标签的数据学习数据中固有的规则,通常指回归、分类问题等算法;无监督学习是通过无标签的数据找到其中的隐藏模式,通常指聚类、降维等算法。

..\tu\0103.tif{50%}

图1.3 机器学习领域中的3大分支,分别为监督学习、无监督学习、强化学习, 但三者之间并非完全独立,而是互相交叉

1.1.2 强化学习与监督学习的区别

强化学习和监督学习的共同点是两者都需要大量的数据进行学习训练。它们的区别是:

(1)两者的学习方式不尽相同;

(2)两者所需的数据类型有差异,监督学习需要多样化的标签数据,强化学习则需要带有回报的交互数据。

1.学习方式

一般而言,监督学习是通过对数据进行分析,找到数据的表达模型;随后,利用该模型,在新输入的数据上进行决策。图1.4为监督学习的一般方法,主要分为训练阶段和预测阶段。在训练阶段,首先根据原始数据进行特征提取,该过程称为“特征工程”。得到数据的特征后,可以使用决策树、随机森林等机器学习算法去分析数据之间的关系,最终得到关于输入数据的模型(Model)。在预测阶段,同样按照特征工程的方法抽取数据的特征,使用训练阶段得到的模型对特征向量进行预测,最终得到数据所属的分类标签(Labels)。值得注意的是,验证模型使用验证集数据对模型进行反向验证,确保模型的正确性和精度。

深度学习的一般方法(如图1.5所示)与传统机器学习中监督学习的一般方法相比,少了特征工程,从而大大降低了业务领域门槛与人力成本。

0104.tif{75%}

图1.4 监督学习的一般方法

0105.tif{65%}

图1.5 深度学习的一般方法

如上所述,监督学习分为预测和训练两个阶段,学习只能发生在训练阶段,该阶段会出现一个预测阶段中不会出现的监督信号(即具有学习的能力,数学上称为“差分信号”)。例如在语音识别任务中,需要收集大量的语音语料数据和该语料对应标注好的文本内容。有了原始的语音数据和对应的语音标注数据后,即可通过监督学习的方法学习收集数据中的模式,例如对语音进行分类、判别该语音音素所对应的单词等。

上述的标注语音文本内容相当于一个监督信号,等语音识别模型训练完成后,在预测阶段就不再需要该监督信号,生成的语言识别模型仅用来作为新数据的预测。如果想要重新修改监督信号,则需要对语言识别模型进行重新训练(由于监督学习的训练阶段非常耗时,现在有众多研究学者对迁移学习进行深入研究,以期望缩短监督学习的训练时间)。

强化学习与监督学习截然不同,其学习过程与生物的自然学习过程非常类似。具体而言,智能体在与环境的互动过程中,通过不断探索与试错的方式,利用基于正/负奖励的方式进行学习。图1.6所示为强化学习的一般方法,智能体从最上方的状态s开始,执行动作a后达到下一时间步的状态;在执行动作a的期间,智能体可以选择执行其他动作到达另外一个状态,例如s*。智能体通过该方式不断地探索与试错,进而选择出使得奖励最大化的动作。

0106.tif{45%}

图1.6 强化学习的一般方法

2.先验知识与标注数据

强化学习不需要像监督学习那样依赖先验知识数据。例如目前已经非常流行的线上游戏,越来越多的用户开始使用移动终端进行游戏,使得数据的获取来源更为广泛。比如围棋游戏,围棋的棋谱可以很容易地得到,但是这些棋谱都是人类玩家的动作行为记录,如果只用监督学习进行建模,模型学习出的对弈技能很有可能只局限在所收集的有限棋谱内。当出现新的下棋方式时,模型可能因为找不到全局最优解而使得棋力大减。

强化学习通过自我博弈方式产生更多的标准数据。在强化学习中,如果有了基本棋谱,便可以利用系统自我学习和奖励的方式,让系统自动学习更多的棋谱或者使用两个智能体进行互相博弈,进而为系统自身补充更多的棋谱信息,并使得基于强化学习的系统不受标注数据和先验知识所限制。总而言之,强化学习可以利用较少的训练信息,让系统不断地自主学习,使得系统自我补充更多的信息,进而免受监督者的限制。另外,可以使用近年提出的迁移学习减少标注数据的数量,因为其在一定程度上突破监督学习中存在的限制,提前把大量标注数据信息提取了其高维特征,从而减少后续复用模型的输入数据。

{迁移学习}

迁移学习(Transfer Learning)是把已经训练好的模型参数迁移到新的模型以帮助训练新模型。考虑到大部分数据或任务存在相关性,通过迁移学习可以将已经学到的模型参数(也可理解为模型学到的知识)通过某种方式分享给新模型,进而使得新模型不需要从零开始进行学习,加快并优化新模型的学习效率。

1.1.3 历史发展

强化学习的历史主要沿两条主线发展而来,第一条主线是心理学上模仿动物学习方式的试错法,第二条主线是求解最优控制问题。两条主线最初是独立发展的。心理学上的试错法从20世纪50年代末、60年代初贯穿了人工智能的发展,并且一定程度上促进了强化学习的发展。20世纪80年代初期,试错法随着人工智能的热潮而被学者们广泛研究。而求解最优控制法则是利用动态规划法求解最优值函数。到20世纪80年代末,基于时间差分法求解的第三条主线开始出现。时间差分法吸收了前面两条主线的思想,奠定了现代强化学习在机器学习领域中的地位。强化学习具体的历史事件阶段节点如表1.1所示。

表1.1 强化学习中有影响力的算法的出现时间

发展阶段 时  间 有影响力的算法
首次提出 1956年 Bellman提出动态规划方法
1977年 Werbos提出自适应动态规划算法
第一次 研究热潮 1988年 Sutton提出时间差分算法
1992年 Watkins 提出Q-learning 算法
1994年 Rummery 提出Saras算法
发展期 1996年 Bersekas提出解决随机过程中优化控制的神经动态规划方法
2006年 Kocsis提出置信上限树算法
2009年 Kewis提出反馈控制自适应动态规划算法
第二次 研究热潮 2014年 Silver提出确定性策略梯度(Policy Gradents)算法
2015年 Google DeepMind 提出Deep Q-Network算法

强化学习历史的第一条主线是试错法。试错法是以尝试和错误学习(Trial-and-Error Learning)为中心的一种仿生心理学方法。心理学家Thorndike发表的“效应定律”(Law of Effect)描述了增强性事件对动物选择动作倾向的影响,该定律定义了如何累积生物的学习数据(例如奖罚之间的相互关系)。而在这之后很长一段时间内,如何在生物的学习过程中累积其学习数据,心理学家和科学家们产生了巨大的分歧和争议。甚至在很长一段时间内,部分学者很难区分强化学习和无监督学习之间的区别。

在试错学习中,比较有代表性的是20世纪60年代初Donald Michie的相关研究工作。Michie描述了如何使用一个简单的试错系统进行井字游戏。1968年,Michie又使用试错系统进行一个增强型的平衡杆游戏,该游戏包括两部分:一个是强化学习的学习者GLEE(游戏学习经验引擎),另一个是强化学习的控制者BOXES。Michie的基于试错法的平衡杆游戏是有关强化学习免模型任务的最早例子,该例子对后续Sutton等人的工作产生了一定的影响。

强化学习历史的第二条主线是最优控制。在20世纪50年代末,“最优控制”主要用来描述最小化控制器在动态系统中随着时间变化的行为问题。在20世纪50年代中期,Richard Bellman等人扩展了汉弥尔顿和雅可比的理论,通过利用动态系统中的状态信息和引入一个值函数的概念,来定义“最优返回的函数”,而这个“最优返回的函数”就是求解强化学习通用范式的贝尔曼方程。贝尔曼通过求解贝尔曼方程来间接解决最优控制问题,此方法后来被称为动态规划(Dynamic Programming)法,并且使用马尔可夫决策过程描述最优控制的过程。时隔不久,在1960年,Ronald Howard提出了策略迭代求解马尔可夫决策的过程。上面提到的两位数学家Richard Bellman和Ronald Howard所提出的理论都是现代强化学习理论和算法的基础要素。

虽然贝尔曼后来提出了使用动态规划去解决最优控制问题,但仍会遇到“维度灾难”问题,这意味着在计算资源极度匮乏的年代,计算需求随着状态数目的增加而呈指数增加的动态规划法难以被大规模实际应用。可是大家仍然认为解决一般随机最优控制问题的唯一方法是动态规划法,因为该方法相对其他算法更加快速、有效。

强化学习历史的第三条主线是时间差分法。跟前两条主线不同,时间差分法虽然是在20世纪80年代末提出的,但是却在免模型的强化学习任务中扮演着重要的角色。时间差分法这一概念可能最早出现在Arthur Samuel的西洋陆棋游戏程序中。

Sutton关于时间差分法的研究主要受到动物学习方式的理论和Klopf研究的影响。1981年,Sutton突然意识到以前研究者的大量工作实际上都是时间差分和试错法的一部分。于是Sutton等人开发了一种新的强化学习框架——演员-评论家架构,并把该方法应用在Michie和Chambers的极点平衡问题中。1988年,Sutton将时间差分中的策略控制概念分离,并将其作为强化学习的策略预测方法。

时间差分法对强化学习影响最显著的标志是在1989年Chris Watkins等人发表了Q-learning算法,该算法成功地把最优控制和时间差分法结合了起来。在这个时间节点之后,强化学习再一次迎来发展高峰期,Watkins等人使得强化学习在人工智能、机器学习、神经网络领域都取得了快速进步。最为著名的是Gerry Tesauro使用TD-Gammon算法玩西洋双陆棋游戏时赢得了最好的人类玩家,这使得强化学习引起了大众和媒体的广泛关注。但在这之后,随着其他机器学习算法的大量出现并在实际应用中表现优异,如PageRank、K-means、KNN、AdaBoost、SVM、神经网络等,而强化学习因为缺少突破性的研究进展,又慢慢地跌入研究的低谷。

直到2013年,结合强化学习和神经网络的深度强化学习的出现,使得强化学习再一次高调地进入大众的视野,也迎来了强化学习的第二次研究热潮。实际上,强化学习的基本学习方法是利用时间差分学习的实例,通过值函数、策略、环境模型、状态更新、奖励等信号,利用逼近函数的方法来实现对应的算法。而深度学习则是近年来函数逼近模型中最具有代表性、最成功的一种算法。Google收购了DeepMind之后,DeepMind使用深度强化学习Deep Q-Network进行Atari游戏,并在许多Atari的游戏中获得了相当惊人的成绩。在这之后,DeepMind又开发出了AlphaGo围棋程序,一举战胜了人类围棋的天才柯洁和李世石。

虽然深度学习模型有其特定的问题,例如网络模型容易过拟合、网络模型需要大量的数据进行表征学习,但是这并不能说明类似于深度学习的监督式学习方法不适用于大规模应用或者与强化学习结合。DQN算法首次将深度学习与强化学习结合,开创了新的机器学习分支——深度强化学习。深度学习和强化学习这两种学习方式在近年来得到了长足的进步,相信读者也很清楚AlphaGo围棋算法和Google推出的关于深度学习的TensorFlow框架。

我们有理由相信,深度学习和强化学习的结合体——深度强化学习是人工智能的未来之路。智能的系统必须能够在没有持续监督信号的情况下自主学习,而深度强化学习正是自主学习的最佳代表。人工智能系统必须能够自己去判断对与错,而不是主动告诉系统或者通过一种监督模拟的方法实现,相信如深度强化学习式的自主学习方式能够给人工智能带来更多的发展空间与想 象力。

1.2 基础理论

本节会对强化学习涉及的要点进行概述,包括基本组成元素(智能体、环境、状态、动作、奖励)以及两类环境模型(基于模型和免模型)。除此之外,还会对强化学习背后的重要原则和设计思想进行探讨,如探索和利用。

1.2.1 组成元素

强化学习主要由智能体和环境组成。由于智能体和环境的交互方式与生物和环境的交互方式类似,因此可以认为强化学习是一套通用的学习框架,代表着通用人工智能算法的未来发展趋势。

强化学习的基本框架如图1.7所示,智能体通过状态、动作、奖励与环境进行交互。假设图1.7中环境处于时刻t的状态记为st,智能体在环境中执行某动作at。这时动作at改变了环境原来的状态并使智能体在时刻t+1到达新的状态st+1,在新的状态使得环境产生了反馈奖励rt+1给智能体。智能体基于新的状态st+1和反馈奖励rt+1执行新的动作at+1,如此反复迭代地与环境通过反馈信号进行交互。

上述过程的最终目的是让智能体最大化累积奖励(Cumulative Reward),式(1.1)为累积奖励G的计算过程。

G=r_1+r_2+\cdots +r_n

{–:}(1.1)

在上述过程中,根据状态st和奖励rt选择动作的规则称为策略π,其中价值函数(Value Function)v是累计奖励的期望。

0107.tif{80%}

图1.7 强化学习的基本框架:主要由智能体和环境组成,其通过奖励、
状态、动作3个信号进行交互

强化学习就是不断地根据环境的反馈信息进行试错学习,进而调整优化自身的状态信息,其目的是找到最优策略或者最大奖励。

1.2.2 环境模型

智能体所处的环境有两种类型:一种是所处的环境是已知的,叫作基于模型(Model-based);另一种是所处的环境是未知的,叫作免模型(Model-free)。

具体而言,基于模型就是智能体已经对环境进行建模。在状态s下执行动作a转移到状态{s}'的概率Psa是已知的,其状态转移所带来的奖励r同样是已知的,所以可以假设环境中的状态空间S和动作空间A都是有限的。此时求解强化学习的任务叫作基于模型学习(Model-based Learning)。

不幸的是,在现实情况下,环境的状态转移概率P、奖励函数R往往很难提前获取,甚至很难知道环境中一共有多少个状态。此时求解强化学习的任务叫作免模型学习(Model-free Learning)。显然,求解免模型的任务比求解基于模型的任务要困难得多。不过无须过于担心,对基于模型的任务可以使用动态规划法来求解,而免模型的任务除了可以使用蒙特卡洛法和时间差分法来求解,还可以使用值函数近似、梯度策略等方法(这里提到求解强化学习任务的方法将会在本书的后续章节一一提到,并给出实例和对应代码,方便读者进行学习和分析)。

通俗地区分基于模型任务和免模型任务之间的关系如图1.8所示。图1.8a所示的工厂载货机器人CEIT通过传感器感应地面上的黑色航线来控制其行走。由于地面上的黑色航线是事先规划好的,工厂的环境也是可控已知的,因此可以将其视为基于模型的任务。图1.8b为特斯拉汽车的自动驾驶系统,在现实的交通环境下,很多事情是无法预先估计的,例如路人的行为、往来车辆的行走轨迹等突发情况,因此可以将其视为免模型的任务。

../IMG/chapter1/08.png{95%}

a)基于模型的任务        b)免模型任务

图1.8 基于模型和免模型的具体例子。a)为CEIT载重车在工厂进行自动运货;b)为特斯拉无人车在真实交通环境进行自动驾驶

1.2.3 探索与利用

在强化学习中,“探索”(Exploration)的目的是找到更多有关环境的信息,而“利用”(Exploitation)的目的是利用已知的环境信息来最大限度地提高奖励。简而言之,“探索”是尝试还未尝试过的动作行为,而“利用”则是从已知动作中选择下一步的行动。

图1.9a所示为《帝国时代》或者《红色警戒》一类的策略游戏。在探索阶段,玩家并不知道地图上黑色被遮盖的地方到底存在什么,敌人是否在那里,所以需要一个探路者游走于黑色地图区域进行探索,以便能够获得更多地图相关的环境知识,便于玩家制定作战策略。当开拓完地图之后,如图1.9b所示,就能全面地知道地图上的信息,即相当于了解了地图上的环境状态信息。接下来玩家便可以利用上述探索到的信息,去找到一个最优的作战策略。

实际上,“探索”和“利用”哪个重要,以及如何权衡两者之间的关系,是需要深入思考的。在基于模型的环境下,已经知道了环境的所有信息(也称为环境的完备信息),这时智能体不需要在环境中进行探索,而只需要简单地利用环境中已知的信息即可;可是在免模型的环境下,探索和利用两者同等重要,既需要知道更多有关环境的信息,又需要针对这些已知的信息来提高奖励。

然而,“探索”和“利用”两者本身是矛盾的,因为在实际的运行中,算法能够尝试的次数是有限的,增加了探索的次数则利用的次数会降低,反之亦然。这就是强化学习中的探索-利用困境(Exploration-Exploitation Dilemma)。如果想要最大化累积奖励G,就必须在探索和利用之间进行权衡。

../IMG/chapter1/09.png{75%}

a)探索           b)利用

图1.9 探索与利用示例

1.2.4 预测与控制

在后续章节中,求解强化学习时常常会提及两个概念:预测和控制。具体而言,有免模型预测(Model-free Prediction)和免模型控制(Model-free Control),以及基于模型预测(Model-based Prediction)和基于模型控制(Model-based Control)。

“预测”的目的是验证未来——对于一个给定的策略,智能体需要去验证该策略能够到达的理想状态值,以确定该策略的好坏。而“控制”则是优化未来——给出一个初始化策略,智能体希望基于该给定的初始化策略的条件下,找到一个最优的策略。

与1.2.3节的“探索”和“利用”相比较而言,“预测”和“控制”事实上是探索和利用的抽象词语。预测对应于探索,希望在未知的环境中探索更多可能的策略,然后验证该策略的状态值函数。控制对应于利用,在未知的环境中找到了一些策略,希望在这些策略中找到一个最好的策略(关于预测和控制的概念,本书将会在求解强化学习的方法中着重介绍,这里只进行简单概述)。

1.2.5 强化学习的特点

前面曾经提到强化学习与机器学习的其他范式(监督学习、无监督学习)不同,具体有以下5个方面。

  • 没有监督者,只有奖励信号(Reward Only)监督学习要基于大量的标注数据进行(标注数据是训练与学习的目标)。而在强化学习中没有监督者,这意味着强化学习不能够由已经标注好的样本数据来告诉系统什么是最佳的动作,智能体只能从环境的反馈中获得奖励。换言之,系统不能够马上获得监督信号,只能从环境中获得一个奖励信号。
  • 反馈延迟(Feedback Delay):反馈延迟实际上是延迟奖励。环境可能不会在每一步的动作上都获得奖励,有时候需要完成一连串的动作,甚至是当完成整个任务才能获得奖励。
  • 试错学习(Trail-and-Error):因为没有监督,所以没有直接的指导信息,智能体要不断与环境进行交互,通过试错的方式来获得最优策略(Optimal Policy)。
  • 智能体的动作会影响其后续数据:智能体选择不同的动作,会进入不同的状态。由于强化学习基于马尔可夫决策过程(当前状态只与上一个状态有关,与其他状态无关),因此下一个时间步所获得的状态发生变化,环境的反馈也会随之发生变化。
  • 时间序列(Sequential)很重要:机器学习的其他范式可以接受随机的输入,而强化学习更加注重输入数据的序列性,下一个时间步t的输入经常依赖于前一个时间步t-1的状态(即马尔可夫属性)。

1.3 应用案例

深度学习已经被许多传统制造业、互联网公司应用到各种领域,与之相比,强化学习的应用还相对有限,本节将对强化学习的已有应用进行简单介绍。

强化学习模仿人类和动物的学习方法。在现实生活中可以找到很多符合强化学习模型的例子,例如父母的表扬、学校的好成绩、工作的高薪资等,这些都是积极奖励的例子。无论是工厂的机器人进行生产,还是商业交易中的信贷分配,人们或者机器人不断与环境进行交流以获得反馈信息的过程,都与强化学习的学习过程相仿。更加真实的案例是AlphaGo的出现,其通过每步走棋的反馈来调整下围棋的策略,最终赢得了人类最顶尖的围棋职业选手。AlphaGo中所使用到的深度强化学习也紧随深度学习之后,成为了目前人工智能领域最热门的话题。事实上,强化学习也确实可以通过对现实问题的表示和人类学习方式的模拟解决很多的现实问题。

一方面,强化学习需要收集大量的数据,并且是现实环境中建立起来的数据,而不是简单的仿真模拟数据。不过幸运的是,强化学习可以通过自我博弈的方式自动生成大量高质量的可用于训练模型的数据。另一方面,与部分算法的研究成果易复现不同的是,复现基于强化学习的研究成果较为困难,即便是对于强化学习的研究者来说,需要重复实现已有的研究成果也十分困难。究其原因是强化学习对初始化和训练过程的动态变化都十分敏感,其样本数据基于在线采集的方式。如果没有在恰当的时机遇到良好的训练样本,可能会给策略带来崩溃式的灾难,从而无法学习到最优策略。而随着机器学习被应用到实际环境的任务中,可重复性、稳健性以及预估错误的能力变得不可缺失。

因此,就目前的情况而言,对于需要持续控制的关键任务而言,强化学习可能并不是最理想的选择。

即便如此,目前依然有不少有趣的实际应用和产品是基于强化学习的。而由强化学习实现的自适应序列决策能够给包括个性化、自动化在内的许多应用带来广泛的益处和更多的可能性。

1.制造业

日本发那科株式会社大量地使用强化学习算法去训练工业机器人,使它们能够更好地完成某一项工作。如图1.10所示,图中黄色的FANUC机器人使用深度强化学习在工厂进行分拣工作,目标是从一个箱子中选出一个物品,并把该物品放到另外一个容器中。在学习阶段,无论该动作成功还是失败,FANUC机器人都会记住这次的动作和奖励,然后不断地训练自己,最终能以更快、更精确的方式完成分拣工作。

img/chapter8/07.jpg{75%}

图1.10 自动化工厂通过使用6台FANUC机器人,组成一个分拣系统来分拣瓶子

中国的智能制造发展迅速,富士康等工厂为了让机器制造更加方便、快捷,正在积极地研发智能制造来装备机器人。未来的工厂将会装备大量的智能机器人,智能制造将是工业4.0乃至工业5.0的重心。强化学习在未来智能制造的技术应用将会进一步被推广,其自动化前景更是引人注目。

2.自动化系统

2017年6月,日本软银公司(Softbank)宣布收购Google旗下的波士顿动力公司(Boston Dynamics)。在这之前,波士顿动力的平行机器人的知名度非常高,其能通过各种巧妙的姿势轻松躲避障碍物。如图1.11所示,波士顿动力在2009年与斯坦福大学的吴恩达(Andrew Ng)教授合作,基于强化学习方法,通过信号进行策略搜索控制仿生狗的姿态以越过障碍。

img/chapter8/08.png{75%}

图1.11 波士顿动力的仿生狗

在自动化领域,还有非常多使用强化学习来控制机器人进而获得优异性能的实际应用案例,如吴恩达教授所带领的团队利用强化学习算法开发了世界上最先进的直升机自动控制系统之一。

3.医疗服务业

在医学领域,医生的主要责任是为病人找到有效的治疗方案,而动态治疗方案(Dynamic Treatment Regime,DTR)一直是热门的研究方向。想要更好地进行动态治疗方案的研究,疾病的治疗数据对于从业者和研究者来说是弥足珍贵的。尤其是诸如类风湿、癌症等不能够马上治愈,需要长期服用药物和配合长期治疗疗程的疾病治疗数据。

而在这个过程中,强化学习可以利用这些有效的或无效的医疗数据作为奖励或者是惩罚,从患者身上收集各种临床指标数据作为状态输入,并利用有效的临床数据作为治疗策略的训练数据,从而针对不同患者的临床反应,找到最合适该患者的动态治疗方案。

4.电子商务个性化

南京大学和淘宝联合发表的论文(Virtual-Taobao: Virtualizing Real-world Online Retail Environment for Reinforcement Learning)详细介绍了淘宝使用强化学习优化商品搜索的新技术。新构建的虚拟淘宝模拟器可以让算法从买家的历史行为中学习,规划最佳商品搜索显示策略,并能在真实环境下让淘宝网的收入提高2%,这是一笔非常可观的交易额。

电子商务最初主要解决了线下零售商的通病——信息不透明所导致的价格居高不下、物流不发达造成的局部市场价格垄断。近年来,线下门店的价格与电商的价格差别已经不是很明显,部分用户反而转回线下零售商,为的是获得更好的购物体验。

未来,对于零售商或者电子商务而言,需要主动迎合客户的购买习惯和定制客户的购买需求,只有个性化、私人订制才能在新购物时代为用户提供更好的消费体验。

事实上,强化学习算法可以让电商分析用户的浏览轨迹和购买行为,并据此制定对应的产品和服务,以匹配用户的兴趣。当用户的购买需求或者状态发生改变的时候,可以自适应地去学习,然后根据用户的点击、购买反馈作为奖励,找到一条更优的策略方法:推荐适合用户自身购买力的产品、推荐用户更感兴趣的产品等,进而更好地服务用户。此外,[Nair, Arun, et al.]发表的文章也揭示了Google以使用强化学习作为广告的推荐框架(Gorila),从而大大提高了Google的广告收益(4%左右),如图1.12所示。

..\tu\0112.tif{70%}

图1.12 Gorila被应用在Google的推荐系统中,每天为Google带来数以
亿计的点击量[Nair et al. 2015]

5.游戏博弈

强化学习应用于游戏博弈这一领域已有20多年历史,其中最轰动的莫过于AlphaGo围棋程序(见图1.13)。AlphaGo使用基于强化学习与深度学习的蒙特卡洛树搜索模型,并将强化学习与深度学习有机融合。在第12章,我们会对AlphaGo程序背后的原理和设计思想进行详细介绍,这里不再赘述。

..\tu\0113.tif{90%}

图1.13 AlphaGo围棋程序中的蒙特卡洛树搜索[Min et al. 2017]

强化学习的应用案例还有很多,例如爱奇艺使用强化学习处理自适应码流播放,使得基于智能推荐的视频观看率提升了15%;又如阿里巴巴使用深度强化学习方法求解新型的三维装箱问题,提高了菜鸟网络的货物装箱打包效率,节省了货物的打包空间。

总而言之,强化学习让机器人处理一些难以想象的任务变得可能,但这仅仅是强化学习的开始,这一技术将会带来更多的商业价值和技术突破!

1.4 强化学习的思考

强化学习算法优势明显、应用范围广。从机器人控制、自动化控制到数据分析、医疗应用等领域都存在着强化学习的身影。可这并不代表强化学习是万能的,在实际应用工程落地的环节中,最为成功的强化学习应用案例除了DeepMind的AlphaGo围棋程序之外,可谓寥寥无几。而深度学习对图像分类和识别的精度达到了前所未有的高度,对图像语义分割的精度超过了过去10年技术进步累计总和,其成果在近年来在多个领域都取得了长足的进步。

接下来,本节将对强化学习存在的待解决问题以及未来可以突破的方向进行探讨。

1.4.1 强化学习待解决问题

强化学习是一种使用贝尔曼方程求解的通用范式。一个稳健性好的强化学习系统原则上能够准确模拟生物的学习方式,可以处理能够归纳为马尔可夫决策过程的问题。通过结合强化学习和深度学习而形成的深度强化学习,理论上是最接近于通用人工智能的范式之一。不幸的是,无论是强化学习还是深度强化学习,到目前为止都不能真正地达到通用人工智能,或者说还远远未达到人们对通用人工智能的预期。

虽然使用深度强化学习技术的AlphaGo围棋程序取得了巨大成功,但其很难推广到其他领域,因为其使用Google自研的TPU每天进行数以万计的围棋对局,并需要巨大的计算能力去支持AlphaGo的训练和学习,而大多数实际应用都难以满足其计算能力诉求。除了芯片运算力的局限性之外,强化学习的应用也受到需要对环境进行准确模拟,以及目前人们对强化学习的理解存在这局限性等限制。短期而言,以下问题亟需解决。

1.环境难以定义

由于需要人为去定义环境、状态、行动和反馈奖励,并且真实环境中的很多因素不确定,实际的任务并没有理想的那么简单,这导致其应用起来非常困难。图1.14a所示为Atari游戏及其奖励得分,游戏中很容易定义输赢和给出恰当的奖励,如果赢得对手一次则奖励+1,如果输了对手一次则奖励-1;而在图1.14b中是给小孩子喂食,喂食是一个有益的动作,理应得到正奖励,而小孩子却不喜欢吃饭,所以在现实生活中如何定义环境及其环境的反馈信号是一件非常困难的 事情。

../IMG/chapter1/10.png{80%}

a) Atari游戏及其奖励        b) 给小孩喂食

图1.14 如何定义环境

2.应用难快速部署(Hardly Quick Deployment)

强化学习只有与环境不断交流,才能获得环境反馈的状态和奖励。然而,智能体在真实环境中的学习成本过高,不能够快速地部署并应用。例如在现实工业环境中,控制系统不允许失败多次去学习一个策略,反之,仿真则可以。虽然强化学习可以去优化一个基准控制器,但是自适应控制系统比强化学习算法更加成熟、简洁、稳定,所以在自动化控制领域中传统自动化算法占据主流位置。

3.维数灾难(Curse of Dimensionality)

强化学习中的维数灾难指环境的状态空间随着系统特征数量的增加而呈现指数级别的增长。例如在自动驾驶的过程中,每执行一个动作后都可能达到一个新的状态空间,而新的状态空间可能有成千上百种可能性,在下一个状态同样如此。维度灾难的存在使得高效地求解最优策略π*或者计算最优值函数v*十分困难。为了避免维数灾难,强化学习目前主要采取的解决方案是利用深度学习的神经网络对值函数进行估计。尽管深度神经网络在GPU的加速下,可以大幅度提高强化学习的学习速度,但并不能够保证其收敛性。所以如何在保证快速学习的情况下,让强化学习的估计函数收敛是强化学习的研究难点和热点之一。

4.采样低效性(Sample Inefficient)

强化学习理论上可以解决任何问题,包括在世界模型未知的环境中执行任务。然而,这种泛化能力需要大量的代价,即很难利用任何特定问题的信息来帮助模型进行学习,这就迫使智能体需要使用大量的样本来学习那些可能已经被硬编码的知识。

深度强化学习算法的例子中最著名的莫过于Atari游戏。正如DQN算法所展示的那样,如果将Q-learning和合理规模的神经网络组合在一起,加上一些优化技巧,那么便可以在部分 Atari游戏中达到与人类相同的游戏水平,甚至在部分游戏上超越人类的游戏水平。可是,Atari游戏以每秒30帧的速度运行,即使目前最好的DQN算法也需要采集非常大量的游戏数据帧才能达到人类玩家的平均水平。

根据Rainbow DQN模型,其训练数据到达了1800万帧的时候就突破了人类玩家的平均水平。这一数据相当于人类玩家玩了60个小时的游戏,如果加上模型训练所花费的时间会更长。而人类玩家通常能够在几分钟内学会一款Atari游戏,并通过一个小时的训练就便可以达到同等玩家的平均水平。

值得注意的是,1800万帧实际上已经是相当好的结果。分布式DQN(Distributed DQN)需要7000万帧才能达到人类玩家的平均水平,4倍于Rainbow DQN的训练时间。另外,发表在《自然》杂志上面关于DQN的论文表明,即使使用了2亿帧的游戏,还有很大一部分游戏并没有达到人类玩家的水平。

在强化学习中,完成一项任务所要花费的时间和采集的数据往往比我们想象中的要多得多。在DeepMind的论文(Emergence of Locomotion Behaviors in Rich Environments)中,使用了64个worker在超过100小时的时间里训练策略。结果确实很惊人,强化学习竟然可以很好地学习例子游戏中的奔跑状态。不过,需要6400个CPU小时进行训练的事实限制了其应用范围,因为不是每个科研机构或者公司都能够拥有如此惊人的计算能力。更为重要的是,即使没有期望强化学习能够在更短的时间内完成任务,其在实践当中的采样效率低下也在一定程度上限制了其应用范围。

在某些环境下,能够比较容易生成经验提供给智能体进行采样。例如游戏只需要执行新的动作,就马上可以得到环境的反馈和获得奖励回报。然而,在大部分情况下,强化学习将会面临非常大的挑战。例如,无人驾驶的路径规划采用强化学习的方法,它不仅需要正确行驶的数据,也需要错误行驶的数据作为惩罚,而在现实情况下的任何时候都不希望出现错误行驶的数据,因为会造成交通事故。如此一来,需要采集足够的数据(或者说是均衡的数据)训练一个好的强化学习模型,是非常困难的。

5.系统可替代性(System Replaceable)

如果仅仅关心任务算法的最终性能,那么有很多任务都可以通过传统人工算法得到更好地解决,在寻求解决方案时可以直接在不同的方法之间进行权衡。如果单纯希望得到一个好的解决方案,或许深度强化学习的方法并不是最好的选择,因为其很容易被其他方法所击败。

在Atari游戏中,使用现成的蒙特卡洛树搜索也能够很容易地达到强于DQN的游戏水平。[Guo et al.]在NIPS 2014上所发表的论文比较了训练好的DQN模型和UCT Agent得分(其中UCT是目前使用的蒙特卡洛树搜索的一个标准版本),结果表明用单纯的搜索方法比强化学习方法取得更好的效果。又例如,波士顿动力公司的机器狗和机器人的控制算法中明确表示了没有使用强化学习,但如果去查阅波斯顿动力研究团队所发表的论文,可以得知其使用了诸如LQR、QP求解和凸优化等相关的算法。

事实证明,经典的控制算法在绝大部分情况下能够让机器人很好地工作,而不一定需要强化学习或者深度强化学习。因此在特定领域的问题中,很多时候深度强化学习并不是最好的   方法。

6.需要奖励函数(Reward Function)

根据强化学习的范式,其需要一个奖励函数来与环境进行连接。这个奖励函数通常可以人为离线设定好,在学习过程中保持固定;也可以根据环境的反馈动态调节。为了让强化学习正确地学习,奖励函数必须正确地反映环境对于智能体的反馈,而且这个反馈信息应该尽可能精确。

在Atari游戏中,不仅可以轻易地收集到大量的经验样本,而且每个游戏的最终目标是将得分最大化,所以根本不需要担心游戏中奖励函数的定义,每一款游戏都有严格的奖励函数控制方法。例如在模拟仿真环境中,拥有关于所有对象状态的完备知识,这使得奖励函数的定义变得非常明确。在上述情况下,需要一个奖励函数并不是十分困难的事情,困难的地方在于奖励函数的设计。

7.奖励函数设计困难

上文提到创建一个奖励函数并不困难,困难在于设计合适的奖励函数让智能体得到其期望的动作。

定性奖励函数和稀疏奖励函数对算法的影响各不相同。例如在Atari的PingPoing游戏当中,赢了一个球奖励为+1,输了一个球奖励为-1,这属于一种定性的奖励。游戏中赢得的分数越多,智能体得到的奖励得分就越大;越接近最终目标,给出的奖励就会越高,此时奖励函数明确,智能体容易学习。与之对应的是稀疏奖励函数,其仅在达到目标状态时才给出奖励,在其他中间状态没有奖励,例如围棋游戏中在没有到最终状态时,并不会知道输赢,这可能会使得智能体学习到的样本产生误导。

另外,在奖励函数设计不平衡的情况下,强化学习算法得到的可能不是所期望的结果。奖励函数设计不平衡,可能使得智能体最后求得的路径不是最优方案。

下面再给出几个因为奖励函数设计不当而引起问题的案例。

  • 智能体进行室内导航。如果智能体走出地图边界,导航就终止。然而当事件以这种方式终止时,没有增加任何惩罚项。最终智能体学到的策略可能表现出奇怪的自杀行为,因为负奖励太多,而正奖励难以获得。
  • 训练机械臂到达桌子上的某一个点。事实是这个目标点是相对于桌子定义的,而桌子并没有固定到任何东西上。智能体学习到的策略可能是猛烈地撞击桌子,最终将桌子掀翻,使得目标点被移动。而此时,目标点恰巧落在了机械臂末端的附近。
  • 使用强化学习来训练模拟机器手,使它拿起锤子钉钉子。开始时,奖励是由钉子插入孔中的距离决定的。机器人并没有拿起锤子,而是使用自己的肢体将钉子砸入了孔中。因此,增加了一个奖励项来鼓励机器人拿起锤子,并重新训练策略。最后智能体得到了拿起锤子的策略,但是后来它将锤子扔在了钉子上,而不是使用锤子去砸钉子。

8.局部最优解问题

局部最优解的问题不只存在于深度学习。深度学习通过使用大规模的样本、对样本清洗、归一化等方法,尽可能地减少局部最优解的问题,但依然无法彻底解决局部最优解问题。同时,该问题还存在于强化学习中,主要来源于强化学习中经典的“探索”与“利用”困境。

假设智能体为一个仿生机器人,目标是奔跑到终点,这里不设置任何限制,机器人既可以使用四肢一起奔跑,也可以依靠双足奔跑。强化学习模型得到的是状态向量,经过某策略选择后输出动作向量,通过与环境进行交互获得奖励信号,但其学习过程中可能会发生以下情况。

  • 在随机探索的过程中,策略发现向前扑倒比原地不动要好。
  • 智能体努力记住该行为,所以它会连续地向前扑倒后再站立起来。
  • 智能体发现前空翻会比单纯向前扑倒得到更多的奖励。
  • 策略固化过程,智能体学习前空翻姿势和角度,使其以更好的前空翻姿势奔向终点。

上述过程听上去带有搞笑成分,这绝对不是人们所期望的方式。产生上述问题的原因是智能体并没有探索完所有可能达到终点的方式,而是找到了局部最优解,然后不断优化策略以满足该局部最优解,使其获得更大的奖励。

在1.2.4节中讲述“探索”与“利用”问题,如果智能体“探索”过度,会引入大量的垃圾数据,导致学习不到有价值的事。如果“利用”太多,则智能体得到的行为往往是局部最优解。

9.过拟合问题

DQN是一个通用的算法,可以在很多Atari游戏通过合适的训练超过人类平均的游戏水平。但是对于某一款游戏其需要单独的训练,聚焦在一个单独的目标上。最终的强化学习模型不能够泛化到其他游戏当中,因为它并没有以其他游戏中的方式进行训练过,不同的游戏奖励函数不同。在实际工作中,虽然能够将一个学习好的DQN模型迁移到另一个Atari游戏中,但是并不能够保证其实际的运行效果的高效性。

在某种情况下,模型可以很好地被迁移,例如深度学习中使用ImageNet数据训练的VGG网络模型迁移到使用其他数据训练的VGG网络模型中。但实际上,深度强化学习的泛化能力还不足以处理很多诸如此类的任务集合。至少到目前为止,深度强化学习还没有达到像神经网络的迁移学习那样的程度。模型过拟合泛化问题依然是科学家们的研究热点。

10.结果不稳定性和算法难以复现

无论是SVM、K-means,还是神经网络模型,几乎每一个机器学习算法都存在影响模型的学习行为和学习方式的超参数。这些超参数都需要通过人工手动挑选得到,或者通过某种特定的算法计算得到。完全自动化而不需要超参数的机器学习算法屈指可数。

与强化学习相比,监督学习算法性能较为稳定。基于对算法的经验技巧掌握,机器学习训练过程中不同参数对结果的影响很容易从训练产生的数据体现出来,例如随机梯度下降算法学习率对结果的影响可从损失曲线中进行观察。

但强化学习对初始化和训练过程的动态变化十分敏感,因为数据采用在线采集的方式,可得到的唯一监督信息只有来自于与环境反馈得到的奖励信号。一方面,强化学习在较好的训练样例上,可能会更快、更好地学习到较优的策略。另一方面,如果智能体没有在恰当的时机遇到好的训练样本,有可能给算法带来崩溃式的灾难,从而无法学习到好的策略。并且在训练过程中,任何偏离现有状况的行动都有可能导致更多的负反馈。上述强化学习的随机性给强化学习算法带来了结果不稳定性,算法难以复现其论文中的最优效果。

短期而言,深度强化学习存在一些亟需解决的挑战,一定程度上使得部分学者对深度强化学习的现状感到很无奈和消极。尽管如此,我们还是可以从深度强化学习的成功案例中获得一些信心。在这些成功案例中,深度强化学习给通用人工智能带来了一线希望,同时这也是一个很好的概念和理论体系,等待着我们去探索和完善。

1.4.2 强化学习的突破点

深度强化学习虽然目前存在着问题与不足,但其仍蕴含的巨大价值,值得投入更多的精力去研究与探索。科研的道路是一个发现与探索的过程。神经网络刚被发明的时候,不仅效果不佳而且效率极低,三起三落的研究热潮使得神经网络不断发展,最终发展到如今号称人工智能的入口——深度学习。作者深信强化学习同样如此,是一个短期悲观、长期乐观的事情,相信更多研究者的参与能够为该领域注入更多新鲜的血液,带来更多的遐想空间。

通过对强化学习的认识和了解,以下给出目前深度强化学习的突破点。

1.局部最优

有人说“人类思考的方式比其他所有的生物都要优秀”,这种话语可能有点过于傲慢。实际上,与其他生物物种相比,人类只是在某些方面做得很好。同样,强化学习的解决方案不一定需要得到全局最优解,只要其局部最优解能够较好地满足实际的应用需求,就是一个可以接受的解决方案。就像1.4.1节中谈论的仿生机器人虽然还不能够用双足奔跑,但是至少能够以一种速度较快的方式移动到终点。

2.硬件加速

TPU、GPU、APU的出现使得部分人觉得,人工智能最重要的发展方式就是不断扩展硬件以获得更多的计算能力。一方面,硬件速度的提升对于人工智能算法来说举足轻重,没有硬件加速可能就没有了深度学习的爆发。另一方面,没有深度学习算法,再快的硬件可能也无济于事。不过需要承认的一点是,硬件运算速度越快,就可以越少地关心采样低效的问题,甚至在部分时候可以暴力地解决探索问题,就像AlphaGo背后强大的TPU集群支持其使用蒙特卡洛树搜索算法进行大范围的走棋探索与评估。

3.增加奖励信号和学习数据

对于强化学习来说,稀疏的奖励函数难以学习,因为从中获得的有效信息较少。但可以通过经验回放的方式增加奖励信号;也可以通过无监督的辅助方法让智能体进行自我学习和自我增强,如AlphaGo Zero程序使用两个智能体互相下棋以获得更多的数据。

4.提高采样效率和学习速率

原则上说,一个泛化能力强的强化学习算法可以解决系列性的问题。泛化性强的模型可以更为方便地迁移到新的强化学习任务中,因此可以通过基于模型的学习来提高采样效率。这样就能够使得算法采集少量样本而达到相同的效果,类似于深度学习中的“迁移学习”。

迁移学习可以利用此前任务中学习到的知识来加快新任务的学习。如果迁移学习训练得到一个好的网络模型,那么对于不同的任务可以有好的稳健性以完成系列性的强化学习任务。如果迁移学习做得不好,强化学习的模型泛化能力不足,那么对于深度强化学习的发展仍然是一个很大的限制。

5.结合深度学习算法

DQN算法结合了深度学习与强化学习,AlphaGo程序同样结合了蒙特卡洛搜索树、深度学习与强化学习,在有监督的深度学习基础上利用强化学习对深度学习模型进行微调。诚然,这是一种很好的方法,因为深度学习具有很强的表征能力,有助于加速强化学习中的探索效率。换言之,深度强化学习可以依托深度学习,并在此基础上进行深入的研究和尝试。

6.设计可学习的奖励函数

机器学习的目标是使用数据自动地去学习到比人工设定更好的分类、回归或者关联分析的模型。因为奖励函数设计很困难,人为指定奖励函数可能会以偏概全,甚至会破坏强化学习系统的稳定性。基于此,可以使用机器学习的方法来学习奖励函数。另外,“模仿学习”和“逆强化学习”都取得了一定的研究进展,它们揭示了可以通过演绎法或者评估法来隐式地定义奖励函数。

7.提供良好的先验知识

好的先验知识可以极大地缩短模型的学习时间。强化学习算法被设计为适用于马尔可夫决策过程中的任务,这是强化学习算法泛化性不足的根本原因。通过给智能体提供有效的先验知识,就能够使智能体快速学习现实环境中的新任务,这会加快智能体学习马尔可夫决策过程,一定程度上弱化算法的泛化性问题。

8.使用预测学习

预测学习属于机器学习中的无监督范式。其主要目标是让智能体拥有“共识”,即从可获得的任意信息中预测所感知对象(系统状态或动作、图像、语言等)的过去、现在或将来的任意部分。其预测对象将要发生的事情,然后根据实际情况(反馈信号)进行学习。系统在没遇到将会发生的事情时,没有监督者告诉系统应该预测什么,一切都是由系统自身去探索决定。强化学习之父Sutton曾经表示,预测学习将会是续强化学习后的下一个研究方向。

(上面提到的模仿学习、逆强化学习、预测学习、迁移学习均不在本书的讨论范围内,有兴趣的读者可以自行查阅相关资料。)

尽管从研究的角度来看,深度强化学习目前所取得的成绩还不尽如人意,但是研究深度强化学习对于研究通用人工智能的意义是非凡的。例如特斯拉汽车公司的CEO埃隆·马斯克一直在宣扬人工智能威胁论,并多次警告不要低估人工智能所带来的危害。

部分学者认为人工智能试图通过制造与人类思想类似的事物来理解人类的思想,从而可能在思想上超越人类。正如费曼所说,“我无法创造的东西,我就不理解它”。可以预计的是,无论在科技界还是生物界,将会发生的一件重要的事情就是人类会面对一场意识解放,即人类会进一步理解自身的意识,这种意识本身将会对社会和哲学上产生巨大的影响。

对人类意识上的理解,或许就是这个时代最伟大的科学成就,它也将是有史以来人文学科最伟大的成就——深刻地理解自我。从这个角度来说,通用人工智能的发展并不是一件坏事。而要达到真正意义上的通用人工智能,仍然有很长的道路,这是一个非常具有挑战性的任务。

毫无疑问,当人类更深入地了解大脑如何运作时,今天我们所珍视的一些观点也会面临同样的挑战。到了那时,被视为对通用人工智能发展非常重要的强化学习,也许会被遗忘在科学的分支上。但这并不是一件坏事,因为科学在进步,人类同样在进步。我们站在巨人的肩膀上,勇敢地探索人工智能的未来!

1.5 小结

本章按照顺序依次介绍了强化学习与机器学习之间的关系,以及强化学习的发展历史、基础理论、应用案例、特点与评价。从强化学习的发展历史了解到强化学习与机器学习的共同点与差异。通过基础理论了解到强化学习的模式,引出状态、动作、奖励、策略、状态值函数等一系列概念。在应用案例中直观地了解了强化学习能处理什么类型的任务,最后从宏观的角度探讨了强化学习的未来。

  • 强化学习:一般而言,强化学习的目标是学会如何将观察结果和其测量值映射到一系列的行为中,同时最大化长期奖励。其过程实际上是智能体通过与环境进行交互,在连续时间序列中学会最优决策序列。
  • 任务目标:强化学习的目标是找到使累积奖励最大化的策略,其中价值函数v是对累积奖励的期望。
  • 组成元素:智能体通过状态、动作、奖励与环境进行交互。在每一个时间步t中,智能体达到一个状态s,选择一个动作a,然后获得一个奖励r,其中动作a的选择要通过策略来表达。
  • 强化学习的特点:只有奖励信号、反馈延迟、试错学习、动作影响后续状态、时间序列重要。
  • 发展的限制:环境定义困难、不能快速部署并应用、存在维度灾难问题。

本文摘自刚刚上架的《深度强化学习原理与实践》

  • 涵盖数学基础、算法框架、网络模型
  • 构建完整的强化学习知识体系,展现深度强化学习成果
  • 可下载各章源代码(基于Python3),书中附带彩图文件。

编辑推荐:

1、中国科学院院士张景中,中国科学技术大学大数据学院常务副院长陈恩红,OPPO研究院院长刘畅,倾情作序2、内容系统详实:本书构建了一个完整的强化学习知识体系,不仅涵盖经典强化学习的内容,还包括深度强化学习的重要成果——DQN算法、A3C算法、Rainbow算法等。使读者了解强化学习的发展历史和重要成果,助力其在强化学习领域进行创新研究和应用实践,进而找到更有价值的研究课题和应用方向。
3、兼顾理论与实践:深入全面讲解掌握深度强化学习的理论知识,并结合Python 3代码案例,将算法快速落地,降低读者的学习门槛和入门难度。
4、读者受众广泛:在结构布局和逻辑梳理上,兼顾了学术界和工业界读者的不同需求,既适用于技术工程师,也适用于研究人员和学生群体。
5、贴近技术前沿:详细介绍近年来在强化学习领域的研究进展和成果,尽可能保证本书的时效性,对学术研究和实际工作都具有很高的参考和应用价值。
6、配套源码资源:本书提供分章的配套源码,读者可到异步社区中下载并使用。

2018-06-11 20:32:16 songyunli1111 阅读数 4854

一个简单的小例子:

对于一个正在学走路的小屁孩,他一不小心摔倒了,如果他一摔倒就哭,那妈妈就会打他小屁屁,如果他摔倒了会自己爬起来,那妈妈很高兴,就奖励他喝一口奶。这样小屁孩就学会了摔倒了要自己爬起来,然后就可以喝很多很多奶。

其实,强化学习就是通过不断与环境交互,利用环境给出的奖惩来不断的改进策略(即在什么状态下采取什么动作),以求获得最大的累积奖惩。

在上述问题中,奖就是喝奶,惩就是打屁屁,在摔倒状态下,是选择哭还是爬起来,不同的动作会有不同的奖惩;初始的策略是哭和爬起来都有可能。但根据奖惩,小屁孩学到了摔倒之后爬起来是一个更好的策略,因此之后都会选择这个策略,这样就可以最大化累积奖惩—喝很多很多奶。

强化学习和有监督学习的主要区别:

1、有监督学习的训练样本是有标签的,强化学习的训练是没有标签的,它是通过环境给出的奖惩来学习

2、有监督学习的学习过程是静态的,强化学习的学习过程是动态的。这里静态与动态的区别在于是否会与环境进行交互,有监督学习是给什么样本就学什么,而强化学习是要和环境进行交互,再通过环境给出的奖惩来学习

3、有监督学习解决的更多是感知问题,尤其是深度学习,强化学习解决的主要是决策问题。因此有监督学习更像是五官,而强化学习更像大脑。

强化学习的入门可以参考:强化学习如何入门

2018-07-22 21:30:23 ybdesire 阅读数 200

1. 摘要

通过对比有监督学习,来理解强化学习的基本思想。

2. 强化学习与有监督学习的区别

在有监督学习中,我们通过建立“特征->标签”对,来训练模型,从而让模型学会解决分类、回归问题。

但在强化学习中,我们没有标签,我们的Y值只是一个分数(reward)。通过这个分数,可以衡量模型所做决策(决策位于X中)的好坏。

在gym环境中,the goal is always to increase your total reward。

3. 强化学习中最重要的“特征”

参考gym库的定义,下面给出实际使用强化学习时,需要获取的数据:

  • observation:相当于有监督学习中的特征,比如图像的二维原始像素矩阵。
  • reward:上一次action进行后,取得的奖励值。在gym环境中,the goal is always to increase your total reward。
  • done:是否达到目标,比如gym游戏中,将平衡杆子直立到规定的角度之内

结合下图

这里写图片描述

其中的agent,就是我们需要训练的AI模型。agent根据observation预测出action,通过实际env中执行action,取得该action的reward,通过这个reward,来反馈控制模型做出更好的判断。

4. 常见的强化学习模型

这里写代码片

5. 参考

博文 来自: ibelieve8013
没有更多推荐了,返回首页