去年11月,一篇名为《Playing Atari with Deep Reinforcement Learning》的文章被初创人工智能公司DeepMind的员工上传到了arXiv网站。两个月以后,谷歌花了500万欧元买下了DeepMind公司,而人们对这个公司的了解仅限于这篇文章。近日,Tartu大学计算机科学系计算神经学小组的学者在robohub网站发表文章,阐述了他们对DeepMind人工智能算法的复现。git
在arXiv发表的原始论文中,描述了一个单个的网络,它可以自我学习从而自动的玩一些老的电视游戏。它仅仅经过屏幕上面的图像和游戏中的分数是否上升降低,从而作出选择性的动做。程序员
在训练的一开始,这个程序对游戏一点都不了解。它并不知道这个游戏的目标,是保持生存、杀死谁或者是走出一个迷宫。它对这个游戏的影响也不清楚,并不知道它的动做会对这个游戏产生什么影响,甚至不知道这个游戏中会有哪些目标物品。经过在这个游戏中尝试而且一遍一遍失败,这个系统会逐渐学会如何表现来得到比较好的分数。同时须要注意的是,这个系统对全部不一样的游戏使用了一样的系统结构,程序员没有对不一样程序给予这个程序任何特殊的提示,好比上、下或者开火等等。github
最终结果显示,这个系统可以掌握一些游戏,而且比一些人类玩家还要玩得好。这个结果能够看做对AGI(Artificial General Intelligence)迈近的一小步,很是吸引人。文章给出了以下的细节,从任务、机器学习基础、深度学习模型和学习过程四部分阐述了他们的工做。算法
这个系统得到了某个游戏屏幕的某幅图像,以下图是从一个最简单的游戏Breakout中获取的一幅图片。在简单的分析以后,它已经选择了如何作出下一步。这个动做已经被执行了,而且这个系统被告知了分数是否增长了、减小了或者没有变。基于这个信息,以及已经进行了的大量的游戏,这个系统会学习如何玩从而提升游戏的分数。网络
在深刻深度学习的实现过程以前,文章先介绍了机器学习和人工神经网络的概念。架构
机器学习的一个很是一般的任务是这样的:给出了一个目标的信息,从而可以知道它属于哪一个种类。在深度学习的过程当中,程序想要决定在目前游戏状态下如何进行下一步动做。机器学习算法从例子中进行学习:给出了许多的目标例子和它们的种类,学习算法从中找出了那些可以鉴定某个种类的目标特征。学习算法会产生一个模型,可以在训练集中最小化错误分类率。这个模型以后会被用来预测那个未知目标的种类。机器学习
人工神经网络ANN(Artificial Neural Networks)是机器学习的一个算法。它是由人类的大脑结构产生的灵感。这个网络由许多节点组成,如同大脑由神经元组成,而且互相之间联系在一块儿,如同神经元之间经过神经突触和神经树联系在一块儿。对于每一个神经元,都会对其应该传递的信号的状况作特殊规定。经过改变这些链接的强弱,可使得这些网络计算更加快速。如今神经网络的结构一般由以下部分组成:ide
在学习过程结束以后,新的物体就可以送入这个网络,而且可以在输出层看到每一个种类的分数。学习
在这个系统中,一个神经网络被用来指望在当前游戏状态下每种可能的动做所获得的反馈。下图给出了文章中所提到的神经网络。这个网络可以回答一个问题,好比“若是这么作会变得怎么样?”。网络的输入部分由最新的四幅游戏屏幕图像组成,这样这个网络不只仅可以看到最后的部分,并且可以看到一些这个游戏是如何变化的。输入被通过三个后继的隐藏层,最终到输出层。优化
输出层对每一个可能的动做都有一个节点,而且这些节点包含了全部动做可能获得的反馈。在其中,会获得最高指望分数的反馈会被用来执行下一步动做。
系统经过学习过程来计算最高指望分数。确切地说,在定义了网络的结构以后,剩下惟一会变化的就只有一件事:链接之间的强弱程度。学习过程就是调整这些方式地权重,从而使得经过这个网络的训练样例得到好的反馈。
文章将这个问题看成一个优化问题,目标是获取最好的反馈。能够经过将梯度降低与激励学习方法结合起来解决。这个网络不只仅须要最大化当前的反馈,还须要考虑到未来的动做。这一点能够经过预测估计下一步的屏幕而且分析解决。用另外一种方式讲,可使用(当前反馈减去预测反馈)做为梯度降低的偏差,同时会考虑下一幅图像的预测反馈。
关于代码的更多细节,能够参考他们报告中的代码架构图:
文章最后给出了DeepMind深度学习的整个流程:
这个结果能够看作是在AGI方向的从传统机器学习迈出的一小步。尽管这一步可能很是小,这个系统可能都不知道或者理解它作的事情,可是这个深度学习系统的学习能力远远超过以前的系统。而且,在没有程序员作任何提示的状况下,它的解决问题的能力也更加宽广。他们的代码能够在GitHub主页上找到。