写点什么

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:0617146
用户头像

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

关注

评论

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

为啥运维人员更喜欢 NeoVim 而不是 Vim?这8个原因或许是答案,命令对比一目了然!

wljslmz

Linux 运维 三周年连更

16种国际版多语言点赞抖音分享点赞任务平台网站APP源码搭建

网站,小程序,APP开发定制

音视频八股文(3)--ffmpeg常见命令(2)

福大大架构师每日一题

音视频 ffmpeg

寻找工作中焦虑的源头——系统思考实践

Bruce Talk

系统性思考

线上多域名实战

越长大越悲伤

JavaScript 前端 CDN 域名

全栈开发实战|​电子商务平台的设计与实现(Spring Boot + MyBatis + Thymeleaf)

TiAmo

Spring Boot mybatis thymeleaf 全栈开发 三周年连更

长连接Netty服务内存泄漏,看我如何一步步捉“虫”解决 | 京东云技术团队

京东科技开发者

内存泄露 京东云 netty 企业号 4 月 PK 榜

深度学习基础入门篇[六(1)]:模型调优:注意力机制[多头注意力、自注意力],正则化【L1、L2,Dropout,Drop Connect】等

汀丶人工智能

人工智能 机器学习 深度学习 正则化 注意力机制

2022-04-22:给你两个正整数数组 nums 和 target ,两个数组长度相等。 在一次操作中,你可以选择两个 不同 的下标 i 和 j , 其中 0 <= i, j < nums.leng

福大大架构师每日一题

Go 算法 rust

如何使用 go-micro 写微服务应用

宇宙之一粟

Go 微服务 三周年连更

Android C++系列:数组在函数中注意事项

轻口味

c++ android 三周年连更

MediaPlayer音频与视频的播放介绍

芯动大师

api 网关 MediaPlayer 三周年连更

Orillusion荣获SegmentFault AIGC Hackathon 2023 线上黑客马拉松赛二等奖&最佳创意奖

Orillusion

开源 元宇宙 webgpu AIGC ChatGPT

Unity 之 超级实用的小技巧

陈言必行

Unity 三周年连更

一文读懂Redis哨兵

京茶吉鹿

数据库 nosql redis哨兵

深度学习基础入门篇[七]:常用归一化算法、层次归一化算法、归一化和标准化区别于联系、应用案例场景分析。

汀丶人工智能

人工智能 机器学习 深度学习 归一化算法

如何真正“不花一分钱”部署一个属于你的大模型

Zhendong

人工智能 PyTorch ChatGPT

「Go框架」深入理解gin框中Context的Request和Writer对象

Go学堂

golang 开源 程序员 个人提升

京东小程序接入ARVR的技术方案和性能调优 | 京东云技术团队

京东科技开发者

小程序 人脸识别 京东云 企业号 4 月 PK 榜 ARVR

Node工程的依赖包管理方式 | 京东云技术团队

京东科技开发者

JavaScript node.js 前端 京东云 企业号 4 月 PK 榜

HTTP协议中Via的用法

阿泽🧸

三周年连更 via

.gitignore 详解

程序员海军

三周年连更

跨平台应用开发进阶(五十四):Android APP调试工具:ADB

No Silver Bullet

android adb 跨平台应用开发 三周年连更 APP调试工具

IPv6协议转换技术

穿过生命散发芬芳

ipv6 三周年连更

100个Python实战项目(十三)使用 Tkinter GUI 库构建闹钟应用程序

海拥(haiyong.site)

三周年连更

ArkCompiler开发

坚果

OpenHarmony 三周年连更

如何在 Java 8 中使用 Streams?结合多种案例剖析学习!

Java架构历程

三周年连更

申请chatGPT账号

石云升

AI ChatGPT 三周年连更

玩转Redis|学会这10点让你分分钟拿下Redis,满足你的一切疑问

浅羽技术

Java 数据库 redis 缓存 三周年连更

Mysql主从复制

乌龟哥哥

三周年连更

《皮囊》

后台技术汇

三周年连更

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