第1章 什么是深度学习

1.1 人工智能、机器学习与深度学习

1.1.1 人工智能
  • 人工智能诞生于20世纪50年代,当时计算机科学这一新兴领域的少数先驱开始醍醐疑问:计算机是否能够“思考”?人工智能的简洁定义如下:努力将通常由人类完成的智力任务自动化。人工智能是一个综合性的领域,不仅包括机器学习与深度学习,还包括更多不涉及学习的方法。例如,早期的国际象棋程序仅报刊程序员精心编写的硬编码规则,并不属于机器学习。在相当长的时间内,许多专家相信,只要程序员精心编写足够多的明确规则来处理知识,就可以实现与人类水平相当的人工智能。这一方法被称为符号主义人工智能(symbolic AI),从20世纪50年代到80年代末是人工智能的主流范式。在20世纪80年代的专家系统(expert system)热潮中,这一方法的热度达到了顶峰。
  • 虽然符号主义人工智能适合用来解决定义明确的逻辑问题,比如下国际象棋,但它难以给出明确的规则来解决更加复杂、模糊的问题,比如图像分类、语音识别和语音翻译。于是出现了一种新的方法来替代符号主义人工智能,这就是机器学习(machine learning)。
1.1.2 机器学习
  • 人工智能先驱阿兰·图灵在1950年发表了具有里程碑意义的论文“计算机器和智能”。图灵在这篇论文中介绍了图灵测试以及日后人工智能所包含的重要概念。
  • 机器学习的概念来自于图灵的问题(通用计算机是否能够学习与创新?):对于计算机而言,除了“我们命令它做的任何事情”之外,它能否自我学习执行特定任务的方法?计算机能否让我们大吃一惊?如果没有程序员精心编写的数据处理规则,计算机能否通过观察数据自动学会这些规则?
  • 图灵的这个问题引出了一种新的编程范式。在经典的程序设计(即符号主义人工智能的范式)中,人们输入的是规则(即程序)和需要根据这些规则进行处理的数据,系统输出的是答案。利用机器学习,人们输入的是数据和从这些数据中预期得到的答案,系统输出的是规则。这些规则随后可应用于新的数据,并使计算机自主生成答案。
  • 规则+数据 ->经典的程序设计->答案。
  • 数据+答案->机器学习->规则。
  • 机器学习系统是训练出来的,而不是明确地用程序编写出来的。将与某个任务相关的许多示例输入机器学习系统,它会在这些示例中找到统计结构,从而最终找到规则将任务自动化。
  • 虽然机器学习在20世纪90年代才开始蓬勃发展,但它迅速成为人工智能最受欢迎且最成功的的分支领域。这一发展的驱动力来自于速度更快的硬件与更大的数据集。机器学习与数理统计密切相关,但二者在几个重要方面有所不同。不同于统计学,机器学习经常用于处理复杂的大型数据集(比如包含数百万张图像,每张图像又包含数万个像素),用经典的统计分析(比如贝叶斯分析)来处理这种数据集是不切实际的。因此,机器学习(尤其是深度学习)呈现出相对较少的数学理论(可能太少了),并且是以工程为导向的。这是一门需要上手实践的学科,想法更多地是靠实践来证明,而不是靠理论推导。
1.1.3 从数据中学习表示
  • 给定包含预期结果的示例,机器学习将会发现执行这一项数据处理任务的规则。机器学习三个要素:输入数据点、预期输出的示例、以及衡量算法效果好坏的方法。
  • 衡量算法效果好坏的方法是为了计算算法的当前输出与预期输出的差距。衡量结果是一种反馈信号,用于调节算法的工作方式。这个调节步骤就是我们所说的学习。
  • 机器学习模型将输入数据变换为有意义的输出,这是一个从已知的输入和输出示例中进行“学习”的过程。因此,机器学习和深度学习的核心问题在于有意义地变换数据,换句话说,在于学习输入数据的有用表示(representation)-这种表示可以让数据更接近预期输出。
  • 表示这一概念的核心在于以一种不同的方式来查看数据(即表征数据或将数据编码)。例如彩色图像可以编码为RGB(红-绿-蓝)格式或HSV(色相-饱和度-明度)格式,这是对相同数据的两种不同表示。在处理某些任务时,使用某种表示可能会很困难,但换用另一种表示就会变得很简单。机器学习模型都是为输入数据寻找合适的表示-对数据进行变换,使其更适合手头的任务(比如分类任务)。
  • 如果我们尝试系统性地搜索各种可能的坐标变换,并用正确分类的点所占百分比作为反馈型号,那么我们做的就是机器学习。机器学习中的学习指的是,寻找更好数据表示的自动搜索过程。
  • 所有机器学习算法都包括自动寻找这样一种变换:这种变换可以根据任务将数据转化为更加有用的表示。这些操作可能是前面提到的坐标变换,也可能是线性投影(可能会破坏信息)、平移、非线性操作。机器学习算法在寻找这些变换时通常没有什么创造性,而仅仅是遍历一组预先定义好的操作,这组操作叫作假设空间(hypothesis space)。
  • 在预先定义好的可能性空间中,利用反馈信号的指引来寻找输入数据的有用表示。这个简单的想法可以解决相当多的智能任务,从语音识别到自动驾驶都能解决。
1.1.4 深度学习之深度
  • 深度学习是机器学习的一个分支领域:它是从数据中学习表示的一种新方法,强调从连续的层(layer)中进行学习,这些层对应于越来越有意义的表示。“深度学习”中的“深度”指的并不是利用这种方法所获取的更深层次的理解,而是指一系列连续的表示层。数据模型中包含多少层,这被称为模型的深度(depth)。这一领域的其他名称包括分层表示学习(layered representations learning)和层级表示学习(hierarchical representations learning)。现代深度学习通常包含数十个甚至上百个连续的表示层,这些表示层全都是从训练数据中自动学习的。与此相反,其他机器学习方法的重点往往是仅仅学习一两层的数据表示,因此有时也被称为浅层学习(shallow learing)。
  • 在深度学习中,这些分层表示几乎总是通过叫作神经网络(neural network)的模型来学习得到。神经网络的结构是逐层堆叠。神经网络这一术语来自于神经生物学,然而,虽然深度学习的一些核心概念是从人们对大脑的理解中汲取部分灵感而形成的,但深度学习模型不是大脑模型。没有证据表明大脑的学习机制与现代深度学习模型所使用的相同。你可能会读到一些流行科学的文章,宣称深度学习的工作原理与大脑相似或者是根据大脑的工作原理进行建模的,但事实并非如此。对于这一领域的新人来说,如果认为深度学习与神经生物学存在任何关系,那将使人困惑,只会起到反作用。你无须那种“就像我们的头脑一样”的神秘包中,最好也忘掉度过的深度学习与生物学之间的假想联系。就我们的目的而言,深度学习是从数据中心学习表示的一种数学框架。
  • 这个网络将数字图像转换成与原始图像差别越来越大的表示,而其中关于最终结果的信息却越来越丰富。你可以将深度网络看作多级信息蒸馏操作:信息穿过连续的过滤器,其纯度越来越高(即对任务的帮助越来越大)。
  • 这就是深度学习的技术定义:学习数据表示的多级方法。这个想法很简单,但事实证明,非常简单的机制如果具有足够大的规模,将会产生魔法般的效果。
1.1.5 用三张图理解深度学习的工作原理
  • 机器学习是将输入(比如图像)映射到目标(比如标签“猫”),这一过程是通过观察许多输入和目标的示例来完成的。深度神经网络通过一系列简单的数学变换(层)来实现这种输入到目标的映射,而这些数据变换都是通过观察示例学习得到。
  • 神经网络中每层对输入数据所做的具体操作保存在该层的权重(weight)中,其本质是一串数字。用术语来说,每层实现的变换由其权重来参数化(parameterize)。权重有时也被称为该层的参数(parameter)。在这种语境下,学习的意思是为神经网络的所有层找到一组权重值,使得该网络能够将每个示例输入与其目标正确地一一对应。但重点来了:一个深度神经网络可能包含数千万个参数。找到所有参数的正确取值可能是一项非常艰巨的任务,特别是考虑到修改某个参数值将会影响到其他所有参数的行为。
  • 想要控制一件事物,首先需要能够观察它。想要控制神经网络的输出,就需要能够衡量该输出与预期值之间的距离。这是神经网络损失函数(loss function)的任务,该函数也叫目标函数(objective function)。损失函数的输入是网络预测值与真实目标值(即你希望网络输出的结果),然后计算一个距离值,衡量该网络在这个示例上的效果好坏。
  • 深度学习的基本技巧是利用这个距离值作为反馈信号来对权重值进行微调,以降低当前示例对应的损失值。这种调节由优化器(optimizer)来完成,它实现了所谓的反向传播(backpropagation)算法,这是深度学习的核心算法。
  • 一开始对神经网络的权重随机赋值,因此网络只是实现了一系列随机变换。其输出结果自然也和理想值相去甚远,相应地,损失值也很高。但随着网络处理的示例越来越多,权重值也在向正确的方向逐步微调,损失值也逐渐降低。这就是训练循环(training loop),将这种循环重复足够多的次数(通常对数千个示例进行数十次迭代),得到的权重值可以使损失函数最小。具有最小损失的网络,其输出值与目标值尽可能地接近,这就是训练好的网络。再次强调,这是一个简单的机制,一旦具有足够大的规模,将会产生魔法般的效果。
1.1.6 深度学习已经取得的进展
  • 虽然深度学习是机器学习一个相当有年头的分支领域,但在21世纪前十年才崛起。在随后的几年里,它在实践中取得了革命性进展,在视觉和听觉等感知问题上取得了令人瞩目的成果,而这些问题所涉及的技术,在人类看来是非常自然、非常直观的,但长期以来却一直是机器难以解决的。
  • 接近人类水平的图像分类、接近人类水平的语音识别、接近人类水平的手写文字转录、更好的机器翻译、更好的文本到语音转换、数字助理,比如谷歌即时(Google Now)和亚马逊Alexa、接近人类水平的自动驾驶、更好的广告定向投放,Google,百度,必应都在使用、更好的网络搜索结果、能够回答用自然语言提出的问题、在围棋上战胜人类。
  • 我们仍然在探索深度学习能力的边界。我们已经开始将其应用于机器感知和自然语言理解之外的各种问题,比如形式推理。如果能够成功的话,这可能预示着深度学习将能够协助人类进行科学研究、软件开发等活动。
1.1.7 不要相信短期炒作
  • 虽然深度学习近年来取得了令人瞩目的成就,但人们对这一领域在未来十年间能够取得的成就似乎期望过高。虽然一些改变世界的应用(比如自动驾驶汽车)已经触手可及,但更多的应用可能在长时间内仍然难以实现,比如可信的对话系统、达到人类水平的跨任意语言的机器翻译、达到人类水平的自然语言理解。我们尤其不应该把达到人类水平的通用只能(human-level general intellience)的讨论太当回事。在短期内期望过高的风险是,一旦技术上没有实现,那么研究投资将会停止,而这会导致在很长一段时间内进展缓慢。
1.1.8 人工智能的未来
  • 过去五年里,人工智能研究一直在以惊人的速度发展,这在很大程度上是由于人工智能短短的历史中前所未见的资金投入,但到目前为止,这些进展却很少能够转化为改变世界的产品和流程。深度学习的大多数研究成果尚未得到应用,至少尚未应用到它在各行各业中能够解决的所有问题上。与过去相比,这些技术已大不相同,但这些工具仍然只是日常生活的陪衬。人工智能仍需进一步转变为我们工作、思考和生活的核心。
  • 人工智能即将到来。在不远的未来,人工智能将会成为你的助手,甚至成为你的朋友。它会回答你的问题,帮助你教育孩子,并关注你的健康。它还会将生活用品送到你家门口,并开车将你从A地送到B地。它还会是你与日益复杂的、信息密集的世界之间的接口。更为重要的是,人工智能将会帮助科学家在所有科学领域(从基因学到数学)取得突破性进展,从而帮助人类整体向前发展。
  • 在这个过程中,我们可能会经历一些挫折,也可能会遇到新的人工智能冬天,正如互联网行业那样,在1998-1999年被过度炒作,进而在21世纪初遭遇破产,并导致投资停止。但我们最终会实现上述目标。人工智能最终将应用到我们社会和日常生活的几乎所有方面,正如今天的互联网一样。
  • 不要相信短期的炒作,但一定要相信长期的愿景。人工智能可能需要一段时间才能充分发挥其潜力。这一潜力的范围大到难以想象,但人工智能终将到来,它将以一种奇妙的方式改变我们的世界。

参考资料

《Python深度学习》[美] 弗朗索瓦·肖莱(著)、张亮(译)

Python深度学习(什么是深度学习)----学习笔记(一)相关推荐

  1. 手把手教你深度学习强大算法进行序列学习(附Python代码)

    作者:NSS 翻译:陈之炎 校对:丁楠雅 本文共3200字,建议阅读10分钟. 本文将教你使用做紧致预测树的算法来进行序列学习. 概述 序列学习是近年来深度学习的热点之一.从推荐系统到语音识别再到自然 ...

  2. Python之GUI:基于Python的GUI界面设计的一套AI课程学习(机器学习、深度学习、大数据、云计算等)推荐系统(包括语音生成、识别等前沿黑科技)

    Python之GUI:基于Python的GUI界面设计的一套AI课程学习(机器学习.深度学习.大数据.云计算等)推荐系统(包括语音生成.识别等前沿黑科技) 导读 基于Python的GUI界面设计的一套 ...

  3. 3天,我用Python手撕了一个深度学习框架!

    人工智能如何学习?要看哪些书? 经常听到有粉丝问到这类的问题,其实,要想学习人工智能,你需要先搞懂什么是人工智能. 01  人工智能概念的提出 人工智能(Artificial Intelligence ...

  4. python中如何移动图形工作站_六招教你用Python分分钟构建好玩的深度学习应用

    原标题:六招教你用Python分分钟构建好玩的深度学习应用 导读]深度学习是近来数据科学中研究和讨论最多的话题.得益于深度学习的发展,数据科学在近期得到了重大突破,深度学习也因此得到了很多关注.据预测 ...

  5. 从数据结构到Python实现:如何使用深度学习分析医学影像

    运用深度学习技术进行图像和视频分析,并将它们用于自动驾驶汽车.无人机等多种应用场景中已成为研究前沿.近期诸如<A Neural Algorithm of Artistic Style>等论 ...

  6. 使用RTX3080显卡搭建基于Pycharm+Python+Cuda+cuDNN+TensorFlow的深度学习开发环境

    本文链接:https://blog.csdn.net/tjhyx2012/article/details/112955582 作为一名新手,也是出于兴趣,我通过查找有关资料,使用RTX3080显卡搭建 ...

  7. Python数据分析:双色球的深度学习预测

    双色球是福利彩票的一种玩法,已经卖了有很多年.之前在支付宝上app可以买的,每天2块钱很有益身心健康,比LOL有积极意义.对于双色球这门游戏,刚开始买的时候是纯粹靠感觉,后来百度又看到了百度预测(虽然 ...

  8. python模型训练框架_深度学习三大框架(对比)

    人工智能的浪潮正席卷全球,诸多词汇时刻萦绕在我们的耳边,如人工智能,机器学习,深度学习等."人工智能"的概念早在1956年就被提出,顾名思义用计算机来构造复杂的,拥有与人类智慧同样 ...

  9. 深度学习 免费课程_深入学习深度学习,提供15项免费在线课程

    深度学习 免费课程 by David Venturi 大卫·文图里(David Venturi) 深入学习深度学习,提供15项免费在线课程 (Dive into Deep Learning with ...

  10. 深度学习——02、深度学习入门 1-7

    01深度学习与人工智能简介 什么是人工智能? 观察周围的世界,把看到的事物加以理解,最后通过理解进行一系列的决策. 感知+理解+决策. 学习的能力,是智能的本质! 大数据时代 大数据时代造就了人工智能 ...

最新文章

  1. 基于PyTorch,如何构建一个简单的神经网络
  2. boost::python::detail::if_相关的测试程序
  3. 李浩:无限节点的CDN架构演进
  4. php正则表达式程序,php正则表达式 Web程序 - 贪吃蛇学院-专业IT技术平台
  5. linux资源隔离是哪些,【转载】Linux cgroup资源隔离各个击破之
  6. 使用C语言编程求解: 1 - 1/2 + 1/3 - 1/4 + 1/5 - ... + 1/99 - 1/100 的值。
  7. 响应式布局rem的使用
  8. 进程调度算法的模拟实现
  9. 虚拟服务器 切换任务管理器,在远程桌面连接中使用任务管理器(转)
  10. matlab 高精度无理数,如何从MatLab上的无理数生成近似分数?
  11. Mysql添加报错 MySqlException: Incorrect string value: ‘\xE5\xAF\xBC\xE5\x85\xA5...‘ for
  12. python not in函数用法,pandas is in和not in的使用说明
  13. 大衣哥在《火火的情怀》后,和孟文豪张成军推出《新时代的农民》
  14. Percolator事务模型
  15. 定制嵌入式主板需要考虑的功能
  16. go : gin + lumberjack 输出日志文件
  17. JAVA毕业设计果蔬在线销售系统计算机源码+lw文档+系统+调试部署+数据库
  18. #SORA#flask-RESTful的一些坑
  19. 对于新手来说怎么动漫人物手伸出去的动作?该怎么画?
  20. codeblocks如何去掉后面的dos窗口

热门文章

  1. R Programming: Part 3 - Code Correctly and Efficiently
  2. bash手册 之重定向原理与实现
  3. win7下u盘安装ubuntu组成双系统
  4. [百万级]通用分页存储过程.[千万级]实现千万级数据的分页显示!
  5. 转 C#正则表达式小结 匹配
  6. 讨一个上海中上条件的老婆的成本 (zz)
  7. 【C语言】08-数组
  8. 基于TensorFlow实现自定义层的项目代码
  9. uniapp ios时间戳获取不到_个人小程序uniapp实战开发(三):数据库设计与文章列表...
  10. Python科学计算——Numpy.genfromtxt