原文来源:Stats and Bots
作者:Vitaly Kurin
「机器人圈」编译:嗯~阿童木呀、多啦A亮
在本文中,Statsbot团队请教计算机科学家Vitaly Kurin简要介绍模仿学习,并概述强化学习的基本知识。生物有机体是及其复杂的。即使是诸如苍蝇或蠕虫这样相对简单的生物也是如此。他们不仅能够在现实世界中成功生存,而且对环境的变化有着极强的适应力。人类可以提前计划,亦可以根据新的信息改变我们的计划,我们还可以与他人合作,以便更有效地执行我们的计划。
科学以及诸如欧洲核子研究组织(CERN)或阿雷西沃天文台的巨大无线电望远镜等这样的项目都是人类协作和规划的艺术的完美印证。
所有试图创造一个具有更小的自主权的人造有机体的尝试都表明,多年的进化过程并不是徒劳的,而建立这样的有机体是一项艰巨的任务。
不错,我们承认,我们现在可以在国际象棋或围棋中击败最优秀的选手,我们可以在Atari 2600的视频弹球中获得近似疯狂的分数,甚至,我们可以在扑克赛中挑战人类,从而使其破产。那么我们是否能打开一瓶香槟庆祝胜利?恐怕不能。
来源:statsbot博客
但是,我们不得不承认,在现实世界中的成功运作要比玩游戏或太空入侵要困难得多。许多任务比这要难得多。想象一下,一个孩子在拥挤的市中心中间骑着自行车,或者一个人以每小时200英里的时速开着保时捷飞奔在高速公路上。面对这样的现实,我们必须承认,距离目标的实现,我们还有很远的路要走。
为什么我们还没有实现目标呢?
典型的机器学习方法是从头开始对模型进行训练。给它一百万张图片和一些时间,从而对其进行识别。给它一个星期,让它玩太空入侵者,直到它能够达到一个可以接受的分数。而我们,作为人类,与其有着不同的诉求。
当一个人开始玩一个他从未见过的游戏时,他已经拥有了大量的预先信息。在“蒙特祖玛的复仇”这款游戏中,如果他看到了一扇门,他就会意识到,在某个地方应该会有一把钥匙,他需要找到钥匙。当他找到钥匙的时候,他记得那扇关着的门是在他曾穿过的两个房间的后面,然后他会返回从而打开那扇门。而当他看到一个梯子时,他意识到可以爬上去,因为他已经做了几百次这样的事情了。如果我们可以以某种方式将人类对世界的了解转移给智能体将会怎样呢?我们该如何提取所有的这些相关信息呢?我们该如何创建一个基于此的模型呢?这时候就出了这样一种方式,我们称之为模仿学习。
模仿学习并不是唯一一个利用人类数据的好方法。一些研究人员也称之为“学徒学习”(apprenticeship learning),而另外一些研究人员将其称为“从演示中学习”(Learning from Demonstration)。从我们的角度来看,所有这些标题之间并没有实质性的区别,我们将从现在开始称其为模仿学习。
为了引入模仿学习,我们首先需要了解强化学习的基础知识。
强化学习
其实要得到强化学习的基本概念并不难。有一些智能体,我们希望这个智能体能够学习一些任务。假设,我们有一个Atari 2600控制台,智能体可以访问操纵杆,可以看到屏幕上发生了什么。
假设,我们以每秒60次的速度给予智能体一个屏幕截图,并问它想要按什么按钮。如果我们的智能体表现出色,它可以看到它的分数在增加(正强化),否则我们可以给它一个惩罚作为负奖励(负强化)。渐渐地,通过尝试和错误,智能体开始明白,它最好避免去做一些行为,而做一些能给它带来奖励的事情。
常用强化学习的设置
我们可以以更为正式的数学方式描述上面的过程:我们可以描述上述的强化学习框架(观察—动作—获得奖励和下一个状态)作为马尔可夫决策过程(MDP):
其中:
S是一组状态,
A是一套动作,
R是奖励函数,
T是转换函数,
γ是贴现因子,权衡当前奖励和长远奖励之间的平衡。有一种普遍的观点认为,相较于遥远的未知,人类更喜欢当前的奖励,尽管有一些人认为这种观点是基于数学环境得出应该有所偏差。
我们还需要对用于下一节的策略函数进行定义,Policy是一个函数,它返回一个给定状态的动作:
而实际上,实际上,在解决MDP时我们的最终目标是学习这样一种策略,以便最大化我们的智能体的奖励。
举一个MDP的例子,圆圈代表状态,带有绿色标签的箭头是动作,红色标签是动作的奖励,而方块是终端状态。绿色数字标签是转换概率。
图片来源:David Silver的强化学习课程的幻灯片,第二讲
我们的学生现在从蓝色圆圈开始,学习对他来说,很难而且有些无聊。他决定打开一个Facebook应用程序,一旦他进入此状态,他可以退出或继续留在当前位置。然后,他学习越来越多的知识,最后决定去酒吧。
这个状态是一个更小的圆圈,因为现在有一个随机性的元素,基于学生在去过酒吧后忘记的知识量。然后,他可以学习更多知识,通过考试( 10的奖励),或者现在他可以选择睡觉并完成MDP。
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(<插入任何大数字>)个转换期间有关奖励的信息、转换前后的状态,以及判别事件是否已达到终端(游戏结束)或否。
有了回放经验,我们可以随机采样mini-batch,更有效地学习。
第一,每个转换可能潜在地用于几个权重更新,并且更有效地使用数据。
第二,通过随机抽样,我们打破了样本之间的相关性,从而减少了权重更新的方差。
使算法更稳定的另一件事是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/)
有一种方法可以解决这些问题,以及其他问题——模仿学习。正如我们在这篇文章开头提到的那样。像我们所说,人类很少学习一些没有任何先前信息的东西。我们现在使用这个数据,我们应该做什么?
什么是模仿学习?
模仿学习是通过在某种意义上模仿人类行为来暗示给予智能体关于世界的先前信息。
模仿学习不仅有助于我们解决样本效率低下或计算可行性问题,还可能使训练过程更加安全。 我们不能把一辆自动驾驶汽车放在街道的中间,让它做任何它想要做的事情。我们不希望它危害周围的人,摧毁某人的财产或设备。对人类演示的数据进行预处理可能会使训练过程更快,避免不好的情况发生。
说了上面所有的一切,我们忘了一件事——数据。
训练模型需要一些数据。 训练深度学习模型需要更多的数据。 训练深度强化学习模型需要...好的,你明白了。
所以,这一系列文章只是部分描述我们可以用演示数据做什么。所有这一切的要点是要求人类演示数据集,不幸的是,到目前为止我们没有很多办法。
好的,内容就到这里。这篇文章的要点是:
机器学习还远远没有建立一个能够解决或多或少复杂的现实世界任务的自主智能体;
模仿学习是使这些智能体更接近的可能解决方案之一;
我们还概述了强化学习的基础知识,特别是详细描述了强化算法之一的DQN。
想进一步了解,欢迎阅读以下内容:
Andrew Sutton和Andrew Barto的强化学习圣经
David Silver在伦敦大学学院的强化学习课程
DQN原文报告:NIPS workshop, Nature
原始DQN torch代码
有关强化学习的优秀系列Medium文章,由Athur Juliani撰写并附代码。
,