1.3人工智能与深度学习
机器学习是人工智能第三波浪潮中碰撞出来的火花,作为一种数据挖掘方法,它既实用又强大;然而,即便采用了这种新的机器学习方法,要实现真正的人工智能似乎依旧遥遥无期。因为定义特征一直需要人为干预,这是阻挡机器学习实现人工智能的一面高墙。看起来第三次人工智能的浪潮也会无疾而终。然而,出人意料的是,这波浪潮并未消退,反而出现了另一波新的浪潮。触发这波新浪潮的就是深度学习。
随着深度学习的出现,至少在图像识别和语音识别领域,机器学习已经可以凭借自身的能力从输入数据中判断“哪些是特征值”,不再需要人工的干预。之前只能照本宣科地处理符号的机器现在也能够获得概念了。

人工智能浪潮及人工智能研究领域之间的对应关系图

从深度学习首次出现到现在已经历了漫长的时间,时间回到2006年,加拿大多伦多大学(Toronto University)的欣顿(Hinton)教授及同事们一起发表了关于深度学习的第一篇论文(https://wwwcstorontoedu/~hinton/absps/fastncpdf)。在这篇论文中,欣顿教授提出了一种名为深度置信网络(Deep Belief Net, DBN)的方法,它是对传统机器学习方法——神经网络的一种扩展。深度置信网络使用MNIST数据库进行测试,这是一种对图像识别方法精度和准确度进行比较的标准数据库。这个数据库中包含了70 000个28×28像素的手写字符图像数据,这些图像都是从0到9的数字(其中60 000个训练样本集,10 000个测试样本集)。
接着,他们构造了一个基于训练数据的预测模型,依据机器能否正确识别测试用例中书写的数字0到9来测量它的预测精度。虽然这篇论文显示,它的预测精度要远超传统的方法,然而当时它并未引起大家的注意,也许这是由于它对比的对象是机器学习中比较通用的方法。
这之后不久的2012年,整个人工智能研究领域都被一个方法震撼了。这一年的图像识别竞赛“Imagenet大规模视觉识别挑战赛(Imagnet Large Scale Visual Recognition Challenge, ILSVRC)”上,一种使用深度学习名为“超级视觉(SuperVision)”(严格地说,这只是他们的队名)的方法赢得了比赛,该方法是由欣顿教授和多伦多大学的同事一起合作开发的。它将其他的竞争者们远远地甩在了后面,准确率也相当惊人。这场竞赛中,机器会接受相应的任务去自动地判别图像中的信息,它是一只猫、一只狗、一只鸟,抑或是一条船等,诸如此类。训练数据集是10 000 000张图片,测试数据是150 000张图片。这项比赛中,每一个方法都在竞争最低的出错率(即最高的准确率)。
让我们看看下面这张表,它显示了此次竞赛的结果:

排名团队名错误率

1SuperVision015315
2SuperVision016422
3ISI026172
4ISI026602
5ISI026646
6ISI026952
7OXFORD_VGG026979
8XRCE/INRIA027058

你可以看到SuperVision队与第二名ISI队之间在出错率上的差异超过10%。第二名之后其后各队之间的差异都在01%以内。现在你知道SuperVision在准确率上是如何碾压其他队的了吧。更让人瞠目结舌的是,这是SuperVision队首次参加ILSVRC竞赛,换句话说,他们并非图像识别的专家。SuperVision(深度学习)出现之前,图像识别领域的普适方法是机器学习。并且,正如我们前面所介绍的,机器学习使用的特征值需要由人工进行设置或者设计。他们需要依据人类的直觉和经验挨个尝试设计特征,一遍又一遍地调整参数,才有可能在最终取得01%的准确率提升。深度学习出现之前,研究的热点和竞争都集中在谁能够发明更加高效的特征工程。因此,当深度学习突然横空出世,所有的研究人员都大吃一惊。
另一个重要事件将深度学习的浪潮推广到了全世界。这一事件也发生在2012年,与SuperVision在ILSVRC震惊世界的时间是同一年,那一年谷歌宣布使用自己的深度学习算法,采用YouTube视频作为学习数据,机器可以自动识别出视频中的猫。关于这个算法的细节可以通过http://googleblogblogspotcom/2012/06/usinglargescalebrainsimulationsforhtml了解。这个算法从YouTube的视频中提取了1000万个图像,使用这些图像作为输入数据。回想一下我们之前所说的,传统机器学习中人扮演着重要的角色,需要人为处理数据,从图像中提取出特征值。而使用深度学习的话,原始图像可以直接作为输入数据。这表明机器自身已经可以自动地从训练数据集中提取特征。上述的这个研究里,机器就学习了猫的概念(虽然只有猫的故事比较有名,实际的研究工作也针对人类的图像进行了处理,效果也很好。机器已经知道了什么是人类!)下面的这幅图片,介绍了研究中经由YouTube未打标签的视频训练后深度学习认为猫所具有的特征:

这两个重大事件深深地震撼了我们,引发了现在依旧蓬勃发展的深度学习浪潮。
谷歌推出能够识别猫的方法之后,又拓展构造了另一个实验,这个实验使一个机器试图利用深度学习进行绘画。这一方法被称作构梦派(Inceptionism,http://googleresearchblogspotch/2015/06/inceptionismgoingdeeperintoneuralhtml)
该文中描述,构梦派的网络是按如下方式学习的:
“识别出的对象,会越来越多”。即形成反馈环路:如果云看起来有一点点像鸟,网络识别则会使其更像鸟;进而,网络在下一层及后面层中对鸟识别得更明确,直到一个清晰鸟形象出现,而且看似无处不在。
机器学习中使用神经网络通常是为了检测模式,从而对图像进行识别,而“构梦派”的玩法却是反其道而行之。正如你从下面这些“构梦派”的例子中所感受到的,这些绘图看起来有些诡异,就像是梦魇的世界:

抑或,它们可以被看成是艺术品。这个可以让任何人尝试“构梦派”的工具现在已经在GitHub上开源,它的名字是Deep Dream(https://githubcom/google/deepdream)。实现的例子也可以在该页面找到。如果你知道如何编写Python程序,就可以试着把玩下这些例子。
好吧,似乎没有什么可以阻挡深度学习站上史无前例的高峰,不过我们还是有不少疑问,譬如,到底深度学习有哪些创新?哪些具体的方法极大地提升了它的预测精度?令人意外的是,实际上深度学习在算法上并没有太多的区别。正如我们在前面所提到的,深度学习是对神经网络的应用,而神经网络是一种机器学习算法,它模拟了人类大脑的结构。不管怎样,机器采用了它并因此改变了一切。这其中的代表是预训练(Pretraining)和带激活功能的弃联(Dropout)。这些也是实现的关键字,因此请记住它们。
首先,深度学习中的“深度”到底代表什么意思呢?你可能已经知道,人类的大脑是一种电路结构,这种结构相当复杂。它是由复杂电路多层堆叠而成。而另一方面,当神经网络算法首次出现时,它的结构非常简单。它近乎是一种人脑结构的简化版本,其网络也仅有很少几层。因此,它能识别的模式少得可怜。所以,几乎每个人都会猜想“如果我们像人脑那样将网络聚集在一起,让它的实现更加复杂,能不能取得更好的效果呢?”当然,这个方法我们也尝试过,然而,不幸的是,结果并不理想,这种方式的预测精度比将网络堆叠起来效果还差一些。事实上,我们碰到了各种在简单网络中不曾遭遇的问题。为什么会这样呢?人脑中依据你看到的东西,信号会进入到电路的不同部分。不同部分的电路受到刺激就会触发不同的模式,所以你能区分不同的事物。
为了复制这一机制,神经网络算法使用权重连接代替了之前网络之间的连接。这是一个重要的改进,不过很快就出了问题。如果网络比较简单,权重可以依据学习数据进行恰当的分配,网络可以很好地识别和区分这些模式。然而,一旦网络变得复杂,连接变得过于密集,这时就很难依靠权重进行区分了。简而言之,算法将无法恰当地划分模式。另外,神经网络中,网络在进行全网训练时,通过反馈错误机制可以构建一定的模型。同样,如果网络简单,反馈可以及时地得到反应,然而,如果网络有多层结构,这样的环境中发生问题,而错误在它被反馈到全网之前消失了——想象一下那个错误扩散开并稀释会带来怎样的影响。
如果网络使用复杂结构搭建,情况是不是会好些呢?遗憾的是,这样的尝试最终也以失败告终。算法自身的概念是好的,不过,以世界理解来看,它从任何的标准而言都不能被称为一个完美的算法。虽然深度学习成功地将网络多层化,即将网络变得“深”了,它成功的关键其实是每一层都参与到分阶段的学习中来。而之前的算法将整个多层网络作为一个巨大的神经网络,在这个单一的网络中进行学习,这最终导致了前面提到的问题。
因此,深度学习采用了让各层预先学习的方式。这就是著名的“预训练”。预训练中,学习从浅层顺次开始。之后,浅层学习得出的数据会作为下一层的输入数据。机器按照此方式,由浅层的初级特征逐步学习到深层的高级特征。譬如,学习什么是猫时,第一层是一个 轮廓、接下来的一层是眼睛和鼻子的形状、下一层是脸的图片、再接下来一层是脸的细节,以此类推。类似地,人类几乎也是采用同样的步骤进行学习,首先获取一个全局的印象,之后再深入到细节特征。因为每一层都在分阶段地学习,学习的错误反馈也可以在每一层上得到恰当的处理。这种设计改善了预测的精度。还有一种改进,每一层的学习都使用不同的方法,不过我们现在暂时不讨论,后面的内容会进行介绍。
我们之前描述过网络连接过于稠密的问题。避免这种密集问题的方法称之为dropout。使用dropout的网络通过随机断开神经单元之间连接的方式进行学习。dropout从物理上使得网络变得更加稀疏。哪些网络会被切断是随机决定的,因此每个学习步骤都会重新形成一个新的网络。如果只是看看,你可能会质疑这种方法能否工作,但是它的确改进了预测精度,最终的结果是增强了网络的鲁棒性。人脑的电路也会依据它看到的主题在不同的部分进行处理或回应。dropout似乎成功地模拟了这套机制。将dropout机制嵌入算法之后,网络权重的调整变得很有效了。
深度学习在不同的领域已经有很多成功的案例;然而,它也有其局限性。正如“深度学习”这个名字所体现的,这种方法的学习是非常“深”的。这意味着完成学习步骤要花费漫长的时间。这个过程中消耗的计算量也异常庞大的。实际上,前面我们提到谷歌对猫的识别学习就耗时三天,动用了一千多台计算机。反过来,虽然深度学习的想法本身使用之前的技术也能达成,却是很难实现的。如果你不能比较便利地使用具备了大规模处理能力和海量数据的机器,这一方法就不会实现。
正如我们不断重复提起的,深度学习仅仅是机器获取“类人(HumanLike)”知识的第一步。没人知道未来会出现什么样的创新。不过,我们可以预测计算机的处理能力在将来能达到怎样的程度。为了进行预测,我们使用了摩尔定律。支撑计算机处理的集成芯片的性能是由其上搭载的晶体管数目决定的。摩尔定律显示,集成电路上的晶体管数量大约每隔一年半的时间就会增加一倍。实际上,计算机中央处理器中的晶体管数量迄今一直遵循摩尔定律增长。我们可以做一个对比,与世界上第一台微处理器,即英特尔公司的4004处理器,它当时有1×103(1000)个晶体管,最近的2015版,即英特尔公司的第五代酷睿处理器拥有1×109(10亿)个晶体管,如果技术保持这样的进步速度,集成电路上晶体管的数量不久将会超过100亿,这比人类大脑中细胞的数目还要多。
依据摩尔定律,在未来的2045年或者更晚的时候,我们会到达“技术奇点”,那时人类将有能力对技术进行预测。彼时,机器很可能就已经具有自我递归的智能了。换句话说,在未来的三十年里,人工智能会逐渐成熟。那个时候的世界会变成怎样呢……

摩尔定律的历史

英特尔公司研发的处理器搭载的晶体管数目一直遵循摩尔定律稳定增长着。
闻名世界的学者斯蒂芬·霍金教授接受BBC的一次访谈(http://wwwbbccom/news/technology30290540)时说:
“全面人工智能的发展将宣告人类的终结!”
深度学习会成为“黑魔法”吗?事实上,技术的发展有时的确带来了灾难。实现人工智能的路依旧漫长,然而,我们在进行深度学习的工作时要保持警惕。

《深度学习:Java语言实现》一一1.3人工智能与深度学习相关推荐

  1. java语言就业方向_四大就业方向彻底解决你学习Java语言编程的后顾之忧-生活感悟与随笔 -亦是美网络...

    前面的文章中已经给大家介绍了关于Java编程语言的优势.特点以及就业前景等内容,大家之所以这么热衷于Java编程学习,不仅是因为Java是编程市场上最为广泛流行的语言,大家更关心的是学习了Java编程 ...

  2. 翁恺《零基础学习Java语言》作业答案 第1周到第7周

    翁恺<零基础学习Java语言>作业答案 第1周到第7周全部 文章目录 前言 一.第1周 计算 1.温度转换 二.第2周 判断 1.时间换算 2.信号报告 二.第3周 循环 1.奇偶个数 2 ...

  3. Java学习-Java语言基础

    Java学习-Java语言基础 1.Java符号集  1.1Java标识符  1.2关键字  1.3分割符和注释 2.java 数据类型  2.1整型   2.1.1整型常量   2.1.2整型变量 ...

  4. 游戏教玩家学java,技术|帮你学习Java语言的游戏

    有人说,最好的学习方法就是游戏.来自旧金山加州大学的研发团队日前开发了一款编程游戏--在游戏的同时教会玩家如何使用 Java 语言.这款名为 CodeSpells 的游戏是由计算机学家 William ...

  5. Java学习——java语言概述

    一. 基础常识 编程的本质=数据结构+算法 数据结构:数据结构是计算机存储.组织数据的方式 算法:算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算 法代表着用系 ...

  6. Java 基础学习-Java语言概述

    Java 基础学习 第一章 Java语言概述 回顾java基础知识,进行整理记录. 文章目录 Java 基础学习 前言 一. Java语言发展史(了解) 二.Java语言跨平台原理(理解) 三.JRE ...

  7. 学习 Java 语言,你需要知道的 Java 简史

    阅读本文你将收获: 为什么要学习 Java Java 这门语言如今是互联网行业炙手可热的编程语言,像阿里.美团这些大厂,技术体系都是建立在 Java 之上.这些大厂又是很多新兴互联网企业的技术风向标, ...

  8. java基础知识点_零基础学习Java语言,各个阶段需要掌握的知识点

    随社会的脚步的不断发展,Java技术在不断的与时俱进,这也是Java一直长盛不衰的原因之一.Java技术的学习,永远没有早晚之分,技不压身,对于21世纪的我们80后,90后,甚至00后,尤其适用! 那 ...

  9. 如何学习C语言,超详细的经验分享(学习笔记1--C语言的基本数据类型)

    前言: 如果你正在学习C语言而又不知道从何处开始学,你可以跟着我一起学习C语言,在寒假期间我每天都会发一篇博客,里面有各种C语言的知识点,如果你想学习下去,想进步,就来每天跟着我一起打卡吧,期待我们能 ...

最新文章

  1. centos使用镜像源轻松配置golang+vscode的方法
  2. BZOJ 3218(a + b Problem-二分图套值域线段树)
  3. 《Python Cookbook(第3版)中文版》——1.9 在两个字典中寻找相同点
  4. Linux移植随笔:终于解决Tslib的问题了【转】
  5. 下载 Bootstrap3 的 Sass 版本
  6. Python编程一定要注意的那些“坑”(四)
  7. javascript判断文件是否存在
  8. 网站地图生成器_10个相见恨晚的PPT网站 让你看一眼就心动
  9. HDFS 读/写数据流程
  10. 小学教育专业有计算机课程吗,小学计算机课程教学工作总结
  11. J2ME BUG 收集
  12. 1880-2010年间全美婴儿姓名
  13. 0基础快速入门CSS技术栈(1)—图解详细阐述初识CSS(附详细案例源码解析过程)
  14. Revit二次开发——常规模型标记随构件旋转
  15. 用lingo解决钢管下料问题
  16. 三原色是红黄蓝对吗_三原色是红黄蓝吗??
  17. 微信支付之JSAPI支付
  18. seo优化:如何写伪原创文章
  19. 比尔-盖茨预言:未来家家都有机器人
  20. Enounce MySpeed 变速播放网页视频

热门文章

  1. STM32示波器 信号发生器
  2. 使用MVC框架中要注意的问题(二):将Model和Controller单独用一个项目设计
  3. 蓝桥杯第八届省赛JAVA真题----最大公共子串
  4. 动态规划在求解全源最短路径中的应用(JAVA)--Floyd算法
  5. nginx+tomcat7+memcached
  6. HBae找不到协处理器导致RegionServer全部挂掉
  7. 西北农林科技大学计算机老师 癌症,西北农林科大攻克苹果树“癌症”
  8. mysql交叉连接后生成的记录总数_4.mysql数据库创建,表创建模等模板脚本,mysql_SQL99标准的连接查询(内连接,外连接,满外连接,交叉连接)_MySQL...
  9. python redis订阅_Python 学习笔记 - Redis
  10. css书写规范、行高