《神经网络与机器学习》笔记(三)

第五章 卷积神经网络

卷积神经网络(Convolutional Neural Network,CNN或ConvNet)是一种具有局部连接、权重共享等特性的深层前馈神经网络。

卷积神经网络最早是主要用来处理图像信息。在用全连接前馈网络来处理图像时,会存在两个问题:(1)参数太多;(2)全连接前馈网络无法直接提取(可通过数据增强实现)图片的局部不变性特征。

目前的卷积神经网络一般是由卷积层、汇聚层和全连接层交叉堆叠而成的前馈神经网络,使用反向传播算法进行训练。

卷积神经网络有三个结构上的特性:局部连接、权重共享以及汇聚。这些特性使得卷积神经网络具有一定程度上的平移、缩放和旋转不变性。和前馈神经网络相比,卷积神经网络的参数更少。

卷积

也叫摺积,是分析数学中一种重要的运算。

一维卷积:经常用在信号处理中,用于计算信号的延迟累积。(可以说是在时间序列段上对值取加权平均)

二维卷积:主要用在图像处理上,是一维卷积的扩展。一幅图像在经过卷积操作后得到结果称为特征映射(Feature Map)。

互相关

是一个衡量两个序列相关性的函数,通常是用滑动窗口的点积计算来实现。

互相关和卷积的区别仅仅在于卷积核是否进行翻转。因此互相关也可以称为不翻转卷积。

卷积的变种
  • 窄卷积(Narrow Convolution):步长s = 1,两端不补零p = 0,卷积后输出长度为n − m + 1。
  • 宽卷积(Wide Convolution):步长s = 1,两端补零p = m − 1,卷积后输出长度n + m − 1。
  • 等宽卷积(Equal-Width Convolution):步长s = 1,两端补零p = (m −1)/2,卷积后输出长度n。
卷积的数学性质
  • 交换性

    如果不限制两个卷积信号的长度,对于翻转卷积和不翻转卷积都有

  • 导数

    假设,其中,函数为一个标量函数,则
    \begin{align*} &由y_{ij}=\sum_{u,v}w_{u,v}x_{i+u-1,j+v-1}得\\ &\begin{aligned} \frac{\partial f(Y)}{\partial w_{u v}} &=\sum_{i=1}^{M-m+1} \sum_{j=1}^{N-n+1} \frac{\partial y_{i j}}{\partial w_{u v}} \frac{\partial f(Y)}{\partial y_{i j}} \\ &=\sum_{i=1}^{M-m+1} \sum_{j=1}^{N-n+1} x_{i+u-1, j+v-1} \frac{\partial f(Y)}{\partial y_{i j}} \\ &=\sum_{i=1}^{M-m+1} \sum_{j=1}^{N-n+1} \frac{\partial f(Y)}{\partial y_{i j}} x_{u+i-1, v+j-1} \end{aligned}\\ &由上可以看出,f(Y)关于W的偏导数为X和\frac{\partial f(Y)}{\partial Y}的卷积:\frac{\partial f(Y)}{\partial W}=\frac{\partial f(Y)}{\partial Y} \otimes X\\ &同理,可得到:\\ &\begin{aligned} \frac{\partial f(Y)}{\partial x_{s t}} &=\sum_{i=1}^{M-m+1} \sum_{j=1}^{N-n+1} \frac{\partial y_{i j}}{\partial x_{s t}} \frac{\partial f(Y)}{\partial y_{i j}} \\ &=\sum_{i=1}^{M-m+1} \sum_{j=1}^{N-n+1} w_{s-i+1, t-j+1} \frac{\partial f(Y)}{\partial y_{i j}} \end{aligned} \end{align*}

卷积神经网络

一般由卷积层、汇聚层和全连接层构成。

用卷积来代替全连接

为了减少学习参数数量。

如果是全连接,,如果第l 层有n^{(l)} 个神经元,第l − 1 层有n^{(l-1)} 个神经元,则连接边有n^{(l)}\times n^{(l-1)} 个,\\也就是权重矩阵有n^{(l)}\times n^{(l-1)} 个参数。当n^{(l)} 和 n^{(l-1)} 都很大时,权重矩阵的参数非常多,训练的效率会非常低。\\如果用卷积层代替,则第l层的净输入z^{(l)}=w^{(l)}\otimes a^{(l-1)}+b^{(l)},\\其中,因为卷积的局部连接特性,第l 层中的每一个神经元都只和下一层(第l − 1层)中某个局部窗口内的神经元相连,\\ 构成一个局 部连接网络,由原来的n^{(l)} \times n^{(l-1)} 个连接变为n^{(l)} \times m个连接,m为滤波器大小。\\又因为权重共享特性,所以第l层只用更新一个m维的权重w^{(l)} 和1 维 的偏置b^{(l)},共m + 1 个参数。\\ 参数个数和神经元的数量无关。此外,第l 层的神经 元个数不是任意选择的,而是满足n^{(l)} = n^{(l-1)} − m + 1。

卷积层

不失一般性,假设一个卷积层的结构如下:
\begin{align*} &• 输入特征映射组:X\in \mathbb{R}^{M\times N \times D}为三维张量,其中每个切片矩阵X^d\in \mathbb{R}^{M\times N }为一个输入特征映射,1 ≤ d ≤ D;\\ &• 输出特征映射组:Y \in \mathbb{R}^{M^′\times N^′ \times P}为三维张量,其中每个切片矩阵Y^P \in \mathbb{R}^{M^′\times N^′}为一个输出特征映射,1 ≤ p ≤ P;\\ &• 卷积核:W\in \mathbb{R}^{m\times n \times D \times P}为四维张量,其中每个切片矩阵W^{(p,d)}\in \mathbb{R}^{m\times n }为一个二维卷积核,1 ≤ d ≤ D, 1 ≤ p ≤ P。 \end{align*}

卷积层中从输入特征映射组X到输出特征映射Yp的计算示例

在输入为,输出为的卷积层中,每一个输出特征映射都需要D个滤波器以及一个偏置。假设每个滤波器的大小为m × n,那么共需要P × D × (m × n) + P 个参数。

汇聚层

也叫子采样层,其作用是进行特征选择,降低特征数量,从而减少参数数量。

常用的汇聚有两种:最大汇聚(Max Pooling)和平均汇聚(Mean Pooling)。

典型的卷积神经网络结构
典型的卷积网络结构

目前,整个网络结构趋向于使用更小的卷积核(比如1 × 1 和3 × 3)以及更深的结构(比如层数大于50)。此外,由于卷积的操作性越来越灵活(比如不同的步长),汇聚层的作用也变得越来越小,因此目前比较流行的卷积网络中,汇聚层的比例正在逐渐降低,趋向于全卷积网络。

参数学习

在卷积神经网络中,主要有两种不同功能的神经层:卷积层和汇聚层。而参数为卷积核以及偏置,因此只需要计算卷积层中参数的梯度。

几种典型的卷积神经网络

LeNet-5
AlexNet
Inception 网络

一个卷积层包含多个不同大小的卷积操作,称为Inception 模块。Inception 网络是由有多个Inception 模块和少量的汇聚层堆叠而成。

残差网络

是通过给非线性的卷积层增加直连边(的)方式来提高信息的传播效率。

其它卷积方式

转置卷积
空洞卷积

你可能感兴趣的:(《神经网络与机器学习》笔记(三))