卷积神经网络CNN学习笔记

主要操作

卷积、非线性变换(ReLU)、池化或子采样、分类(完全连接层)

卷积

卷积的主要目的是从输入图像中提取特征。
卷积神经网络CNN学习笔记
卷积的解释:将橙色矩阵在原始图像(绿色)上以每次1个像素的速率(也称为“步幅”)移动,对于每个位置,计算两个矩阵相对元素的乘积并相加,输出一个整数并作为最终输出矩阵(粉色)的一个元素。
在卷积神经网路的术语中,这个3 × 3矩阵被称为“过滤器”或“核”或“特征探测器”,通过在图像上移动过滤器并计算点积得到的矩阵被称为“卷积特征”或“**映射”或“特征映射”。重要的是要注意,过滤器的作用就是原始输入图像的特征检测器。

深度

卷积运算的过滤器数量。如果使用三个过滤器进行卷积就可以得到三个不同的特征图,将这三个特征图视为堆叠的二维矩阵,因此特征映射的深度为3。

步幅

在输入矩阵上移动一次过滤器矩阵的像素数量。步幅越大,生成的特征映射越小。

非线性变换ReLU

ReLU 是一个针对元素的操作(应用于每个像素),并将特征映射中的所有负像素值替换为零。ReLU 的目的是在卷积神经网络中引入非线性因素(卷积是一个线性运算 —— 按元素进行矩阵乘法和加法,所以我们希望通过引入 ReLU 这样的非线性函数来解决非线性问题)。
其他非线性函数诸如 tanh 或 sigmoid 也可以用来代替 ReLU,但是在大多数情况下,ReLU 的表现更好。

池化

空间池化(也称为子采样或下采样)可降低每个特征映射的维度,并保留最重要的信息。空间池化有几种不同的方式:较大值,平均值,求和等。
在较大池化的情况下,我们定义一个空间邻域(例如,一个2 × 2窗口),并取修正特征映射在该窗口内较大的元素。当然我们也可以取该窗口内所有元素的平均值(平均池化)或所有元素的总和。在实际运用中,较大池化的表现更好。
卷积神经网络CNN学习笔记

完全连接层

卷积层和池化层的输出代表了输入图像的高级特征。完全连接层的目的是利用这些基于训练数据集得到的特征,将输入图像分为不同的类。
卷积神经网络CNN学习笔记

步骤总结

卷积(特征矩阵提取)、ReLu(非线性变化)、池化(降维)、重复多次前三个步骤、将输出作为全连接网络的输入、优化迭代全连接网络、全连接网络的输出层使用softmax输出各个类的概率。
卷积神经网络CNN学习笔记
我们有两个由卷积,ReLU 和 Pooling 组成的中间层 —— 第二个卷积层使用六个过滤器对第一层的输出执行卷积,生成六个特征映射。然后将 ReLU 分别应用于这六个特征映射。接着,我们对六个修正特征映射分别执行较大池化操作。这两个中间层的作用都是从图像中提取有用的特征,在网络中引入非线性因素,同时对特征降维并使其在尺度和平移上等变。

  1. 用随机值初始化所有过滤器和参数/权重
  2. 神经网络将训练图像作为输入,经过前向传播步骤(卷积,ReLU 和池化操作以在完全连接层中的前向传播),得到每个类的输出概率。
  3. 计算输出层的总误差
  4. 使用反向传播计算网络中所有权重的误差梯度,并使用梯度下降更新所有过滤器值/权重和参数值,以最小化输出误差。
  5. 过滤器数量、大小,网络结构等参数在步骤1之前都已经固定,并且在训练过程中不会改变,只会更新滤器矩阵和连接权值。对训练集中的所有图像重复步骤2-4。