CNN

1.1 一维卷积

一维卷积经常用在信号处理中,用于计算信号的延迟累积。

假设一个信号发生器每个时刻t产生一个信号xt,其信息的衰减率为wk,即在k − 1个时
间步长后,信息为原来的wk 倍。假设w1 = 1, w2 = 1/2, w3 = 1/4,那么在时刻
t收到的信号yt 为当前时刻产生的信息和以前时刻延迟信息的叠加,
yt=1×xt+1/2×xt1+1/4×xt2=w1×xt+w2×xt1+w3×xt2=k=13wkxtk+1 y_t = 1 \times x_t + 1/2 \times x_{t-1} + 1/4 \times x_{t-2}\\ \quad = w_1 \times x_t + w_2 \times x_{t-1} + w_3 \times x_{t-2}\\ \quad = \sum_{k =1}^3 w_k \cdot x_{t-k+1}
w1,w2,...w1, w2,... 称为滤波器(Filter)或卷积核(Convolution Kernel)。
假设滤波器长度为m,它和一个信号序列x1,x2,...x1, x2,... 的卷积为
yt=k=1mwkxtk+1 y_t = \sum_{k =1}^m w_k \cdot x_{t-k+1}
Task7 CNN

1.2 二维卷积

卷积也经常用在图像处理中。因为图像为一个两维结构,所以需要将
一维卷积进行扩展。给定一个图像
XRM×NX \in R^{M \times N},和滤波器
WRm×nW \in R^{m \times n} 一般 m<<M,n<<Nm << M,n<<N,其卷积为
yij=u=1mv=1nwuvxiu+1,jv+1 y_{ij} = \sum_{u = 1}^m \sum_{v = 1} ^ n w_{uv} \cdot x_{i-u+1,j-v+1}

在图像处理中,卷积经常作为特征提取的有效方法。一幅图像在经过卷积
操作后得到结果称为特征映射(Feature Map)。下图给出在图像处理中几种
常用的滤波器,以及其对应的特征映射。图中最上面的滤波器是常用的高斯滤
波器,可以用来对图像进行平滑去噪;中间和最下面的过滤器可以用来提取边
缘特征。

Task7 CNN

1.3 步长和填充

滤波器的步长(Stride)是指滤波器在滑动时的时间间隔。

零填充(Zero Padding)是在输入向量两端进行补零。
Task7 CNN
假设卷积层的输入神经元个数为$ (n − m + 2p)/s + 1$为整数。 n,卷积大小为m,步长(stride)为s,输
入神经元两端各填补 p 个零(zero padding),那么该卷积层的神经元数量为
(nm+2p)/s+1(n − m + 2p)/s + 1

一般常用的卷积有以下三类:

• 窄卷积(Narrow Convolution):步长s = 1,两端不补零p = 0,卷积后
输出长度为nm+1n − m + 1

• 宽卷积(Wide Convolution):步长s = 1,两端补零p=m1p = m − 1,卷积后
输出长度n+m1n + m − 1

• 等宽卷积(Equal-Width Convolution):步长s = 1,两端补零p=(m1)/2p = (m −1)/2,卷积后输出长度n。

CNN

2.1卷积与全连接

根据卷积的定义,卷积层有两个很重要的性质:

局部连接 在卷积层(假设是第l 层)中的每一个神经元都只和下一层中某个局部窗口内的神经元相连,构成一个局部连接网络。

卷积层和下一层之间的连接数大大减少,有原来的
n(l)×n(l1)n^{(l)} \times n{(l−1)}个连接变为
n(l)×mn^{(l)} \times m
个连接,m为滤波器大小。

权重共享 ,作为参数的滤波器w(l) 对于第l 层的所有的
神经元都是相同的。
Task7 CNN

2.2 卷积层

卷积层的作用是提取一个局部区域的特征,不同的卷积核相当于不同的特
征提取器。上一节中描述的卷积层的神经元和全连接网络一样都是一维结构。
既然卷积网络主要应用在图像处理上,而图像为两维结构,因此为了更充分地
利用图像的局部信息,通常将神经元组织为三维结构的神经层,其大小为高度
M×宽度N×深度D,有D 个M × N 大小的特征映射构成。

在输入层,特征映射就是图像本身。如果是灰度图像,就是有一个特征映射,深度D = 1;如果是彩色图像,分别有RGB三个颜色通道的特征映射,输入层深度D = 3。

不失一般性,假设一个卷积层的结构如下:
• 输入特征映射组:XRM×N×DX \in R^{M×N×D} 为三维张量(tensor),其中每个切片
(slice)矩阵XdRM×NX^d \in R^{M×N} 为一个输入特征映射,1dD1 ≤ d ≤ D

• 输出特征映射组:YRM×N×PY \in R^{M′×N′×P} 为三维张量,其中每个切片矩阵
YpRM×NY^p \in R^{M′×N} 为一个输出特征映射,1pP1 ≤ p ≤ P

• 卷积核:WRm×n×D×PW \in R^{m×n×D×P} 为四维张量,其中每个切片矩阵Wp,dRm×nW^{p,d} \in R^{m×n}
为一个两维卷积核,1dD,1pP1 ≤ d ≤ D, 1 ≤ p ≤ P
Task7 CNN
为了计算输出特征映射YpY^p,用卷积核Wp,1,Wp,2,...,Wp,DW^{p,1},W^{p,2},...,W^{p,D} 分别对输入特
征映射X1,X2,...,XDX^1,X^2,...,X^D 进行卷积,然后将卷积结果相加,并加上一个标量偏置
b得到卷积层的净输入ZpZ^p,再经过非线性**函数后得到输出特征映射YpY^p
Zp=Wp×X+bp=d=1DWp,d×Xd+bp Z^p = W^p \times X +b ^p\\ =\sum_{d =1}^D W^{p,d} \times X^d + b^p
Yp=f(Zp) Y^ p = f(Z^p)
Task7 CNN

2.3池化层

池化层(Pooling Layer)也叫子采样层(Subsampling Layer),其作用是
进行特征选择,降低特征数量,并从而减少参数数量。

卷积层虽然可以显著减少网络中连接的数量,但特征映射组中的神经元个
数并没有显著减少。如果后面接一个分类器,分类器的输入维数依然很高,很
容易出现过拟合。为了解决这个问题,可以在卷积层之后加上一个汇聚层,从
而降低特征维数,避免过拟合

到一个值,作为这个区域的概括。
常用的汇聚函数有两种:

  1. 最大汇聚(Maximum Pooling):一般是取一个区域内所有神经元的最大值。
    Ym,nd=max(xi),iRm,nd Y_{m,n}^d = max( x_i), i \in R^d_{m,n}
    其中xix_i 为区域Rm,ndR^d_{m,n} 内每个神经元的**值。
  2. 平均汇聚(Mean Pooling):一般是取区域内所有神经元的平均值。
    Ym,nd=1Rm,ndxi,iRm,nd Y_{m,n}^d = \frac {1} {R^d_{m,n}} \sum x_i,i \in R^d_{m,n}
    汇聚层不但
    可以有效地减少神经元的数量,还可以使得网络对一些小的局部形态改变保持
    不变性,并拥有更大的感受野。
    Task7 CNN

典型的网络结构

一个典型的卷积网络是由卷积层、汇聚层、全连接层交叉堆叠而成。目前常
用的卷积网络结构图5.9所示。一个卷积块为连续M 个卷积层和b个汇聚层(M
通常设置为2 ∼ 5,b为0或1)。一个卷积网络中可以堆叠N 个连续的卷积块,
然后在接着K 个全连接层(N 的取值区间比较大,比如1 ∼ 100或者更大;K
一般为0 ∼ 2)
Task7 CNN

3.1 LeNet-5

Task7 CNN
不计输入层,LeNet-5共有7层,每一层的结构为:

  1. 输入层:输入图像大小为32 × 32 = 1024。
  2. C1层是卷积层,使用6个5 × 5的滤波器,得到6组大小为28 × 28 = 784
    的特征映射。因此,C1层的神经元数量为6 × 784 = 4, 704,可训练参数
    数量为6 × 25 + 6 = 156,连接数为156 × 784 = 122, 304(包括偏置在内,
    下同)。
  3. S2层为汇聚层,采样窗口为2×2,使用平均汇聚,并使用一个如公式(5.24)
    的非线性函数。神经元个数为 6 × 14 × 14 = 1, 176,可训练参数数量为
    6 × (1 + 1) = 12,连接数为6 × 196 × (4 + 1) = 5, 880。
  4. C3层为卷积层。LeNet-5中用一个连接表来定义输入和输出特征映射之间
    的依赖关系,如图5.11所示,共使用60个5 × 5的滤波器,得到16组大小 连接表参见公式(5.37)。
    为10 × 10的特征映射。神经元数量为16 × 100 = 1, 600,可训练参数数量 如果不使用连接表,则需要
    为(60 × 25) + 16 = 1, 516,连接数为100 × 1, 516 = 151, 600。 96个5 × 5的滤波器。
  5. S4层是一个汇聚层,采样窗口为2 × 2,得到16个5 × 5大小的特征映射,
    可训练参数数量为16 × 2 = 32,连接数为16 × 25 × (4 + 1) = 2000。
  6. C5层是一个卷积层,使用120 × 16 = 1, 920个5 × 5的滤波器,得到120
    组大小为1 × 1的特征映射。C5层的神经元数量为120,可训练参数数量
    为1, 920 × 25 + 120 = 48, 120,连接数为120 × (16 × 25 + 1) = 48, 120。
  7. F6层是一个全连接层,有84个神经元,可训练参数数量为84×(120+1) =
    10, 164。连接数和可训练参数个数相同,为10, 164。
  8. 输出层:输出层由10个欧氏径向基函数(Radial Basis Function,RBF)
    函数组成。

3.2 AlexNet

AlexNet[Krizhevsky et al., 2012]是第一个现代深度卷积网络模型,其首次
使用了很多现代深度卷积网络的一些技术方法,比如使用 GPU 进行并行训练,
采用了ReLU作为非线性**函数,使用Dropout 防止过拟合,使用数据增强
来提高模型准确率等。AlexNet赢得了2012年ImageNet图像分类竞赛的冠军。

AlexNet的结构下图所示,包括5个卷积层、3个全连接层和1个softmax
层。因为网络规模超出了当时的单个GPU的内存限制,AlexNet将网络拆为两
半,分别放在两个GPU上,GPU间只在某些层(比如第3层)进行通讯。
Task7 CNN

3.3 Inception

在卷积网络中,如何设置卷积层的卷积核大小是一个十分关键的问题。在
Inception网络中,一个卷积层包含多个不同大小的卷积操作,称为Inception模
块。Inception网络是由有多个inception模块和少量的汇聚层堆叠而成。

Inception模块同时使用1 × 1、3 × 3、5 × 5等不同大小的卷积核,并将得
到的特征映射在深度上拼接(堆叠)起来作为输出特征映射。

下图给出了 v1 版本的 Inception 模块,采用了 4 组平行的特征抽取方式,
分别为1 × 1、3 × 3、5 × 5的卷积和3 × 3的最大汇聚。同时,为了提高计算效
率,减少参数数量,Inception模块在进行3 × 3、5 × 5的卷积之前、3 × 3的最
大汇聚之后,进行一次1 × 1的卷积来减少特征映射的深度。如果输入特征映射
之间存在冗余信息,1 × 1的卷积相当于先进行一次特征抽取

Task7 CNN

3.4 ResNet

残差网络(Residual Network,ResNet)是通过给非线性的卷积层增加直
连边的方式来提高信息的传播效率。

残差网络就是将很多个残差单元串联起来构成的一个非常深的网络。

下图为一个简单的残差单元
Task7 CNN

参考文献 :

[1] : https://nndl.github.io/

[2] :Christian Szegedy, Sergey Ioffe, Vincent Vanhoucke, and Alexander A Alemi.
Inception-v4, inception-resnet and the impact of residual connections on learning. In
AAAI, pages 4278–4284, 2017

[3]: Liang-Chieh Chen, George Papandreou, Iasonas Kokkinos, Kevin Murphy, and Alan L
Yuille. Deeplab: Semantic image segmentation with deep convolutional nets, atrous
convolution, and fully connected CRFs.
IEEE transactions on pattern analysis and
machine intelligence, 40(4):834–848, 2018.

相关文章:

  • 2022-01-01
  • 2021-07-08
  • 2021-07-28
  • 2021-04-11
  • 2021-09-25
  • 2021-11-24
  • 2021-04-03
  • 2021-07-28
猜你喜欢
  • 2021-05-20
  • 2021-06-26
  • 2021-05-21
  • 2021-11-28
  • 2021-04-10
  • 2021-09-20
  • 2021-10-24
相关资源
相似解决方案