「机器人圈」编译:嗯~阿童木呀、多啦A亮
在本文中,Statsbot团队请教计算机科学家VitalyKurin简要介绍模仿学习,并概述强化学习的基本知识。
生物有机体是及其复杂的。即使是诸如苍蝇或蠕虫这样相对简单的生物也是如此。他们不仅能够在现实世界中成功生存,而且对环境的变化有着极强的适应力。人类可以提前计划,亦可以根据新的信息改变我们的计划,我们还可以与他人合作,以便更有效地执行我们的计划。
科学以及诸如欧洲核子研究组织(CERN)或阿雷西沃天文台的巨大无线电望远镜等这样的项目都是人类协作和规划的艺术的完美印证。
所有试图创造一个具有更小的自主权的人造有机体的尝试都表明,多年的进化过程并不是徒劳的,而建立这样的有机体是一项艰巨的任务。
不错,我们承认,我们现在可以在国际象棋或围棋中击败最优秀的选手,我们可以在Atari2600的视频弹球中获得近似疯狂的分数,甚至,我们可以在扑克赛中挑战人类,从而使其破产。那么我们是否能打开一瓶香槟庆祝胜利?恐怕不能。
是的,机器学习最近取得了突破性进步。新的深度学习理念与旧版本的结合使我们能够在诸如计算机视觉、语音识别和文本翻译等许多领域得以进步。
强化学习也从它与深度学习的结合中受益匪浅。而对于深度强化学习的成功,想必你也早有耳闻,例如在Atari2600比赛中取得超越人类的成绩,战胜围棋高手,以及让机器人学习跑酷(parkou)。
但是,我们不得不承认,在现实世界中的成功运作要比玩游戏或太空入侵要困难得多。许多任务比这要难得多。想象一下,一个孩子在拥挤的市中心中间骑着自行车,或者一个人以每小时200英里的时速开着保时捷飞奔在高速公路上。面对这样的现实,我们必须承认,距离目标的实现,我们还有很远的路要走。
为什么我们还没有实现目标呢?
模仿学习并不是唯一一个利用人类数据的好方法。一些研究人员也称之为“学徒学习”(apprenticeshiplearning),而另外一些研究人员将其称为“从演示中学习”(LearningfromDemonstration)。从我们的角度来看,所有这些标题之间并没有实质性的区别,我们将从现在开始称其为模仿学习。
为了引入模仿学习,我们首先需要了解强化学习的基础知识。
强化学习
其实要得到强化学习的基本概念并不难。有一些智能体,我们希望这个智能体能够学习一些任务。假设,我们有一个Atari2600控制台,智能体可以访问操纵杆,可以看到屏幕上发生了什么。
假设,我们以每秒60次的速度给予智能体一个屏幕截图,并问它想要按什么按钮。如果我们的智能体表现出色,它可以看到它的分数在增加(正强化),否则我们可以给它一个惩罚作为负奖励(负强化)。渐渐地,通过尝试和错误,智能体开始明白,它最好避免去做一些行为,而做一些能给它带来奖励的事情。
常用强化学习的设置
我们可以以更为正式的数学方式描述上面的过程:我们可以描述上述的强化学习框架(观察—动作—获得奖励和下一个状态)作为马尔可夫决策过程(MDP):
其中:
S是一组状态,
A是一套动作,
R是奖励函数,
T是转换函数,
γ是贴现因子,权衡当前奖励和长远奖励之间的平衡。有一种普遍的观点认为,相较于遥远的未知,人类更喜欢当前的奖励,尽管有一些人认为这种观点是基于数学环境得出应该有所偏差。
我们还需要对用于下一节的策略函数进行定义,Policy是一个函数,它返回一个给定状态的动作:
而实际上,实际上,在解决MDP时我们的最终目标是学习这样一种策略,以便最大化我们的智能体的奖励。
举一个MDP的例子,圆圈代表状态,带有绿色标签的箭头是动作,红色标签是动作的奖励,而方块是终端状态。绿色数字标签是转换概率。
我们的学生现在从蓝色圆圈开始,学习对他来说,很难而且有些无聊。他决定打开一个Facebook应用程序,一旦他进入此状态,他可以退出或继续留在当前位置。然后,他学习越来越多的知识,最后决定去酒吧。
这个状态是一个更小的圆圈,因为现在有一个随机性的元素,基于学生在去过酒吧后忘记的知识量。然后,他可以学习更多知识,通过考试(+10的奖励),或者现在他可以选择睡觉并完成MDP。
DQN算法(深度Q网络)
整个方法建立在近似于所谓的Q函数的基础上,并基于此建立智能体的行为。Q函数的概念如下:它返回给你一个关于特定的行为和特定状态的整个预期的贴现奖励流,给定从下一个状态开始,我们将遵循策略π。它回答了这样一个问题:“在此状态下按此按钮究竟有何好处”?
Q函数遵循贝尔曼方程(Bellmanequation):
最后,贝尔曼的最优性原则如下:不能总是回顾过去,我们应该始终采取最高Q以最大化奖励流:
但是你可能会问,我们该怎么得到这样的Q函数呢?让我们来看一个例子:想象一下,你想要一杯咖啡(+20的奖励)和一台自动售货机里的巧克力(+10的奖励)。你的总奖励不能超过30。而且,如果你已经喝了咖啡,从现在起,它就不能超过10(对巧克力的奖励)。
想法是这样的:当前步骤和操作的Q值=下一个状态的最大Q值(因为我们的行为是最优的)+转换的奖励。二次目标函数的值变成:
首先,回放经验。VanillaQ-learning的想法是一步一步操作,从而获得奖励和下一个状态,然后根据这个转换更新近似函数参数。DQN的想法是进行转换,并将其保存在“重放内存”中——这是一个数组,用于存储最后10^6(<插入任何大数字>)个转换期间有关奖励的信息、转换前后的状态,以及判别事件是否已达到终端(游戏结束)或否。
有了回放经验,我们可以随机采样mini-batch,更有效地学习。
第一,每个转换可能潜在地用于几个权重更新,并且更有效地使用数据。
使算法更稳定的另一件事是DQN使用两个神经网络:第一个计算当前状态的Q值,第二个计算下一个状态的Q值。
你可以从具有目标的方程式中看出:两个不同的Q函数分别使用θ和θ'。每10000步,从学习参数θ复制参数θ',这有助于提高稳定性。
这里使用一个函数的出现的问题是,当我们更新权重时,Q(s,a)和Q(s',a')都会增加,这可能会导致振荡或策略散度。使用两个单独的网络在目标Q值的更新和计算之间增加了延迟,并减少这种情况。如果你对这些现象感兴趣,请阅读DQNNaturepaper中的“方法”部分。
好的,上面描述的一切听起来都很简单。如果还有一些你不明白的东西,请看DavidSilver的讲座,他完美地解释了这一切!
了解了这些,我们现在可以建立一个TrueAI吗?对不起,但我们不能。
强化学习的挑战
有几个问题阻碍我们建立一个能够在星际争霸II上击败ByuN(HyunWoo,韩国的一位星际争霸选手)的智能体,使自动驾驶汽车早日问世,以及给你的奶奶买个午餐后为她洗碗的机器人。
其中一个问题是,我们的智能体最后获得的奖励可能非常少。假设你下国际象棋,如果你输了,你怎么知道什么时候下的死招?此外,很有可能没有死招,而是几个平常的棋子挪动。
奖励稀疏性是阻碍我们击败“蒙提祖玛的复仇”游戏的一个问题,这是一个非常难的Atari2600游戏,尚未得到**。
什么是模仿学习?
模仿学习是通过在某种意义上模仿人类行为来暗示给予智能体关于世界的先前信息。
模仿学习不仅有助于我们解决样本效率低下或计算可行性问题,还可能使训练过程更加安全。我们不能把一辆自动驾驶汽车放在街道的中间,让它做任何它想要做的事情。我们不希望它危害周围的人,摧毁某人的财产或设备。对人类演示的数据进行预处理可能会使训练过程更快,避免不好的情况发生。
说了上面所有的一切,我们忘了一件事——数据。
训练模型需要一些数据。训练深度学习模型需要更多的数据。训练深度强化学习模型需要...好的,你明白了。
机器学习还远远没有建立一个能够解决或多或少复杂的现实世界任务的自主智能体;
模仿学习是使这些智能体更接近的可能解决方案之一;
我们还概述了强化学习的基础知识,特别是详细描述了强化算法之一的DQN。
...
【深度学习】神经网络介绍1神经元2**函数3感知机与多层网络4误差反向传播参考:周志华《机器学习》"神...
1、查看一下本地的bhz-parent项目,查看是否需要一些相应的变化,在这里需要修改pom.xml,然后提交到svn上(注意pom.xml里的聚合其他项目要注释掉,不然使用Jenkins构建会失败,主要是担心构建parent的时候,其他的依赖项目没有构建好,会报错,所以先注释掉,如果能保证顺序,不注释也没关系本地开发测试的时候再放开)如图所示:2...
本项目基于JDK1.8;OA系统涉及的组件和框架有:目录一:查看数据库,准备一个空的逻辑空间二:创建一个MavenWeb工程(1)创建一Maven工程(2)将当前工程设置为Web工程设置第一部分:web.xml保存目录:设置第二部分:web资源保存在哪儿:设置第三部分:web模块如何执行artifact:(3)IDEA配置Tomcat(4)最后的一点说明...
CentOS7目录结构,文件类型CentOS7目录结构,文件类型文件类型LINUX有四种基本文件系统类型:普通文件、目录文件、连接文件和特殊文件,可用file命令来识别。普通文件:如文本文件、C语言源代码、Shell脚本、二进制的可执行文件等,可用cat、less、more、vi、emacs来察看内容,用mv来改名。目录文件:包括文件名、子目录名及其指针。它是LINUX储存文件名...
Luke安装与使用2009年05月31日星期日00:361Luke简介Luke是一个方便宜的开发和诊断工具,它能访问Lucene建立好的索引同时也允许以如下的一些方式展示和修改内容:l按文档(Document)号或者词项浏览...
TCP是专门设计用于在不可靠的因特网上提供可靠的,端到端的字节流通信的协议。它是一种面向连接的协议。TCP连接是字节流。UDPUDP想应用程序提供了一种发送封装的原始IP数据报的方法,并且发送时无需建立连接。是一种不可靠的连接。...
iuseEntityframeworkin.net4andusethisconnectioninproject:andshowthiserror:TheunderlyingproviderfailedonOpen.Idon'tknowwhyyougetthiserrorbutIusethisconnectionstringa...
Attheriskofpeoplenotbeinghappywithmeagain,IwillpostthecodethatIalreadyhave.PleaselookatthecommentsandletmeknowwhereIamgoingwrong.Yesthisishomework,yesIhavewatc...
TryingtoinstallfloodlightcontrollerinmininetDNSisnotconfiguredorthereisnoconnectivitywiththeInternet....
AnyoneknowhowmanybytesoccupyperfileinnamenodeofHdfsIwanttoestimatehowmanyfilescanstoreinsinglenamenodeof32Gmemory.Eachfileordirectoryorblockoccupiesabout150bytes...
IenabledthetemplatepathshintsonMagento,butIcanonlyseeitontheadminpage,Icannotseeitonthefrontend.Athemehasbeenused.AndtheMagentover.1.7.0.2Anyonehaveasolutionfor...