深度学习案例精粹
上QQ阅读APP看书,第一时间看更新

本书结构

第1章解释数据科学或者机器学习的定义,即在事先没有被告知或者编程的情况下,机器从数据集中学习知识的能力。例如,要编写一个可以识别数字的程序非常困难,该程序以手写数字作为输入图像,输出该图像所代表的是0~9的哪个数字。同样地,要判断收到的邮件是不是垃圾邮件这样的分类任务也是很困难的。为了解决这样的任务,数据科学家使用一些数据科学、机器学习领域的学习方法和工具,通过给机器一些能够区分每个数字的可解释特征来教会计算机如何自动识别数字。对于垃圾邮件分类问题也是如此,我们能够通过特定的算法教会计算机如何判断一封邮件是不是垃圾邮件,而不是使用传统的正则化表达式并编写数百条规则来对收到的邮件进行分类。

第2章讨论线性模型——数据科学领域的基本学习算法。理解线性模型如何工作对于学习数据科学的过程至关重要,因为它是大多数复杂学习算法(包括神经网络)的基本构建模块。

第3章介绍模型的复杂性和评估方法。这对构建成功的数据科学系统非常重要。有很多工具可以用来评估和选择模型,本章将讨论一些工具,通过添加更多描述性特征并从现有数据中提取有用信息,这些工具有助于你提高数据的价值。同样地,本章也会讨论与最优数量特征有关的其他工具,并解释为什么“有大量的特征却只有很少量的训练样本/观测值”会是一个问题。

第4章概述使用最广泛的深度学习框架之一——TensorFlow。它在社区的支持度很高,而且在日益增长,这对于构建复杂的深度学习应用来说是一个很好的选择。

第5章解释TensorFlow背后的主要计算概念——计算图模型,并演示如何通过实现线性回归和逻辑回归模型让读者慢慢走上正轨。

第6章解释前馈神经网络(Feed-forward Neural Network,FNN),FNN是一种特殊类型的神经网络,其中神经元之间的连接不构成环。因此,它与本书后续将要研究的神经网络中的其他结构(如循环类型神经网络)不同。FNN是一种广泛使用的架构,而且它是第一个类型最简单的神经网络。本章将会介绍一种典型的FNN架构,并且使用TensorFlow中的库来实现它。在讲完了这些概念之后,本章会给出一个数字分类的实际例子。例如,给定一组包含手写数字的图像,如何将这些图像分为10个(即0~9)不同的类别?

第7章讨论数据科学中的卷积神经网络(Convolutional Neural Network,CNN),CNN是一种特殊的深度学习架构,该架构使用卷积运算从输入图像中提取相关的可解释特征。把很多CNN层连接起来作为FNN,同时通过这种卷积运算来模拟人脑在识别物体时是怎样工作的。每个皮层神经元对受限区域空间(也称为感受野)中的刺激做出反应。特别地,生物医学成像问题有时会难以解决,但在本章中,你将可以看到如何使用CNN来识别图像中的这些模式。

第8章介绍CNN背后的基础知识和直觉/动机,并在可用于物体检测的最流行的数据集之一上进行演示。同样地,你将会看到CNN前面的一些层如何提取关于物体的一些基本特征,而最后的卷积层将会提取到更多的语义级特征,这些特征都是从前几层的基本特征中构建而来的。

第9章讨论迁移学习(Transfer Learning,TL),迁移学习是数据科学中研究的一个问题,主要涉及在解决特定任务时不断获取知识并使用这些已获得的知识来解决另一个不同但相似的任务。本章将展示数据科学领域中一种使用TL的现代实践和常见主题。这里的想法是在处理具有较小数据集的领域时,如何从具有非常大的数据集的领域中来获得帮助。最后,本章将重新探讨CIFAR-10目标检测示例,并尝试使用TL来缩短训练时间和减小性能误差。

第10章介绍循环神经网络(Recurrent Neural Network,RNN),RNN是一类广泛应用于自然语言处理(Natural Language Processing,NLP)的深度学习架构。这套架构使我们能够为当前预测提供上下文信息,并且还具有处理任何输入序列中长期依赖性的特定架构。本章将会演示如何构建一个序列到序列的模型,这对于NLP中的许多应用都是很有用的。这里将通过建立一个字符级语言模型来阐述这些概念,并且展示模型如何产生和原始输入序列相似的句子。

第11章解释了机器学习是一门主要基于统计学和线性代数的科学。由于反向传播算法,应用矩阵运算在大多数机器学习或深度学习架构中都非常普遍。这也是深度学习(机器学习)在总体上只以实数值作为输入的主要原因。事实上,这和很多的应用相矛盾,如机器翻译、情感分析等,它们以文本作为输入。因此,为了在这个应用中使用深度学习,我们需要以深度学习所接受的方式进行处理。本章将会介绍表征学习领域,这是一种从文本中学习实值表示方式的方法,同时保留实际文本的语义。例如,love的表示方式应该和adore的表示方式十分接近,因为它们都会在非常相似的语境中使用。

第12章讨论了自然语言处理中一个热门和流行的应用,即所谓的情感分析。现在大多数人通过社交媒体平台来表达他们对某事的看法,所以对于公司甚至政府来说,利用这些海量文本来分析用户对某事的满意度是非常重要的。在本章中,将使用RNN来构建一个情感分析解决方案。

第13章介绍自编码器网络,它是当下使用最广泛的深度学习架构之一。它主要用于高效解码任务的无监督学习,也可以用于通过学习特定数据集的编码或者表示方式来降维。本章将使用自编码器展示如何通过构建具有相同维度但噪声更小的另一个数据集,来对当前数据集进行去噪。为了在实践中使用这个概念,这里将会从MNIST数据集中提取重要的特征,并尝试以此来观察性能是如何显著提高的。

第14章讨论生成对抗网络(Generative Adversarial Network,GAN)。这是一种由两个彼此对抗的网络(因此有了名字中的对抗)组成的深度神经网络架构。2014年,Ian Goodfellow和包括Yoshua Benjio在内的其他研究人员在蒙特利尔大学的一篇论文(见arxiv官网)中介绍了GAN。提到GAN,Facebook的AI研究总裁Yann Lecun称对抗训练是机器学习过去10年中最有趣的想法。GAN潜力巨大,因为它可以学习模仿任何的数据分布。也就是说,在诸如图像、音乐、语言和文本等任何领域可以训练GAN以创造与我们类似的世界。从某种意义上说,它们是机器人艺术家,它们的输出(见nytimes官网)令人印象深刻同时也使人们受到鼓舞。

第15章指出我们能够使用GAN来实现非常多有趣的应用。本章将展示GAN的另一个有前景的应用,即基于CelebA数据库的人脸生成,并且演示如何将GAN用于建立那种对于数据集标记不准确或者缺少标记的半监督学习模型。

附录A包括鱼类识别示例的所有代码。