卷积神经网络CNN

目录

  • 一、卷积层
    • 1.卷积
    • 2.填充与步幅
      • 填充
      • 步幅
    • 3.池化层
    • 4.多通道卷积
    • 5.转置卷积
  • 二、经典的网络
    • LeNet
    • AlexNet
    • Resnet

卷积神经网络是计算机视觉中最重要的基础之一,本文将记录网络中的卷积、池化等操作,并简要介绍几个经典的网络。

一、卷积层

1.卷积

与全连接层相比,卷积层考虑了如下图像特征学习中重要的两大原则。

  1. 平移不变性:不论目标模式或特征出现在图像的何处,神经网络都应该能够将其捕获;
  2. 局部性:神经网络所学习的模式或特征应该是图像的局部信息,而不应该过于关注图像中相距较远的区域之间的关系。
    卷积神经网络CNN_第1张图片

首先介绍二维情况下的卷积操作,假设H是卷积层的输入,G是卷积核,⊕为卷积操作,b为标量偏置,则卷积输出在(i,j)位置上的数值由以下公式定义。直观地说,卷积操作就是卷积核在输入矩阵上滑动,核函数每滑动一次对应一个输出。
( H ⊕ G ) ( i , j ) = ∑ k ∑ l H ( k , l ) g ( i − k , j − l ) + b (H⊕G)(i,j)=∑_k∑_lH(k,l)g(i-k,j-l) +b (HG)(i,j)=klH(k,l)g(ik,jl)+b
全连接层中网络训练时学习的参数是每一层中的权重,而在卷积层中学习的则是每一层的卷积核

从图中也可以看出,卷积层的输出与输入的大小以及卷积核的大小有关系。具体而言,除了这两个因素,输出的大小还受到卷积核滑动的步幅大小影响。

2.填充与步幅

填充

当步幅和卷积核一定时,卷积层的输入矩阵越大,输出矩阵自然也就越大。因此,我们可以通过对卷积层的输入进行填充来控制输出矩阵的大小
卷积神经网络CNN_第2张图片
另一方面,对输出矩阵四周填充一圈0,也能让卷积核更好地学习到矩阵边缘的一些特征。从这个角度看,填充一般不会超出卷积核的大小,不然卷积核与0元素相乘,相当于在下一层网络中加一圈0填充,没有计算意义。

步幅

步幅就是卷积核滑动所跨越的元素数目。综上,若输入的矩阵形状为n×m,卷积核的形状为k_h×k_w,垂直和水平方向上的步幅分别为s_h和s_w,则输出的形状由以下公式确定。
⌊ ( n − k h + s h ) / s h ⌋ × ⌊ ( m − k w + s w ) / s w \left\lfloor\left(n-k_{h}+s_{h}\right) / s_{h}\right\rfloor \times\left\lfloor\left(m-k_{w}+s_{w}\right) / s_{w}\right. (nkh+sh)/sh×(mkw+sw)/sw
当步幅大于1时,即为跨步卷积。跨步卷积能够起到去除冗余信息的作用,也在一定程度上发挥了池化层的作用。对比输入和输出的形状大小,可以看到卷积操作实际上将输入的形状成倍地减小了,是对图像信号的一种下采样

3.池化层

按理说池化层是独立于卷积层的,但是内容不多,我就直接合并进这一节了。
池化层通过一个固定的池化窗口在输入矩阵上滑动完成池化操作。池化窗口从左至右、从上至下滑动,每次到达一个位置,计算池化窗口内的最大值或是平均值作为输出(这两种情况所对应的操作分别称为最大池化和平均池化)。
卷积神经网络CNN_第3张图片

4.多通道卷积

在现实应用中,彩色图像具有三个通道(RGB)来标准红、绿、蓝三种原色,这是二维卷积层所难以处理的。研究者将卷积操作拓展到高维空间上。当输入通道数目增加时,卷积核的数目应该保持与输入的通道数目一致(即每个输入通道对应一个卷积核);而当输出的通道数目增加时,需要卷积核的组数(即一组卷积核对应一个输出通道)。
卷积神经网络CNN_第4张图片
特别的,当卷积核的大小为1×1时,卷积操作所学习的特征处于通道维中,此时若将高、宽维度上的数据视为输入,则此时的卷积层等价于全连接层。卷积层这时学习的就是不同通道之间的特征,而不是同一通道内的空间信息。

5.转置卷积

前文提到的卷积层和池化层都会减少下采样输入图像的空间维度(高和宽),这样会导致随着卷积层的堆叠,输出的空间维度越来越小的情况。然而,在一些端到端的神经网络模型中,需要神经网络的输出的空间维度应该与输入保持一致。为了解决这个问题,需要引入转置卷积(Transposed Convolution),它能够增加上采样中间层特征图的空间维度

同样假设H是转置卷积层的输入,G是卷积核(高为h,宽为w),b为标量偏置,则转置卷积输出T的计算由以下公式定义。
T [ i : i + h , j : j + w ] + = H [ i , j ] ⋅ G T[i:i+h,j:j+w]+=H[i,j]⋅G T[i:i+h,j:j+w]+=H[i,j]G
卷积神经网络CNN_第5张图片
接下来我们讨论转置卷积中输入和输出之间的关系,为了方便说明,我们假设输入矩阵和转置卷积核均为方形。设输入的矩阵形状为n×n,卷积核的形状为k×k,垂直和水平方向上的步幅均为s,则输出的形状o由以下公式确定。
o = s ( n − 1 ) + k o=s(n-1)+k o=s(n1)+k
由于k和s均为不小于1的整数,所以有o≥n,而我们设置合适的k和s大小时,可以将特征图的空间维度放大,实现逆转下采样导致的空间尺寸减小

二、经典的网络

LeNet

AlexNet

Resnet

你可能感兴趣的:(人工智能,深度学习,卷积神经网络)