从强化学习到模仿学习,true AI有多远?

2017-09-29 07:52VitalyKurin编译房晓楠陈亮
机器人产业 2017年5期
关键词:状态函数人类

□文/Vitaly Kurin □编译/房晓楠、陈亮

视野

从强化学习到模仿学习,true AI有多远?

□文/Vitaly Kurin □编译/房晓楠、陈亮

在本文中,Statsbot团队请计算机科学家Vitaly Kurin简要介绍了模仿学习,并概述强化学习的基本知识。

生物有机体是极其复杂的。即使是诸如苍蝇或蠕虫这样相对简单的生物也是如此。他们不仅能够在现实世界中成功生存,而且对环境的变化有着极强的适应力。人类可以提前制定计划,可以根据新的信息改变计划,我们还可以与他人合作,以便更有效地执行我们的计划。

科学以及诸如欧洲核子研究组织(CERN)或阿雷西沃天文台的巨大无线电望远镜等科研项目都是人类协作和规划艺术的完美印证。

所有试图创造一个具有更小自主权的人造有机体的尝试都表明,多年的进化过程并不是徒劳的,而建立这样的有机体是一项艰巨的任务。

不错,我们承认,我们现在可以在国际象棋或围棋中击败最优秀的选手,我们可以在Atari 2600的视频弹球中获得不可思议的分数,甚至,我们可以在扑克赛中挑战人类,从而使其破产。那么我们是否能打开一瓶香槟庆祝胜利?恐怕不能。

是的,机器学习最近取得了突破性进步。新的深度学习理念与旧版本的结合使我们能够在诸如计算机视觉、语音识别和文本翻译等许多领域得以进步。

强化学习也从它与深度学习的结合中受益匪浅。而对于深度强化学习的成功,想必你也早有耳闻,例如在Atari 2600比赛中取得超越人类的成绩,战胜围棋高手,以及让机器人学习跑酷(parkou)。

来源:statsbot博客

但是,我们不得不承认,它们在现实世界中的成功运作要比玩游戏困难得多。想象一下,一个孩子在拥挤的市中心骑着自行车,或者一个人以每小时200英里的时速开着保时捷飞奔在高速公路上。面对这样的现实与想象之间的差距,我们必须承认,距离目标的实现,还有很远的路要走。

为什么我们还没有实现目标呢?

典型的机器学习方法是从头开始对模型进行训练。给它一百万张图片和一些时间,让它对其进行识别;给它一个星期,让它玩太空入侵者,直到它能够达到一个可以接受的分数。而我们,作为人类,与其有着不同的诉求。

当一个人开始玩一个他从未见过的游戏时,他已经拥有了大量的预先信息。在“蒙特祖玛的复仇”这款游戏中,如果他看到了一扇门,他就会意识到,在某个地方应该会有一把钥匙,他需要找到钥匙。当他找到钥匙的时候,他记得那扇关着的门是在他曾穿过的两个房间的后面,然后他会返回从而打开那扇门。而当他看到一个梯子时,他意识到可以爬上去,因为他已经做了几百次这样的事情了。如果我们可以以某种方式将人类对世界的了解转移给智能体将会怎样呢?我们该如何提取所有相关信息呢?我们该如何创建一个基于此的模型呢?这时候有一种方式就派上用场了,我们称之为模仿学习。

模仿学习并不是唯一一个利用人类数据的好方法。一些研究人员也称之为“学徒学习”(apprenticeship learning),而另外一些研究人员将其称为“从演示中学习”(Learningfrom Demonstration)。从我们的角度来看,所有这些标题之间并没有实质性的区别,我们将从现在开始称其为模仿学习。

为了引入模仿学习,我们首先需要了解强化学习的基础知识。

强化学习

其实要得到强化学习的基本概念并不难。例如,有一些智能体,我们希望这些智能体能够学习一些任务。那么我们可以进行假设,有一个Atari 2600控制台,智能体可以通过访问操纵杆,来观察屏幕上发生了什么。

假设,我们以每秒60次的速度给予智能体一个屏幕截图,并问它想要按什么按钮。如果我们的智能体表现出色,它可以看到它的分数在增加(正强化),否则我们可以给它一个惩罚作为负奖励(负强化)。渐渐地,通过不断地尝试和不停地犯错,智能体开始明白,它最好避免去做一些行为,而去做一些能给它带来奖励的事情。

常用强化学习的设置

我们可以以更为正式的数学方式描述上面的过程:将上述的强化学习框架(观察—动作—获得奖励和下一个状态)作为马尔可夫决策过程(MDP):

其中:

S是一组状态,

A是一套动作,

R是奖励函数,

T是转换函数,

γ是贴现因子,权衡当前奖励和长远奖励之间的平衡。有一种普遍的观点认为,相较于遥远的未知,人类更喜欢当前的奖励,尽管有一些人认为这种观点是基于数学环境得出的应该与现实有所偏差。

我们还需要对用于下一节的策略函数进行定义,Policy是一个函数,它返回一个给定状态的动作:

而实际上,在解决马尔可夫决策过程时我们的最终目标是学习一种策略,以便最大化智能体的奖励。

举一个马尔可夫决策过程的例子,圆圈代表状态,带有绿色标签的箭头是动作,红色标签是动作的奖励,而方块是终端状态。绿色数字标签是转换概率。

一个学生现在位于蓝色圆圈处,学习对他来说,很难而且有些无聊。他决定打开一个Facebook应用程序,一旦他进入此状态,他可以退出或继续留在当前位置。然后,他学习越来越多的知识,最后决定去酒吧。

这个状态是一个更小的圆圈,因为现在有一个随机性的元素,基于学生在去过酒吧后忘记的知识量。然后,他可以学习更多知识,通过考试(+10的奖励),或者现在他可以选择睡觉并完成MDP。

图片来源:David Silver的强化学习课程的幻灯片,第二讲

DQN算法(深度Q网络)

由于我们将来会使用DQN算法和以及相关知识,那接下来,我们来简单了解一下。

整个方法建立在近似于所谓的Q函数的基础上,并基于此建立智能体的行为。Q函数的概念如下:它返回一个关于特定行为和特定状态的整体预期贴现奖励流,假设从下一个状态开始,我们将遵循策略π。它回答了这样一个问题:“在此状态下按此按钮究竟有何好处”?

Q函数遵循贝尔曼方程(Bellman equation):

而贝尔曼的最优性原则如下:不能总是回顾过去,我们应该始终采取最高Q以最大化奖励流:

但是你可能会问,我们该怎么得到这样的Q函数呢?让我们来看一个例子:想象一下,你想要一杯咖啡(+20的奖励)和一台自动售货机里的巧克力(+10的奖励)。你的总奖励不能超过30。而且,如果你已经喝了咖啡,那么从现在起,总奖励就不能超过10(对巧克力的奖励)。

可以这样理解:当前步骤和操作的Q值=下一个状态的最大Q值(因为我们的行为是最优的)+转换的奖励。二次目标函数的值变成:

Q-learning本身并不新鲜。使用神经网络作为函数近似值的Q-learning也不新鲜(例如,神经适应型q迭代)。有关DQN的论文是第一个使用深度卷积网络来解决这一类型问题的文章,并引入了一些新颖的方法,使得训练过程更加稳定。

首先,回放经验。Vanilla Q-learning 的想法是一步一步操作,从而获得奖励和下一个状态,然后根据这个转换更新近似函数参数。DQN的想法是进行转换,并将其保存在“重放内存”中——这是一个数组,用于存储最后10^6(〈插入任何大数字>)个转换期间有关奖励的信息、转换前后的状态,以及判别事件是否已达到终端(游戏结束)。

有了回放经验,我们可以随机采样minibatch,更有效地学习。

第一,每个转换可能潜在地用于几个权重更新,以便更有效地使用数据。

第二,通过随机抽样,我们打破了样本之间的相关性,从而减少了权重更新的方差。

使算法更稳定的另一个做法是DQN使用两个神经网络:第一个计算当前状态的Q值,第二个计算下一个状态的Q值。

你可以从具体的目标方程式中看出:两个不同的Q函数分别使用θ和θ'。每10000步,从学习参数θ中复制参数θ',这有助于提高稳定性。

在这里,可能出现的问题是,当我们更新权重时,Q(s,a)和Q(s',a')都会增加,这可能会导致振荡或策略散度。使用两个单独的网络,可以在目标Q值的更新和计算之间增加延迟,从而少这种情况。如果你对这些现象感兴趣,请阅读 DQN Nature paper中的“方法”部分。

好的,上面描述的一切听起来都很简单。如果还有一些你不明白的东西,请看David Silver的讲座,他完美地解释了这一切!

了解了这些,我们现在可以建立一个True AI吗?对不起,但我们不能。

强化学习的挑战

有几个问题阻碍我们建立一个能够在星际争霸II上击败ByuN(Hyun Woo,韩国的一位星际争霸选手)的智能体,使自动驾驶汽车早日问世,以及给你的奶奶买个午餐后为她洗碗的机器人。

其中一个问题是,我们的智能体最后获得的奖励可能非常少。假设你在玩国际象棋,如果你输了,你能非常明确地知道是哪招“致命”的吗?也许,并不存在“致命一击”,而是过程中挪动的几个普通棋子使你陷入了“死局”之旅。

奖励稀疏性是阻碍我们击败“蒙提祖玛的复仇”游戏的一个问题,这是一个非常难的Atari 2600游戏,目前尚未得到破解。

与前一个密切相关的另一个问题是样本效率问题。或者,更为直接地讲,是样本效率低下问题。现在对机器来说,即使是掌握一个像“太空入侵者”(Space Invaders)如此简单的游戏都可能会需要花费数多天的游戏时间。但由于我们可以利用模拟器,所以在游戏中加速学习过程是很容易的,但是如果我们想在现实生活中学习一些东西呢?不幸的是,目前物理学还达不到这样的技术层面,而且我们不能加速时间。

有一种方法可以解决这些问题,以及其他问题,那就是模仿学习。正如我们在这篇文章开头提到的那样,人类很少学习一些没有任何先前信息的东西。那我们现在使用这个数据,能够做些什么呢?

插图来源(http://toyoutheartist.co.uk/technique/imitation/)

什么是模仿学习?

模仿学习是通过在某种意义上模仿人类行为来暗示给予智能体关于世界的先前信息。

模仿学习不仅有助于我们解决样本效率低下或计算可行性问题,还可能使训练过程更加安全。 我们不能把一辆自动驾驶汽车放在街道的中间,让它做任何它想要做的事情。我们不希望它危害周围的人,摧毁某人的财产或设备。对人类演示的数据进行预处理可能会使训练过程更快,避免不好的情况发生。

说了上面所有的一切,我们忘了一件事——数据。

训练模型需要一些数据。训练深度学习模型需要更多的数据。训练深度强化学习模型需要……好的,你明白了。

所以,这一系列文章只是部分地描述了我们可以用演示数据做什么。所有这一切的要点是要求人类演示数据集,不幸的是,到目前为止我们没有更多更好的办法。

房晓楠本刊编辑

陈亮本刊编辑

猜你喜欢
状态函数人类
人类能否一觉到未来?
人类第一杀手
状态联想
1100亿个人类的清明
智珠二则
生命的另一种状态
关于函数的一些补充知识
高中数学中二次函数应用举隅オ
无独有偶 曲径通幽
人类正在消灭自然