[神经网络与深度学习][5][卷积神经网络]

第5章 卷积神经网络

一切都应该尽可能地简单,但不能过于简单

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

卷积神经网络最早主要是用来处理图像信息.在用全连接前馈网络来处理图像时,会存在以下两个问题

  1. 参数太多:会导致整个神经网络的训练效率非常低,也很容易出现过拟合
  2. 无法提取局部不变性特征:自然图像中的物体都具有局部不变性特征,比如尺度缩放、平移、旋转等操作不影响其语义信息.而全连接前馈网络难提取这些局部不变性特征,一般需要进行数据增强来提高性能.

卷积神经网络是受生物学上感受野机制的启发而提出的.感受野(Receptive Field)机制主要是指听觉、视觉等神经系统中一些神经元特性,即神经元只接受其所支配的刺激区域内的信号.例如,在视觉神经系统中,视觉皮层中的神经细胞的输出依赖于视网膜上的光感受器.视网膜上的光感受器受刺激兴奋时,将神经冲动信号传到视觉皮层,但不是所有视觉皮层中的神经元接受这些信号.一个神经元的感受野是指视网膜上的特定区域,只有这个区域内的刺激才能够激活该神经元.

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

卷积神经网络主要使用在图像和视频分析的各种任务(比如图像分类人脸识别物体识别图像分割等)上,其准确率一般也远远超出了其他的神经网络模型.近年来卷积神经网络也广泛地应用到自然语言处理、推荐系统等领域.

5.1 卷积

5.1.1 卷积的定义

卷积(Convolution),也叫褶积,是分析数学中一种重要的运算.在信号处理图像处理中,经常使用一维或二维卷积.

5.1.1.1 一维卷积

5.1.1.2 二维卷积

给定一个图像 𝑿R𝑀×𝑁𝑿 ∈ ℝ^{𝑀×𝑁} 和一个滤波器WR𝑈×𝑉W ∈ ℝ^{𝑈×𝑉} ,一般𝑈<<𝑀,𝑉<<𝑁𝑈 << 𝑀, 𝑉 << 𝑁,其卷积

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

输入信息𝑿 和滤波器𝑾 的二维卷积定义为

𝒀=𝑾𝑿𝒀 = 𝑾 ∗ 𝑿

注意:卷积操作中,滤波器翻转了180度,仔细看上图1和-1分别乘了哪个元素

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

5.1.2 互相关

在计算卷积的过程中,需要进行卷积核翻转.在具体实现上,一般会以互相关操作来代替卷积,从而会减少一些不必要的操作或开销.

给定一个图像𝑿R𝑀×𝑁𝑿 ∈ ℝ^{𝑀×𝑁} 和卷积核𝑾RU×V𝑾 ∈ ℝ^{U×V} ,它们的互相关

𝑦𝑖𝑗=u=1Uv=1Vwuvxi+u1,j+v1𝑦_{𝑖𝑗} = \sum ^U _{u=1} \sum ^V _{v=1} w_{uv}x_{i+u-1,j+v-1}

和公式(5.7) 对比可知,互相关和卷积的区别仅仅在于卷积核是否进行翻转.因此互相关也可以称为不翻转卷积.

𝒀=𝑾𝑿=rot180(𝑾)𝑿𝒀 = 𝑾 ⊗ 𝑿 = rot180(𝑾) ∗ 𝑿

其中 表示互相关运算rot180(⋅) 表示旋转180 度YRMU+1,NV+1Y ∈ ℝ^{M−U+1,N−V+1}输出矩阵

神经网络中使用卷积是为了进行特征抽取,卷积核是否进行翻转和其特征抽取的能力无关.特别是当卷积核可学习的参数时,卷积互相关能力上等价的.因此,为了实现上(或描述上)的方便起见,我们用互相关来代替卷积.事实上,很多深度学习工具中卷积操作其实都是互相关操作.

5.1.3 卷积的变种

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

步长(Stride)是指卷积核滑动时的时间间隔.图5.4a给出了步长为2 的卷积示例.

零填充(Zero Padding)是在输入向量两端进行补零.图5.4b给出了输入的两端各补一个零后的卷积示例

5.2 卷积神经网络

卷积神经网络一般由卷积层汇聚层全连接层构成.

5.2.1 用卷积代替全连接

全连接前馈神经网络中,权重矩阵的参数非常,训练的效率会非常

如果采用卷积代替全连接,第𝑙 层的净输入𝒛(𝑙)𝒛^{(𝑙)} 为第𝑙 − 1 层活性值𝒂(𝑙1)𝒂^{(𝑙−1)}卷积核w(𝑙)RKw^{(𝑙)} ∈ ℝ^K的卷积,即

z(𝑙)=w(𝑙)a(𝑙1)+b(𝑙),z(𝑙) = w(𝑙) ⊗ a(𝑙−1) + b(𝑙),

其中卷积核w(𝑙)RKw^{(𝑙)} ∈ ℝ^K可学习权重向量𝑏(𝑙)R𝑏^{(𝑙)} ∈ ℝ可学习偏置

卷积层有两个很重要的性质:

  • 局部连接:在卷积层(假设是第𝑙 层)中的每一个神经元都只和下一层(第𝑙 − 1层)中某个局部窗口内的神经元相连,构成一个局部连接网络.如图5.5b所示,卷积层和下一层之间的连接数大大减少,由原来的𝑀𝑙×𝑀𝑙1𝑀^𝑙 × 𝑀^{𝑙−1}个连接变为𝑀𝑙×𝐾𝑀^𝑙 × 𝐾个连接,𝐾 为卷积核大小.
  • 权重共享:作为参数的卷积核𝒘(𝑙) 对于第𝑙 层的所有的神经元都是相同的,可以理解为一个卷积核只捕捉输入数据中的一种特定的局部特征

由于局部连接和权重共享,卷积层的参数只有一个𝐾 维的权重𝒘(𝑙)𝒘^{(𝑙)}1 维的偏置𝑏(𝑙)𝑏^{(𝑙)},共𝐾 + 1 个参数.参数个数神经元的数量无关.此外,第𝑙 层的神经元个数不是任意选择的,而是满足𝑀𝑙=𝑀𝑙1𝐾+1𝑀^𝑙 = 𝑀^{𝑙−1} − 𝐾 + 1

5.2.2 卷积层

卷积层的作用是提取一个局部区域的特征不同的卷积核相当于不同的特征提取器

为了更充分地利用图像的局部信息,通常将神经元组织为三维结构的神经层,其大小为高度𝑀× 宽度𝑁× 深度𝐷,由𝐷 个𝑀 × 𝑁 大小的特征映射构成.

特征映射(Feature Map)为一幅图像(或其他特征映射)在经过卷积提取到特征每个特征映射可以作为一类抽取的图像特征.为了提高卷积网络的表示能力,可以在每一层使用多个不同的特征映射,以更好地表示图像的特征.

不失一般性,假设一个卷积层的结构如下:

  1. 输入特征映射组XR𝑀×𝑁×𝐷X ∈ ℝ^{𝑀×𝑁×𝐷}三维张量(Tensor),其中每个切片(Slice)矩阵𝑿𝑑R𝑀×𝑁𝑿^𝑑 ∈ ℝ^{𝑀×𝑁}为一个输入特征映射,1 ≤ 𝑑 ≤ 𝐷;
  2. 输出特征映射组YR𝑀×𝑁×𝑃Y ∈ ℝ^{𝑀′×𝑁′×𝑃}三维张量,其中每个切片矩阵Y𝑝R𝑀×𝑁Y^𝑝 ∈ ℝ^{𝑀′×𝑁′} 为一个输出特征映射,1 ≤ 𝑝 ≤ 𝑃;
  3. 卷积核WR𝑈×𝑉×𝑃×𝐷W ∈ ℝ^{𝑈×𝑉 ×𝑃×𝐷}四维张量,其中每个切片矩阵𝑾p,dR𝑈×𝑉𝑾^{p,d} ∈ ℝ^{𝑈×𝑉} 为一个二维卷积核,1 ≤ 𝑝 ≤ 𝑃, 1 ≤ 𝑑 ≤ 𝐷.

为了计算输出特征映射𝒀p𝒀^p,用卷积核𝑾p,1,𝑾𝑝,2,,𝑾𝑝,𝐷𝑾^{p,1}, 𝑾^{𝑝,2}, ⋯ , 𝑾^{𝑝,𝐷}分别输入特征映射X1,X2,,XDX^1, X^2, ⋯ , X^D 进行卷积,然后将卷积结果相加,并加上一个标量偏置𝑏得到卷积层的净输入ZpZ^p,再经过非线性激活函数后得到输出特征映射𝒀𝑝.

Zp=WpX+𝑏𝑝=d=1DWp,dXd+𝑏𝑝Z^p = W^p ⊗ X + 𝑏^𝑝 = \sum ^D _{d=1} W^{p,d} ⊗ X^d + 𝑏^𝑝

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

其中WpR𝑈×𝑉×𝐷W^p ∈ ℝ^{𝑈×𝑉 ×𝐷}三维卷积核,𝑓(⋅) 为非线性激活函数,一般用ReLU 函数

整个计算过程如图5.7所示.如果希望卷积层输出P 个特征映射,可以将上述计算过程重复𝑃 次,得到𝑃 个输出特征映射Y1,Y2,,Y𝑃Y^1, Y^2, ⋯ , Y^𝑃

在输入为𝒳R𝑀×𝑁×𝐷𝒳 ∈ ℝ^{𝑀×𝑁×𝐷},输出为𝒴R𝑀×𝑁×𝑃𝒴 ∈ ℝ^{𝑀′×𝑁′×𝑃}的卷积层中,每一个输出特征映射都需要𝐷 个卷积核以及一个偏置.假设每个卷积核的大小𝑈 × 𝑉,那么共需要𝑃×𝐷×(𝑈×𝑉)+𝑃𝑃 × 𝐷 × (𝑈 × 𝑉) + 𝑃 个参数.

5.2.3 汇聚层

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

可以在卷积层之后加上一个汇聚层,从而降低特征维数,避免过拟合.

假设汇聚层的输入特征映射组XR𝑀×𝑁×𝐷X ∈ ℝ^{𝑀×𝑁×𝐷},对于其中每一个特征映射𝑿𝑑R𝑀×𝑁𝑿^𝑑 ∈ ℝ^{𝑀×𝑁} , 1 ≤ 𝑑 ≤ 𝐷,将其划分为很多区域𝑅m,nd𝑅^d_{m,n}, 1 ≤ 𝑚 ≤ 𝑀′, 1 ≤ 𝑛 ≤ 𝑁′,这些区域可以重叠,也可以不重叠.汇聚(Pooling)是指对每个区域进行下采样(Down Sampling)得到一个值,作为这个区域的概括.

常用的汇聚函数有两种:最大汇聚平均汇聚

图5.8给出了采样最大汇聚进行子采样操作的示例.可以看出,汇聚层不但可以有效地减少神经元的数量,还可以使得网络对一些小的局部形态改变保持不变性,并拥有更大的感受野

典型的汇聚层是将每个特征映射划分为2 × 2 大小不重叠区域,然后使用最大汇聚的方式进行下采样.过大的采样区域会急剧减少神经元的数量,也会造成过多信息损失

5.2.4 卷积网络的整体结构

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

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

5.3 参数学习

卷积网络中,参数卷积核中权重以及偏置.和全连接前馈网络类似,卷积网络也可以通过误差反向传播算法来进行参数学习

不失一般性,对第𝑙 层为卷积层,第𝑙 − 1 层输入特征映射X(𝑙1)R𝑀×𝑁×𝐷X^{(𝑙−1)} ∈ℝ^{𝑀×𝑁×𝐷},通过卷积计算得到第𝑙 层的特征映射净输入Z(𝑙)R𝑀×𝑁×𝑃Z^{(𝑙)} ∈ ℝ^{𝑀′×𝑁′×𝑃}第𝑙层第𝑝(1 ≤ 𝑝 ≤ 𝑃) 个特征映射净输入

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

在卷积网络中,每层参数的梯度 依赖于 其所在层的误差项𝛿^{(𝑙,𝑝)}.𝛿^{(𝑙,𝑝)} = \frac {𝜕L} {𝜕𝒁^{(𝑙,𝑝)}}损失函数关于第𝑙 层第𝑝 个特征映射净输入𝒁(𝑙,𝑝) 的偏导数

损失函数LL关于第𝑙层卷积核𝑾(𝑙,𝑝,𝑑)𝑾^{(𝑙,𝑝,𝑑)}偏导数

\frac {𝜕L} {𝜕𝑾(𝑙,𝑝,𝑑)} = \frac {𝜕ℒ} {𝜕𝒁(𝑙,𝑝)} ⊗ 𝑿^{(𝑙−1,𝑑)} = 𝛿^{(𝑙,𝑝)} ⊗ 𝑿^{(𝑙−1,𝑑)}

损失函数关于第𝑙 层第𝑝 个偏置𝑏(𝑙,𝑝)偏导数

\frac {𝜕L} {𝜕𝑏(𝑙,𝑝)} = \sum _{i,j} [𝛿^{(𝑙,𝑝)}]_{𝑖,𝑗}

5.3.1 卷积神经网络的反向传播算法

卷积层和汇聚层中误差项的计算有所不同,因此我们分别计算其误差项.

5.3.1.1 汇聚层误差项计算

第𝑙 层的第𝑝 个特征映射的误差项𝛿(𝑙,𝑝) 的具体推导过程如下:

其中𝑓𝑙()𝑓′_𝑙 (⋅) 为第𝑙 层使用的激活函数导数,up 为上采样函数(up sampling),与汇聚层中使用的下采样操作刚好相反.

5.3.1.2 卷积层误差项计算

第𝑙 层的第𝑑 个特征映射的误差项𝛿(𝑙,𝑑) 的具体推导过程如下

其中$\hat ⊗ $为宽卷积

5.4 几种典型的卷积神经网络

5.4.1 LeNet-5

基于LeNet-5 的手写数字识别系统在20 世纪90 年代被美国很多银行使用,用来识别支票上面的手写数字.LeNet-5网络结构如图5.10所示

LeNet-5 共有7 层,接受输入图像大小32 × 32 = 1 024,输出对应10 个类别的得分.LeNet-5 中的每一层结构如下:

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

一般来说,卷积层的每一个输出特征映射依赖所有输入特征映射,相当于卷积层的输入输出特征映射之间是全连接的关系.实际
上,这种全连接关系不是必须的.我们可以让每一个输出特征映射依赖少数几个输入特征映射

定义一个连接表(Link Table)𝑇 来描述输入和输出特征映射之间的连接关系.在LeNet-5 中,连接表的基本设定如图5.11所示.

  • C3 层的第0-5 个特征映射依赖于S2 层的特征映射组的每3 个连续子集
  • 第6-11 个特征映射依赖于S2 层的特征映射组的每4 个连续子集
  • 第12-14 个特征映射依赖于S2 层的特征映射的每4 个不连续子集
  • 第15 个特征映射依赖于S2 层的所有特征映射.

如果第𝑝 个输出特征映射依赖于第𝑑 个输入特征映射,则Tp,d=1T_{p,d} = 1,否则为0.𝒀𝑝 为

𝒀p=𝑓(D,Tp,d=1Wp,d𝑿d+bp)𝒀^p = 𝑓( \sum _{D, T_{p,d} = 1} W^{p,d} ⊗ 𝑿^d + b^p)

其中𝑇 为𝑃 × 𝐷 大小的连接表.假设连接表𝑇 的非零个数为𝐾,每个卷积核的大小为𝑈 × 𝑉,那么共需要𝐾 × 𝑈 × 𝑉 + 𝑃 参数.

5.4.2 AlexNet

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

AlexNet 的结构如图5.12所示,包括5 个卷积层3 个汇聚层3 个全连接层(其中最后一层是使用Softmax 函数输出层).因为网络规模超出了当时的单个GPU 的内存限制,AlexNet 将网络拆为两半,分别放在两个GPU 上,GPU 间只在某些层(比如第3 层)进行通信

AlexNet 的输入224 × 224 × 3 的图像输出1 000 个类别的条件概率,具体结构如下: 这里的卷积核使用四维张量来描述.

  1. 第一个卷积层,使用两个大小为11 × 11 × 3 × 48 的卷积核,步长𝑆 = 4,零填充𝑃 = 3,得到两个大小为55 × 55 × 48 的特征映射组
  2. 第一个汇聚层,使用大小为3 × 3最大汇聚操作,步长𝑆 = 2,得到两个27 × 27 × 48 的特征映射组.这里的汇聚操作是有重叠的,以提取更多的特征.
  3. 第二个卷积层,使用两个大小为5 × 5 × 48 × 128 的卷积核,步长𝑆 = 1,零填充𝑃 = 2,得到两个大小为27 × 27 × 128 的特征映射组.
  4. 第二个汇聚层,使用大小为3 × 3 的最大汇聚操作,步长𝑆 = 2,得到两个大小为13 × 13 × 128 的特征映射组.
  5. 第三个卷积层为两个路径的融合,使用一个大小为3 × 3 × 256 × 384的卷积核,步长𝑆 = 1,零填充𝑃 = 1,得到两个大小为13 × 13 × 192 的特征映射组.
  6. 第四个卷积层,使用两个大小为3 × 3 × 192 × 192 的卷积核,步长𝑆 = 1,零填充𝑃 = 1,得到两个大小为13 × 13 × 192 的特征映射组.
  7. 第五个卷积层,使用两个大小为3 × 3 × 192 × 128 的卷积核,步长𝑆 = 1,零填充𝑃 = 1,得到两个大小为13 × 13 × 128 的特征映射组.
  8. 第三个汇聚层,使用大小为3 × 3 的最大汇聚操作,步长𝑆 = 2,得到两
    个大小为6 × 6 × 128 的特征映射组.
  9. 三个全连接层,神经元数量分别为4 096、4 096 和1 000.此外,AlexNet 还在前两个汇聚层之后进行了局部响应归一化(Local Response Normalization,LRN)以增强模型的泛化能力

5.4.3 Inception网络

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

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

Inception 网络有多个版本,其中最早的Inception v1 版本就是非常著名的GoogLeNetGoogLeNet 由9 个Inception v1 模块和5 个汇聚层以及其他一些卷积层和全连接层构成,总共为22 层网络,如图5.14所示.

Inception v3 网络用多层的小卷积核替换 大的卷积核,以减少计算量参数量,并保持感受野不变

5.4.4 残差网络

残差网络(Residual Network,ResNet)通过给非线性的卷积层增加直连边(Shortcut Connection)(也称为残差连接(Residual Connection))的方式提高信息的传播效率

图5.15给出了一个典型的残差单元示例.残差单元由多个级联的(等宽)卷积层和一个跨层的直连边组成,再经过ReLU 激活后得到输出

下面解释残差结构好处

假设在一个深度网络中,我们期望一个非线性单元(可以为一层或多层的卷积层)𝑓(𝒙; 𝜃) 去逼近一个目标函数为ℎ(𝒙).如果将目标函数拆分成两部分:恒等函数(Identity Function)𝒙 和残差函数(Residue Function)ℎ(𝒙) − 𝒙.

h(x)=(x)+(h(x)x)h(x) = (x) + (h(x) - x)

根据通用近似定理,一个由神经网络构成的非线性单元足够的能力来近似逼近原始目标函数逼近残差函数,但实际中后者更容易学习.因此,原来的优化问题可以转换为:让非线性单元𝑓(𝒙; 𝜃)近似残差函数ℎ(𝒙) − 𝒙,并用𝑓(𝒙; 𝜃) + 𝒙逼近ℎ(𝒙)

5.5 其他卷积方式

5.5.1 转置卷积

我们一般可以通过卷积操作来实现高维特征低维特征转换.比如在一维卷积中,一个5 维的输入特征,经过一个大小为3 的卷积核,其输出为3 维特征.但在一些任务中,我们需要将低维特征映射到高维特征,并且依然希望通过卷积操作来实现,这时我们可以采用转置卷积

假设有一个高维向量𝒙Rd𝒙 ∈ ℝ^d 和一个低维向量zRpz∈ ℝ^p,𝑝 < 𝑑.如果用仿射变换(Affine Transformation)来实现高维到低维的映射

z=Wxz = Wx

其中WR𝑝×𝑑W ∈ ℝ^{𝑝×𝑑}转换矩阵

我们也可以很容易地通过转置𝑾 来实现低维到高维的反向映射

x=WTzx = W^Tz

卷积操作也可以写为仿射变换的形式.假设一个5 维向量𝒙,经过大小为3的卷积核𝒘=[𝑤1,𝑤2,𝑤3]T𝒘 = [𝑤1, 𝑤2, 𝑤3]^T 进行卷积,得到3 维向量𝒛.卷积操作可以写为

image-20200922132111858

如果要实现3 维向量zz到5 维向量xx的映射,可以通过仿射矩阵转置实现,即

从仿射变换的角度来看两个卷积操作𝒛 = 𝒘⊗𝒙和x=rot180(w)^zx = rot180(w)\hat ⊗ z也是形式上的转置关系. 因此,我们将低维特征映射到高维特征的卷积操作称为转置卷积(Transposed Convolution),也称为反卷积(Deconvolution)

对一个𝑀 维的向量𝒛,和大小为𝐾 的卷积核,如果希望通过卷积操作来映射到更高维的向量,只需要对向量𝒛进行两端补零𝑃 = 𝐾 − 1,然后进行卷积,可以得到𝑀 + 𝐾 − 1 维的向量.( 即宽卷积.)

5.5.1.1 微步卷积

我们也可以通过使转置卷积步长𝑆 < 1来实现上采样操作,大幅提高特征维数.步长𝑆 < 1 的转置卷积也称为微步卷积(Fractionally-Strided Convolution).为了实现微步卷积,我们可以在输入特征之间插入0 来间接地使得步长变小.

5.5.2 空洞卷积

对于一个卷积层,如果希望增加输出单元感受野,一般可以通过三种方式实现:

  1. 增加卷积核大小

  2. 增加层数,比如两层3 × 3 的卷积可以近似一层5 × 5 卷积的效果;

  3. 在卷积之前进行汇聚操作

前两种方式会增加参数数量,而第三种方式会丢失一些信息

空洞卷积(Atrous Convolution)是一种不增加参数数量, 同时增加输出单元感受野的一种方法,也称为膨胀卷积(Dilated Convolution).

空洞卷积通过给卷积核 **插入“空洞”**来变相地增加其大小.如果在卷积核的每两个元素之间插入𝐷 − 1 个空洞,卷积核的有效大小为

𝐾=𝐾+(𝐾1)×(𝐷1),𝐾′ = 𝐾 + (𝐾 − 1) × (𝐷 − 1),

其中𝐷 称为膨胀率(Dilation Rate).当𝐷 = 1 时卷积核为普通的卷积核

图5.18给出了空洞卷积的示例.