第 5 章 卷积神经网络 卷积神经网络
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
本章我们将介绍卷积神经网络(CNN)。卷积神经网络是标准的神经网络架构,用于在输入观测值为图像时进行预测,而这正是神经网络广泛应用的情况。到目前为止,我们在书中只关注了全连接神经网络,我们将其实现为一系列Dense 层。因此,我们将在本章开始时回顾这些网络的一些关键要素,并以此来说明为什么我们可能要对图像使用不同的架构。然后,我们将以类似于介绍本书其他概念的方式介绍 CNN:我们将首先从高层次讨论 CNN 的工作原理,然后转到低层次讨论 CNN,最后通过从头开始编码卷积操作来详细展示 CNN 的工作原理。1本章结束时,你将对 CNN 的工作原理有足够透彻的了解,从而能够使用 CNN 解决问题,并自行学习高级 CNN 变体,如 ResNets、DenseNets 和 Octave Convolutions。
神经网络和表征学习
神经网络 最初接收的是观测数据,每个观测数据由一定数量的n 个特征表示。到目前为止,我们已经在两个完全不同的领域中看到了两个这样的例子:第一个是房价数据集,其中每个观测值都由 13 个特征组成,每个特征都代表了该房屋的一个数字特征。第二个是手写数字的 MNIST 数据集;由于图像由 784 个像素(宽 28 像素,高 28 像素)表示,因此每个观测值由 784 个表示每个像素亮度或暗度的值表示。
在每种情况下,在对数据进行适当缩放后,我们都能建立一个模型,并准确预测出该数据集的适当结果。而且在每种情况下,有一个隐藏层的简单神经网络模型都比没有该隐藏层的模型表现更好。为什么会这样呢?其中一个原因,正如我在房价数据案例中所展示的,是神经网络可以学习输入和输出之间的非线性关系。不过,一个更普遍的原因是,在机器学习中, ,我们往往需要原始特征的线性组合,才能有效预测目标。假设 MNIST 数字的像素值为x1到x784。例如,x1高于平均值,x139低于平均值,x237也低于平均值,这样的组合可以有力地预测图像中的数字为 9。这样的组合可能还有很多,它们都会对图像是某一特定数字的概率产生积极或消极的影响。神经网络可以通过训练过程自动发现重要的原始特征组合。这一过程首先是通过随机权重矩阵乘以原始特征的初始随机组合;通过训练,神经网络学会完善有帮助的组合,并摒弃那些没有帮助的组合。这种学习哪些特征组合是重要的过程被称为表征学习,这也是神经网络在不同领域取得成功的主要原因。图 5-1 对此进行了总结。
图 5-1. 到目前为止,我们看到的神经网络都以 个特征,然后在 和 这些特征的 "组合 "来进行预测
在 图像数据时,是否有理由对这一过程进行修改?答案是 "有 "的根本原因在于,在图像中,有趣的 "特征组合"(像素)往往来自图像中距离较近的像素。在图像中,由整个图像中随机选择的 9 个像素组合产生有趣特征的可能性要比由相邻像素组成的 3 × 3 补丁产生有趣特征的可能性小得多。我们希望利用图像数据的这一基本事实:特征的顺序很重要,因为它告诉我们哪些像素在空间上相互靠近,而在房价数据中,特征的顺序并不重要。但我们该怎么做呢?
图像数据的不同架构
高层次的解决方案是,像以前一样创建特征组合,但数量要多出一个数量级,而且每个特征组合都只是输入图像中一小块矩形区域像素的组合。 ...