前言

多年来,我们这些忠实地致力于研究机器学习的群体见证了这个领域的发展和繁荣,一些技术的产生令人惊叹,甚至有望带来彻底的社会变革。然而,对于那些想要加入我们来研究这一领域的人们而言,机器学习知识似乎有点令人望而生畏。当然,网络上的相关信息太多了,我们很难浏览所有的论文和代码,为那些想要加入深度学习领域的人找到可靠的介绍性内容。虽然市面上有很多关于机器学习知识的介绍性书籍,但大部分都不满足那些特别想从事深度学习工作的人们的需求,而且要求读者具备必要的、最低限度的数学和算法知识,以及一些必要的编程技能。

本书的目标是帮助初学者建立强大的深度学习基础,掌握使用众所周知的方法建立深度学习模型所需要的基本概念。如果这个目标听上去符合你的需求,那么本书可能正是你所需要的。本书假定读者先前没有接触过神经网络和深度学习,并从回顾深度学习所需要的机器学习基础知识开始。然后,本书解释了如何通过清洗和预处理数据为深度学习做准备,随后逐步介绍神经网络和流行的监督神经网络架构(如卷积神经网络(CNN,Convolutional Neural Network)、循环神经网络(RNN,Recurrent Neural Network)和生成对抗网络(GAN,Generative Adversarial Network))以及无监督架构(如自编码器(AE)、变分自编码器(VAE)和受限玻耳兹曼机(RBM))。在每一章的结尾,你将有机会测试你对概念的理解程度,并反思自己的成长过程。

在本书的最后,你将理解深度学习的概念和秘诀,并将能够分辨适用于特定任务的算法。

本书的目标读者

本书是为想要从深度学习和神经网络的基础知识开始学习的、心怀抱负的数据科学家和深度学习工程师准备的。本书不需要读者事先接触过深度学习或机器学习,当然如果接触过会更好。读者只需要熟悉线性代数和Python编程就可以了。

本书是为珍惜时间、想要学到编程所需的深度学习要点的读者准备的。

如果不知道深度学习的基础知识,那么它可能会让你感到害怕。许多人因为不理解Web上的术语或示例程序,所以感到很沮丧。这就导致了人们在选择深度学习算法时可能会做出糟糕的决定,而且他们无法预见进行这种选择所产生的后果。因此,本书是为具有下列意图的读者准备的:

·重视获得深度学习概念的良好定义。

·想要使用结构化的方法从头开始学习深度学习。

·渴望了解并真正理解深度学习的基本概念。

·想知道如何预处理数据,以便在深度学习算法中使用。

·对一些先进的深度学习算法感到好奇。

本书的主要内容

第1章 给出了机器学习的概述,不仅介绍了机器学习背后的动机以及该领域常用的术语,还介绍了深度学习的基本概念以及它是如何适应人工智能发展的。

第2章 讲解如何配置TensorFlow和Keras深度学习开发平台,并介绍它们在深度学习中的用途和目的。本章还简要介绍了其他深度学习程序框架和程序库,让你能够以一种低成本的方式熟悉它们。

第3章 介绍数据处理背后的主要概念,数据经过处理后才能够用在深度学习中。本章将涵盖格式化分类以及实值输出和输入的基本概念,还将探索关于数据增强和降低数据维度的技术。

第4章 介绍深度学习理论中的基本概念,包括回归和分类的性能度量以及过拟合的识别,还提供了一些关于超参数调优的警告。

第5章 介绍神经元的概念,并将其连接到感知机模型,该模型以简单的方式从数据中学习。感知机模型是理解从数据中学习的基本神经模型的关键,也可以用来处理线性不可分数据。

第6章 通过使用多层感知机算法,让你直面深度学习的第一个挑战,例如基于误差最小化的梯度下降技术,以及实现模型泛化的超参数调优。

第7章 通过解释编码层和解码层的必要性来描述自编码器模型,探索与自编码器模型相关的损失函数,并将其应用于降维问题和数据可视化。

第8章 介绍了深度信念网络的概念和这种深度无监督学习的含义,通过引入深层自编码器并将它们与浅层自编码器进行对比来解释这些概念。

第9章 介绍生成模型在无监督深度学习领域背后的哲学,以及它们在生成抗噪声鲁棒模型中的重要性。在处理扰动数据时,变分自编码器是深度自编码器的更好的替代方案。

第10章 通过介绍RBM来补充书中对深度信念模型知识的覆盖。本章介绍了RBM的前后双向传播性质,并与AE单向的前向传播性质进行比较。本章分别使用RBM和AE模型实现对降维数据的可视化表示,并进行了比较。

第11章 解释深度神经网络和广度神经网络在性能和复杂性上的差异,并在神经元之间的连接方面引入了密集网络和稀疏网络的概念。

第12章 介绍卷积神经网络,从卷积运算开始,然后讲解集成卷积运算层,从而学习可以对数据进行操作的滤波器。本章最后展示了如何可视化所学习的滤波器。

第13章 提出了最基本的循环网络的概念,揭示了它们的缺点,以说明长短时记忆[1]模型的存在价值及其成功之处。本章还探讨了序列模型在图像处理和自然语言处理方面的应用。

第14章 介绍了基于GAN模型的半监督学习方法,它属于对抗学习家族。本章解释了生成器和判别器的概念,并讨论了为什么对训练数据概率分布有良好的近似可以导致模型(例如,从随机噪声中产生数据)的成功。

第15章 简要地展示了深度学习领域崭新的、令人兴奋的主题和机会。如果你想继续学习,可以在这里找到Packt的其他资源,你可以使用这些资源在此领域继续前进。

如何充分利用本书

你需要确保自己的Web浏览器能够连接到谷歌Colabs,网址是http://colab.research.google.com/

虽然本书假设读者没有事先接触过深度学习或机器学习,但是你必须熟悉一些线性代数知识和Python编程,以便充分利用本书。

为了确保与机器学习和深度学习Python库的未来版本兼容,我们在本书的代码包和GitHub库中包含了一个使用!pip freeze指令生成的当前版本列表。然而,这些只是为了参考和未来的兼容性,记住谷歌Colabs已经具备了所有必要的设置。

你还可以在https://github.com/PacktPublishing/上从丰富的书籍和视频目录中获得其他代码包。去看看吧!同样,库的列表仅供参考,但谷歌Colabs上有最新的设置。

一旦你使用本书完成了学习之旅,先庆祝一下,然后再密切关注本书的最后一章,它会为你指明新的方向。记住,永远坚持学习,这是成功的关键之一。

下载示例代码及彩色图像

本书的示例代码文件及彩色插图,可以从www.packtpub.com/通过个人账号下载,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。

在代码文件下载完毕之后,请确保使用下列版本的解压缩软件解压或提取文件:

·Windows系统:WinRAR/7-Zip

·Mac系统:Zipeg/iZip/UnRarX

·Linux系统:7-Zip/PeaZip

本书的代码包也可以在GitHub上获取,网址是https://github.com/PacktPublishing/Deep-Learning-for-Beginners。如果代码有更新,GitHub存储库中的代码也会更新。

本书的排版约定

代码体:表示文本中的代码、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟URL、用户输入和Twitter账户名。下面有一个例子:“潜在编码器模型latent_ncdr和autoencoder模型中的predict()方法在指定的层上产生输出。”

代码的示例如下:

当我们需要让你注意代码块的特定部分时,相关内容会加粗:

命令行输入与输出的格式如下所示:

黑体:表示新的术语、重要的词,或者屏幕上看到的词(例如菜单或对话框中的单词)。这里有一个例子:“最重要的是一个叫作双曲正切的新激活函数。”

表示警告或重要提示。

表示提示和技巧。

[1] 也译为长短期记忆。——编辑注