写点什么

DeepMind 背后的人工智能:深度学习原理初探

  • 2014-10-11
  • 本文字数:2159 字

    阅读完需:约 7 分钟

去年 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 主页上找到。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-10-11 02:0616994
用户头像

发布了 268 篇内容, 共 122.1 次阅读, 收获喜欢 24 次。

关注

评论

发布
暂无评论
发现更多内容

[译] 使用自定义文件模板加快你的应用开发速度

android 程序员 移动开发

RecyclerView

android 程序员 移动开发

Thinkphp5使用model模型操作数据库

android 程序员 移动开发

webview最全面总结(二)全面介绍webview用法

android 程序员 移动开发

tinker热修复gradle接入

android 程序员 移动开发

vue学习(三)—vue

android 程序员 移动开发

区块链之共识算法系列——PoW(一)

Regan Yue

区块链 11月日更

svn 使用方法

android 程序员 移动开发

umi(1)

android 程序员 移动开发

svn 使用方法(1)

android 程序员 移动开发

TCP_UDP协议详解(1)

android 程序员 移动开发

[译] Android 的多摄像头支持

android 程序员 移动开发

SLF4J 的几种实际应用模式--:SLF4J+Log4J 与 SLF4J+LogBack

android 程序员 移动开发

WebSocket学习

android 程序员 移动开发

phonegap照相插件的使用

android 程序员 移动开发

QMUI框架简介

android 程序员 移动开发

Realm数据库使用教程(五):删除数据

android 程序员 移动开发

[译] Android 中的 MVP:如何使 Presenter 层系统化?

android 程序员 移动开发

[译] Android 的多摄像头支持(1)

android 程序员 移动开发

[译] 如何将 Stackdriver 连接到智能家居服务器以进行错误记录

android 程序员 移动开发

TCP_UDP协议详解

android 程序员 移动开发

ViewPager2重大更新,支持offscreenPageLimit

android 程序员 移动开发

windows环境下JSP环境搭建:Apache2

android 程序员 移动开发

Stetho简化Android调试(一)

android 程序员 移动开发

webRTC(十四):webrtc 端到端文本聊天

android 程序员 移动开发

[译] 如何用 Flutter 来创建一个带有底部导航栏的应用程序

android 程序员 移动开发

React Native for Android 原理分析与实践:实现原理

android 程序员 移动开发

这一篇 K8S(Kubernetes)集群部署 我觉得还可以

牧小农

kubenetes

Router_一款单品、组件化、插件化全支持的路由框架

android 程序员 移动开发

RxHttp-完美适配Android-10-11-上传-下载-进度监听

android 程序员 移动开发

[译] Android 模拟器:Project Marble 中的改进

android 程序员 移动开发

DeepMind背后的人工智能:深度学习原理初探_语言 & 开发_张天雷_InfoQ精选文章