作者:Angel_Kitty
来源:http://www.cnblogs.com/ECJTUACM-873284962/
一、介绍
目前,对于全球科学家而言,“如何去学习一种新技能”成为了一个最基本的研究问题。为什么要解决这个问题的初衷是显而易见的,如果我们理解了这个问题,那么我们可以使人类做一些我们以前可能没有想到的事。或者,我们可以训练去做更多的“人类”工作,常遭一个真正的人工智能时代。
虽然,对于上述问题,我们目前还没有一个完整的答案去解释,但是有一些事情是可以理解的。先不考虑技能的学习,我们首先需要与环境进行交互。无论我们是学习驾驶汽车还是婴儿学习走路,学习都是基于和环境的相互交互。从互动中学习是所有智力发展和学习理论的基础概念。
二、强化学习
今天,我们将探讨强化学习,这是一种基于环境相互交互的学习算法。有些人认为,强化学习是实现强人工智能的真正希望。这种说法也是正确的,因为强化学习所拥有的潜力确实是巨大的。
目前,有关强化学习的研究正在快速增长,人们为不同的应用程序生成各种各样的学习算法。因此,熟悉强化学习的技术就变得尤其重要了。如果你还不是很熟悉强化学习,那么我建议你可以去看看我以前有关强化学习文章和一些开源的强化学习平台。
一旦你已经掌握和理解了强化学习的基础知识,那么请继续阅读这篇文章。读完本文之后,你会对强化学习有一个透彻的了解,并且会进行实际代码实现。
注:在代码实现部分,我们假设你已经有了Python的基本知识。如果你还不知道Python,那么你应该先看看这篇教程。
1. 确定一个强化学习问题
强化学习是学习如何去做,如何根据与环境的交互采取相应的行动。最终的结果就是使得系统的回报信号数值最大化。学习者不会被告知去执行哪个行动,而是要他自己去发现哪种行动将产生最大的回报。让我们通过一个简单的例子来解释一下:
我们将一个正在学习走路的孩子作为一个例子。
以下是孩子在学习走路时所要采取的步骤:
1.孩子会观察的第一件事,就是注意你是如何走路的。你使用两条腿,一次走一步,一步一步往前走。孩子会抓住这个概念,然后试图去模仿你。
2.但很快他/她又会明白,在走路之前,孩子必须先站起来!在学习走路的时候,这对于孩子来说是一个挑战。因此,孩子试图自己站起来,他/她不断跌倒,但是任然不断地站起来。
3.然而还有另外一个挑战需要应付。站起来是相对容易的,但是要保持站立状态就是另一个挑战了。在一个狭小的空气中,找到支撑,孩子设法保持站立。
4.现在,孩子的真正任务就是开始学习走路了。但是学习走路说起来很容易,而实际做起来就不是那么容易了。在孩子的大脑中需要处理很多事情,比如平衡身体,决定哪个脚是下一次需要放下的,放在哪里。
这听起来像是一个很困难的任务,对吗?它实际上确实是一个挑战,先要学习站立,然后才能学习行走。但是,现在我们不都学会了走路嘛,再也不会被这个问题所困扰了。现在,你可以明白,为什么这对于孩子是多么困难的原因了。
让我们形式化上面的例子。例子所要陈述的问题是“走路问题”,其中孩子是一个试图通过采取行动(走路)来操纵环境(在地上走路)的智能体,他/她试图从一个状态(即,他/她走的每一步)转移到另一个状态。当他/她完成任务的一个子模块(即,孩子走了几步)时,孩子会获得奖励(比如,一些巧克力),但是当他/她不会走路时,他/她不会收到任何巧克力(这是一个负反馈过程)。这就是像话学习问题的简单描述。
这是一个有关强化学习很好的介绍视频。
2. 与其他机器学习方法的比较
强化学习属于更打雷的机器学习算法。以下是有关机器学习算法类型的描述。
让我们比较一下强化学习算法和别的类型算法之间的区别:
监督学习与强化学习:在监督学习中,在外部有一个“监督主管”,它拥有所有环境的知识,并且与智能体一起共享这个知识,从而帮助智能体完成任务。但是这样存在一些问题,因为在一个任务中,其中存在如此多的子任务之间的组合,智能体应该执行并且实现目标。所以,创建一个“监督主管”几乎是不切实际的。例如,在象棋游戏中,存在数万个可以移动的玩法。因此,去创建一个可以获胜的玩法知识库是一个单调乏味的任务。在这些问题中,从自己的经验中学习,并且获得知识是更加合理可行的。这就是强化学习和监督学习的主要区别。在监督学习和强化学习中,在输入和输出之间都存在映射。但是在强化学习中,存在的是对智能体的奖励反馈函数,而不是像监督学习直接告诉智能体最终的答案。
无监督学习与强化学习:在强化学习中,有一个从输入到输出的映射过程,但是这个过程在无监督学习中是不存在的。在无监督学习中,主要任务是找到一个最基础的模式,而不是一种映射关系。例如,如果任务是向用户推荐新闻文章,则无监督学习算法是先查看该人以前读过的类似文章,并把它们推荐给其他人。而强化学习算法则是,通过用户的一些文章,并且获得用户的不断反馈,从而构建一个“知识图谱”,从而得知用户与文章之间的喜爱关系。
还有第四种类型的机器学习,成为半监督学习,其本质上是监督学习和无监督学习的组合。它不同于强化学习,类似于监督学习和半监督学习具有直接的参照答案,而强化学习不具有。
3.解决强化学习问题的框架
为了理解如何去解决一个强化学习问题,让我们通过一个经典的例子来说明一下强化学习问题——多臂赌*博机。首先,我们需要了解探索与开发的基本问题,然后去定义解决强化学习问题的框架。
Tiger Machine如上图,假设你已经在Tiger Machine上面玩了很多次了。
现在你想做的是从Tiger Machine上面获得最大的回报,并且尽可能的快。你会怎么做呢?
一个比较天真的想法是,只选择一个Tiger Machine,然后一整天都在玩它。这听起来非常无聊,但Tiger Machine可能会给你一些“报酬”,即让你赢钱。使用这种方法,你可能中奖的概率大约是0.00000.....1。也就是说,大多数时间你可能知识坐在Tiger Machine面前亏钱。正式说明一下,这可以被定义为一种纯粹的开发方法。但是这是最佳选择吗?答案当然是否定的。