3.5.卷积神经网络

    卷积神经网络(Convolutional Neural Network, CNN, ConvNet)是一种具有局部连接,权重共享的深层前馈神经网络,全连接神经网络的问题:

  1. 参数太多

  2. 局部不变性特征:全连接网络无法提取局部不变特征,一般要做数据增强

    目前的卷积神经网络一般包含:卷积层、汇聚层、全连接交叉,卷积神经网络的三个结构上的特性:局部连接、权重共享、汇聚,最早的卷积网络主要用于图像和视频分析等任务。

1.卷积

1.1.定义

    卷积(Convolution),也叫褶积,是分析数学中的一种重要运算。

1.1.1.一维卷积

    「信号处理」一维卷积定义:假设一个信号发生器每个时刻tt产生一个信号xtx_t,信息衰减为wkw_k,即在k1k - 1个时间步长后,信息为原来的wkw_k倍,假设:w1=1,w2=1/2,w3=1/4w_1 = 1, w_2 = 1/2, w_3 = 1/4,那么在时刻tt收到的信号yty_t为当前时刻产生信息和以前延迟信息的叠加:

yt=k=13wkxtk+1y_t = \sum\limits_{k=1}^3 w_k x_{t - k + 1}

    此处的w1,w2,...w_1, w_2, ...称为滤波器(Filter)或卷积核(Convolution Kernel),假设滤波器长度为KK,它和一个信号序列的卷积为:

yt=k=1Kwkxtk+1y_t = \sum\limits_{k=1}^K w_k x_{t - k + 1}

1.1.2.二维卷积

    「图像处理」,图像一般是一个二维结构,所以需将一维卷积扩展,给定一个图像XRM×NX \in R^{M \times N}和一个滤波器WRU×VW \in R^{U \times V},一般U<<M,V<<NU << M, V << N,二维卷积定义如:

yij=u=1Uv=1Vwuvxiu+1,jv+1y_{ij} = \sum\limits_{u = 1}^U \sum\limits_{v = 1}^V w_{uv}x_{i - u + 1, j-v+1}

    图像处理中常用的均值滤波(Mean Filter)是一种二维卷积,将当前位置的像素值设为滤波器窗口中所有像素平均值,wuv=1UVw_{uv} = \frac{1}{UV},图像处理过程中,一幅图经过卷积投影过后得到的结果称为特征映射(Feature Map)。

1.2.互相关

    机器学习/图像处理领域,卷积的主要功能是在图像上滑动一个卷积核(滤波器),通过卷积操作得到一组新的特征,计算过程中,需要进行卷积核翻转——具体实现过程会用互相关操作代替卷积来减少一些不必要的操作开销。互相关(Cross-Correlation)是用来衡量两个序列相关性的函数:

  • 图像XRM×NX \in R^{M \times N}

  • 卷积核WRM×NW \in R^{M \times N}

  • 它们的互相关

    yij=u=1Uv=1Vwuvxi+u1,j+v1y_{ij} = \sum\limits_{u = 1}^U \sum\limits_{v = 1}^V w_{uv}x_{i+u-1,j+v-1}

    互相关卷积的区别在于卷积核是否执行翻转,所以互相关也可称为不翻转卷积——神经网络中使用卷积的主要目的是执行特征抽取

1.3.卷积变种

    在标准定义基础上,可以引入卷积核的滑动步长、零填充增加卷积多样性,更灵活进行特征抽取。

  • 步长(Stride)是指卷积在滑动时的时间间隔。

  • 零填充(Zero Padding)是在输入向量两端进行补零操作

    假设卷积层的输入神经元个数MM,卷积大小KK,步长SS,在输入两端填补PP个0,那么卷积层神经元数量为(MK+2P)/S+1(M - K + 2P)/S + 1;一般常用卷积分:

  • (早期默认)窄卷积(Narrow Convolution),步长S=1S = 1,两端不补零P=0P = 0,卷积后输出长度MK+1M - K + 1

  • (现在默认)宽卷积(Wide Convolution),步长S=1S = 1,两端补零P=K1P = K - 1,卷积后输出长度M+K1M + K - 1

  • 等宽卷积(Equal-Width Convolution),步长S=1S = 1,两端补零P=(K1)/2P = (K-1)/2,卷积后输出长度依旧MM

1.4.数学性质

1.4.1.交换性

    在不限制卷积信号长度的前提下,翻转卷积具有交换性,而对互相关的“卷积”,也具有一定“交换性”:

xy=yxx * y = y * x

    宽卷积(Wide Convolution)定义:给定一个二维图像XRM×NX \in R^{M \times N},一个二维卷积核WRM×NW \in R^{M \times N},对图像XX进行零填充,两端各补U1U - 1V1V - 1个零,得到全填充(Full Padding)图像:X~R(M+2U2)×(N+2V2)\tilde{X} \in R ^{(M + 2U - 2) \times (N + 2V - 2)}的宽卷积定义为:

W~XWX~W \tilde{\bigotimes} X \triangleq W \bigotimes \tilde{X}

    符号~\tilde{\bigotimes}表示宽卷积运算。

1.4.2.导数

(略)

2.卷积神经网络

2.1.卷积代替全连接

    全连接前馈神经网络中,如果ll层有M1M_1个神经元,则l1l-1层有Ml1M_{l-1}个神经元,连接的边有Ml×Ml1M_l \times M_{l-1}个,也就是权重矩阵包含Ml×Ml1M_l \times M_{l-1}个参数,当二者都很大时,权重矩阵参数会很多,效率低下。

    如果采用卷积代替全连接,第ll层的净输入z(l)z^{(l)}l1l - 1层活性值a(l1)a ^ {(l-1)}和卷积核w(l)RKw^{(l)} \in R^K的卷积,即:

z(l)=w(l)a(l1)+b(l)z^{(l)} = w^{(l)} \bigotimes a^{(l - 1)} + b ^ {(l)}

  • w(l)RKw^{(l)} \in R^K为可学习的权重向量

  • b(l)Rb^{(l)} \in R为可学习的偏置项

    卷积层的两个重要性质:

  • *局部连接,在卷积层中每一个神经元都只和前一层中某个局部窗口内的神经元向量,构成一个局部连接网络。

  • 权重共享,作为参数的卷积核w(l)w^{(l)}对于第ll层的所有神经元都相同,可理解成一个卷积核只捕捉输入数据中一种特定的局部特征。

2.2.卷积层

    卷积层的作用是提取一个局部区域的特征,不同卷积层相等于不同特征提取器,为了充分利用图像局部信息,通常将神经元组织成三维结构神经层:高MM,宽NN,深DD特征映射(Feature Map)是一副图像经过卷积提取到的特征,每个特征都可以作为一类抽取的图像特征,为了提高卷积网络的表示能力,可以在不同的层使用不同特征映射。

    一个卷积层结构如下:

  1. 输入特征映射组χRM×N×D\chi \in R^{M \times N \times D}为三维张量(Tensor),其中每个切片(Slice)矩阵XdRM×NX^d \in R^{M \times N}为一个输入特征映射:1dD1 \le d \le D

  2. 输出特征映射组yRM×N×Dy \in R^{M^{'} \times N^{'} \times D}为三维张量,其中每个切片矩阵YPRM×NY_P \in R^{M^{'} \times N^{'}}为一个输出特征映射:1pP1 \le p \le P

  3. 卷积核WRU×V×P×DW \in R^{U \times V \times P \times D}为四维张量,其中每个切片矩阵Wp,dRU×VW^{p,d} \in R^{U \times V}为一个二维卷积核,1pP,1dD1 \le p \le P, 1 \le d \le D

    输出特征映射的计算:

Zp=WpX+bp=d=1DWp,dXd+bpZ^p = W^p \bigotimes X + b^p = \sum\limits_{d=1}^D W^{p,d} \bigotimes X^d + b^p

Yp=f(Zp)Y_p = f(Z^p)

  • WpRU×V×DW_p \in R^{U \times V \times D}为三维卷积核

  • f()f(\cdot)为非线性激活函数,一般使用ReLU函数

    在输入为χRM×N×D\chi \in R^{M \times N \times D},输出为yRM×N×Dy \in R^{M^{'} \times N^{'} \times D}的卷积层中,每一个输出特征映射要DD个卷积核和一个偏置,假设每个卷积核的大小为U×VU \times V,那么总共需要参数个数为:P×D×(U×V)+PP \times D \times (U \times V) + P

2.3.汇聚层

    汇聚层(Pooling Layer)又称为池化层,或子采样层(Subsampling Layer),它的作用是执行特征选择,降低特征数量,减少参数数量。问题:卷积层显著减少了网络连接中数量,但特征映射中神经元数量没减少,后边若接分类器,它的输入维度依然很高,容易过拟合。为解决该问题,就在卷积层后边加入了汇聚层,用来降低特征维度,避免过拟合。

  • 汇聚层输入特征映射组为:χRM×N×D\chi \in R^{M \times N \times D}

  • 每一个特征映射为:XdRM×N,1dDX^d \in R^{M \times N}, 1 \le d \le D,它可将其划分成很多区域Rm,nd,1mM,1nNR_{m,n}^d, 1 \le m \le M_{'}, 1 \le n \le N_{'}

    上述区域可重叠,也可不重叠,汇聚(Pooling)是指对每个区域进行下采样(Down Sampling)得到一个值,作为该区域的总览。

    常见的两种汇聚

  1. 最大汇聚(Maximum Pooling / Max Pooling):对一个区域,选择这个区域内所有神经元最大活性值作为这个区域的表示:

    ym,nd=maxiRm,ndxiy_{m,n}^d = \underset{i \in R_{m,n}^d}{\max} x_i

  2. 平均汇聚(Mean Pooling):一般是取区域内所有神经元活性值的平均值:

    ym,nd=1Rm,ndiRm,ndxiy_{m,n}^d = \frac{1}{|R_{m,n}^d|} \sum\limits_{i \in R_{m,n}^d} x_i

    目前主流的卷积网络中,汇聚层仅包含下采样操作,但在早期卷积网络中(如LeNet-5),会在汇聚层使用非线性激活函数:

Yd=f(wdYd+bd)Y^{'d} = f(w^dY^d + b^d)

  • YdY^{'d}是汇聚层输出

  • f()f(\cdot)是非线性激活函数

  • wd,bdw^d, b^d是可学习的标量权重和偏置项

过大的采样区域会减少神经元的数量,也会造成过多的信息损失。

2.4.卷积网络整体架构

    卷积层、汇聚层、全连接层:

    目前卷积网络倾向于使用小的卷积核(1×1,3×31 \times 1, 3 \times 3)以及更深的结构(层数N>50N > 50),而流行的卷积网络汇聚层的比例在降低,倾向于全卷积网络。

3.参数学习

    卷积网络中,参数为卷积核中的权重以及偏置项,和全连接前馈网络类似,卷积网络也可以使用反向传播算法执行参数学习。卷积神经网络中,主要包含两种不同功能的神经层:卷积层/汇聚层,只需计算权重和偏置项的梯度进行学习。

    第ll层第p(1pP)p(1 \le p \le P)个特征映射净输入:

Z(l,p)=d=1DW(l,p,d)X(l1,d)+b(l,p)Z^{(l,p)} = \sum\limits_{d = 1}^D W^{(l,p,d)} \bigotimes X^{(l-1,d)} + b^{(l,p)}

  • W(l,p,d)W^{(l,p,d)}b(l,p)b^{(l,p)}为卷积核以及偏置

  • ll层中公有P×DP \times D个卷积核和PP个偏置

    损失函数L关于第ll层的卷积核W(l,p,d)W^{(l,p,d)}的偏导数

Lb(l,p,d)=δ(l,p)X(l1,d)\frac{\partial L}{\partial b^{(l,p,d)}} = \delta^{(l,p)} \bigotimes X^{(l-1, d)}

    之中δ(l,p)=LZ(l,p)\delta^{(l,p)} = \frac{\partial L}{\partial Z^{(l,p)}}是损失函数关于第ll层的第pp个特征映射净输入Z(l,p)Z^{(l,p)}的偏导数,所以L关于第pp个偏置项b(l,p)b^{(l,p)}的偏导数

Lb(l,p)=i,j[δ(l,p)]i,j\frac{\partial L}{\partial b^{(l,p)}} = \sum\limits_{i,j}[\delta^{(l,p)}]_{i,j}

3.1.卷积网络反向传播算法

    分别计算卷积层/汇聚层的误差项。

3.1.1.汇聚层

    只需将l+1l+1层对应特征映射的误差项δ(l+1,p)\delta^{(l+1,p)}执行上采样操作,再和ll层映射的激活值偏导数逐元素相乘,就可以得到δ(l,p)\delta^{(l,p)}

δ(l,p)=fl(Z(l,p))up(δ(l+1,p))\delta^{(l,p)} = f_l^{'} (Z^{(l,p)}) \odot up(\delta^{(l+1,p)})

    flf_l^{'}为第ll层使用的激活函数,up为上采样函数(up sampling)

  • 如果下采样是最大汇聚,误差项中每个值会传递到前一层对应区域中最大值所在神经元,其他区域神经元误差为0。

  • 如果下采样是平均汇聚,误差中每个值被平均分配到前一层对应区域中的所有神经元。

3.1.2.卷积层

Z(l+1,p)=d=1DW(l+1,p,d)X(l,d)+b(l+1,p)Z^{(l+1,p)} = \sum\limits_{d = 1}^D W^{(l+1,p,d)} \bigotimes X^{(l,d)} + b^{(l+1,p)}

  • W(l+1,p,d)W^{(l+1,p,d)}b(l+1,p)b^{(l+1,p)}为第l+1l+1层卷积核以及偏置项

  • l+1l+1层中公有P×DP \times D个卷积核和PP个偏置项

    最终得到误差

δ(l,d)=fl(Z(l,d))P=1P(rot180(W(l+1,p,d))~δ(l+1,p))\delta^{(l,d)} = f_l^{'}(Z^{(l,d)}) \odot \sum\limits_{P = 1}^P (rot180(W^{(l+1,p,d)}) \tilde{\bigotimes} \delta^{(l+1,p)})

    ~\tilde{\bigotimes}宽卷积

剩余章节后期研究

4.几种典型卷积网络

  • LeNet-5

  • AlexNet

  • Inception网络(GoogLeNet)

  • 残差网络(Residual Network, ResNet)

5.其他卷积方式

  • 转置卷积(Transposed Convolution),也称反卷积(Deconvolution)

    • 微步卷积(Fractionally-Strided Convolution)

  • 空洞卷积(Atrous Convolution),也称膨胀卷积(Dilated Convolution)

最后更新于