0. 前言
在深度学习一节中,我们使用 Keras
构建并训练了全连接网络以解决 CIFAR-10
数据集分类问题,但模型性能远未达到预期效果。全连接网络之所以未能达到理想状态的原因之一是由于全连接神经网络没有考虑输入图像的空间结构。在全连接网络中,首先需要将图像展平为一个一维向量,以便将其传递给第一个全连接层。为了考虑图像的空间结构,需要使用卷积神经网络 (Convolutional Neural Network
, CNN
) 。本节中,将介绍卷积神经网络的优势及其基本组件,并使用 Keras
构建卷积神经网络。
1. 卷积神经网络
卷积神经网络 (Convolutional Neural Network
, CNN
) 是一种非常强大的深度学习模型,广泛应用于图像分析、目标检测、图像生成等任务中。CNN
的核心思想是卷积操作和参数共享,卷积操作通过滑动滤波器(也称为卷积核)在输入数据上进行元素级的乘积和求和运算,从而提取局部特征。通过多个滤波器的组合,CNN
可以学习到不同层次的特征表示,从低级到高级的抽象特征。接下来,我们首次介绍卷积神经网络的基本组件。
1.1 卷积层
首先,我们需要了解深度学习中卷积的含义。下图中显示了两个不同的3×3×1
灰度图像区域与一个 3×3×1
滤波器(卷积核)执行卷积运算的过程。卷积是通过将滤波器逐像素地与部分图像区域逐像素相乘并求和来执行的。当图像区域与滤波器相似时,输出结果就可能为正数;当图像区域与滤波器相反时,输出结果可能是负数。下图中,上侧的图像区域与滤波器相似度较高,因此得到一个较大的正值,下侧的图像区域与滤波器的相似性,因此卷积结果接近零值。
如果我们将滤波器从左到右、从上到下在整个图像上滑动,并记录滑动过程中每个卷积的输出,将会得到一个新的数组,它能够根据滤波器中的值选择出输入的特定特征。卷积层可以拥有多个卷积核,下图展示了用于检测水平和垂直边缘的两个不同的滤波器: