深度学习指的是用一种特定的方法来解决一些机器学习的问题。
这种方法的中心思想是:基于一系列的离散的层(layer) 构建机器学习算法。如果将这些层 垂直堆叠,就说这个结果是有深度 (depth)的,或者说算法是有深度的 。
构建深度网络的方法有很多种。在构建网络时, 我们可以选择很多不同类型的层。在本书后 续章节中,我们会用几个完整的章节来讨论不同类型的深度网络。
图 1.21 展示了一个简单的示例,这个网络有两层,每一层都用方框显示出来,在每一层中, 都有一些称为人工神经元(artificial neuron )或感知器的计算块(见第 10 章)。这些人工神经元的 基本操作是读取一串数字, 以特定的方式将这些数字加以组合, 然后再输出一个新的数字,并将 输出传递到下一层。
这个示例只包含两个层,但神经网络是可以有几十层甚至更多的层的。同时, 每一层也不是 只有 2~3 个神经元,它可以包含成百上千个神经元,并以不同的方式排列。
深度学习架构的吸引力在于, 我们可以通过调用深度学习库中的例程来构建完整的网络, 这 些例程将负责所有的构建工作。正如我们将在第 23 章和第 24 章中看到的那样,通常只需要短短 的一行代码就可以实例化一个新的层, 之后使它成为网络的一部分。深度学习库将为我们处理内 部和外部的所有细节。
由于这种结构模式搭建方便,许多人将深度学习比作用乐高积木搭建东西。我们只是堆积想 要的层,每个层由一些参数来标定,之后对一些选项进行命名,就可以开始训练了。
图 1.21 一个两层的深度网络。每一层都用方框表示,方框里的是人工神经元,每一层的输出连接到下一层的输入。在本示例中,提供 4 个数字作为输入,而 2 个数字构成输出
当然, 这并不容易, 因为选择正确的层、选择它们的参数以及处理其他的选择都需要小心谨 慎。能够很容易地构建一个网络固然好,但这也意味着我们做的每一个决定都可能会带来很大的 影响。如果做错了,那么网络可能就无法运行。也有可能出现更常见的情况—网络不会学习, 我们给它输入数据,而它会返回给我们无用的结果。
为了减少这种令人沮丧的情况的发生, 在讨论深度学习时, 我们会充分详细地研究关键的算 法和技术,以便能以一种明智的方式做出所有决定。
我们已经在图 1.10 中看到了一个深度学习的例子, 用了一个 16 层的深度网络来对这些照片 进行分类,下面让我们更仔细地看看这个系统返回了什么。
图 1.22 展示了 4 张照片以及深度学习分类器对它们类别的预测,包括它们的相对可信度。系 统非常完美地识别出了蜂鸟,但是对于那个船形的开瓶器不太确定; 又因为它以前从来没有见过 长柄勺或者耳机,所以得到了一个猜测的结果。
图 1.22 4 张照片以及深度学习分类器对它们类别的预测。这个系统没有经过长柄勺或耳机的训练,所以它正在尽最大努力将这些照片与它所知道的东西相匹配
让我们尝试另一个图像分类任务,这次我们将用手写数字 0~9 来训练系统, 然后输入一些 新的图,让系统对其进行分类。这是一个非常著名的数据集,称为 MNIST,我们会在本书中多次 提到它。图 1.23 展示了该系统对一些从未见过的新数字的预测。
图 1.23 一个深度学习分类器对手写数字的分类
这个深度学习分类器做对了所有归类, 就这些数据来说, 现代分类器已经能够实现非常好的 效果,并且能够达到 99%的准确率。10000 张图中,我们构建的小系统也能够正确地分类 9905 张, 即分类结果与人类专家提供的标签只有 95 次不一致。
深度学习系统的一个妙处在于,它们在实现特征工程上表现得很好。回想一下上面的内 容, 这是一项去寻找让我们做出判断的规则的任务。比如, 一个数字是 1 还是 7 , 一张图是 猫还是狗, 或者一个演讲片段中的单词是“coffeeshop”还是“movie”。要为一项复杂的工 作人工制订这样的规则,几乎是一项不可完成的任务,因为我们必须考虑到所有变化和特殊 情况。
但是, 深度学习系统可以隐式地学习如何独立自主地实现特征工程。它探索了大量可能的特 征并对其进行评估, 而后根据评估保留一些特征并丢弃其他特征。它完全是独立地进行这个过程 的, 没有我们的指导。系统的表征力越强(通常可以总结为拥有更多的层, 每层都有更多的人工 神经元),就越能发现好的特征,我们称之为特征学习 。
我们每天都在使用这种类型的深度网络,将其应用于照片中的人脸识别、手机对语音命令的 识别、股票交易、汽车驾驶、医学图像分析以及许许多多的其他任务。
只要系统是由一系列用于计算的某些类型层构成的(这些类型我们将在后面的章节中见到), 它就可以被称为“深度学习”系统。因此,“深度学习”一词更多的是一种搭建机器学习程序的 方法,而不是一种自主学习的技术。
当我们想要解决一些比较庞大的问题时(例如,在一张照片中识别 1000 个不同对象中的某 一个),深度学习网络就会变得很庞大, 涉及数千甚至数百万个参数。这样的系统就需要大量的 数据进行训练,通常也需要更长的时间。图形处理单元(Graphics Processing Unit ,GPU )的普及 对这方面的工作起到了很好的辅助作用。
GPU 是一种特殊的芯片, 它位于中央处理单元 (Central Processing Unit,CPU ) 旁边。CPU 用于执行运行计算机所涉及的大多数任务,如与外围设备和网络的通信、内存管理、文件处理等。 设计 GPU 的初衷是通过接管制作复杂图形(如三维游戏中渲染的场景)时的计算来减轻 CPU 的 负担。训练深度学习系统所涉及的操作恰好与 GPU 执行的任务非常匹配,这也是这些训练操作可以快速执行的原因。此外,GPU 的自身设计允许并行计算, 即可以同时执行多个计算,专为加 速深度学习计算而设计的新芯片也开始出现在市场上。
深度学习理念并不适用于所有机器学习任务,但是恰当地使用它们可以产生非常好的结果。 在许多应用中, 深度学习方法表现得比其他算法优越得多,从标记照片到用直白的语言与我们的 智能手机“交谈”,它正在彻底改变我们可以用计算机来实现的东西。
深度学习书推荐
1、动手学深度学习(PyTorch版)
《动手学深度学习》全新PyTorch版本,李沐和亚马逊科学家阿斯顿·张等大咖作者强强联合之作,机器学习、深度学习领域重磅教程,交互式实战环境,配套资源丰富!
本书是《动手学深度学习》的重磅升级版本,选用经典的PyTorch深度学习框架,旨在向读者交付更为便捷的有关深度学习的交互式学习体验。
本书重新修订《动手学深度学习》的所有内容,并针对技术的发展,新增注意力机制、预训练等内容。本书包含15章,第一部分介绍深度学习的基础知识和预备知识,并由线性模型引出最简单的神经网络——多层感知机;第二部分阐述深度学习计算的关键组件、卷积神经网络、循环神经网络、注意力机制等大多数现代深度学习应用背后的基本工具;第三部分讨论深度学习中常用的优化算法和影响深度学习计算性能的重要因素,并分别列举深度学习在计算机视觉和自然语言处理中的重要应用。
本书同时覆盖深度学习的方法和实践,主要面向在校大学生、技术人员和研究人员。阅读本书需要读者了解基本的Python编程知识及预备知识中描述的线性代数、微分和概率等基础知识。
2、深度学习:从基础到实践(上下册)
本书采用通俗易懂的讲解方式,搭配近千张图例与示例,深入浅出的讲述了深度学习的基本概念与理论知识,不涉及复杂的数学内容,零基础小白也能轻松掌握!
本书从基本概念和理论入手,通过近千张图和简单的例子由浅入深地讲解深度学习的相关知识,且不涉及复杂的数学内容。
本书分为上下两册。上册着重介绍深度学习的基础知识,旨在帮助读者建立扎实的知识储备,主要介绍随机性与基础统计学、训练与测试、过拟合与欠拟合、神经元、学习与推理、数据准备、分类器、集成算法、前馈网络、激活函数、反向传播等内容。下册介绍机器学习的 scikit-learn 库和深度学习的 Keras 库(这两种库均基于 Python 语言),以及卷积神经网络、循环神经网络、自编码器、强化学习、生成对抗网络等内容,还介绍了一些创造性应用,并给出了一些典型的数据集,以帮助读者更好地了解学习。
本书适合想要了解和使用深度学习的人阅读,也可作为深度学习教学培训领域的入门级参考用书。
3、深度学习
深度学习领域奠基性经典畅销书,数据科学家和机器学习从业者必读,长期位居美亚AI和机器学习类图书榜首,图灵奖获奖作品,全彩印刷。
度学习是机器学习的一个分支,它能够使计算机通过层次概念来学习经验和理解世界。因为计算机能够从经验中获取知识,所以不需要人类来形式化地定义计算机需要的所有知识。层次概念允许计算机通过构造简单的概念来学习复杂的概念,而这些分层的图结构将具有很深的层次。本书会介绍深度学习领域的许多主题。
本书囊括了数学及相关概念的背景知识,包括线性代数、概率论、信息论、数值优化以及机器学习中的相关内容。同时,它还介绍了工业界中实践者用到的深度学习技术,包括深度前馈网络、正则化、优化算法、卷积网络、序列建模和实践方法等,并且调研了诸如自然语言处理、语音识别、计算机视觉、在线推荐系统、生物信息学等方面的应用。最后,本书还提供了一些研究方向,涵盖的理论主题包括线性因子模型、自编码器、表示学习、结构化概率模型、蒙特卡罗方法、配分函数、近似推断以及深度生成模型。
4、PyTorch深度学习实战
PyTorch核心开发者教你用PyTorch创建神经网络和深度学习系统的实践指南,基于Python3.6,提供源代码下载,PyTorch联合创作者作序推荐。
虽然很多深度学习工具都使用Python,但PyTorch 库是真正具备Python 风格的。对于任何了解NumPy 和scikit-learn 等工具的人来说,上手PyTorch 轻而易举。PyTorch 在不牺牲高级特性的情况下简化了深度学习,它非常适合构建快速模型,并且可以平稳地从个人应用扩展到企业级应用。由于像苹果、Facebook和摩根大通这样的公司都使用PyTorch,所以当你掌握了PyTorth,就会拥有更多的职业选择。
本书是教你使用 PyTorch 创建神经网络和深度学习系统的实用指南。它帮助读者快速从零开始构建一个真实示例:肿瘤图像分类器。在此过程中,它涵盖了整个深度学习管道的关键实践,包括 PyTorch张量 API、用 Python 加载数据、监控训练以及将结果进行可视化展示。
本书主要内容:
(1)训练深层神经网络;
(2)实现模块和损失函数;
(3)使用 PyTorch Hub 预先训练的模型;
(4)探索在 Jupyter Notebooks 中编写示例代码。
5、图解深度学习:可视化、交互式的人工智能指南
深入浅出讲解深度学习的主流技术及背后的原理,彩色印刷,图文并茂,助你快速上手TensorFlow和PyTorch等热门工具。
本书汇集了专家乔恩·克罗恩(Jon Krohn)和格兰特·贝勒费尔德(Grant Beyleveld)的丰富经验和具体实践,以及阿格莱·巴森斯(Aglaé Bassens)的精美插图,用直观生动的方式,清晰地阐释了什么是深度学习,为什么深度学习如此流行,并梳理了深度学习与其他机器学习方法的关系。在这本书中,作者通过Jupyter notebook这一强大的工具,编写可动手操作的Python代码,为那些想要开始学习深度学习的开发人员、数据科学家、研究人员、分析师和学生创建了实用的参考教程。
为了帮助读者快速提高,作者重点讲解了利用深度学习库Keras灵活构建TensorFlow模型的方法,同时还介绍了深度学习库PyTorch的强大功能。阅读本书,读者将能够深入理解和掌握深度学习的主要方法及其在机器视觉、自然语言处理、图像生成和游戏领域的应用。