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