第五章 卷积神经网络
一切都应该尽可能地简单,但不能过于简单。
— 艾伯特· 爱因斯坦
卷积神经网络(convolutional neural network,CNN 或 ConvNet)是一种
具有局部连接、权重共享等特性的深层前馈神经网络。
卷积神经网络最早是主要用来处理图像信息。如果用全连接前馈网络来处
理图像时,会存在以下两个问题:
(1)参数太多: 如果输入图像大小为100× 100× 3(即图像高度为100,宽
度为100,3 个颜色通道:RGB)。在全连接前馈网络中,第一个隐藏层的每个神
经元到输入层都有100× 100× 3 = 30, 000 个相互独立的连接,每个连接都对应
一个权重参数。随着隐藏层神经元数量的增多,参数的规模也会极具增加。这
会导致整个神经网络的训练效率会非常低,也很容易出现过拟合。
(2)局部不变性特征:自然图像中的物体都具有局部不变性特征,比如在
尺度缩放、平移、旋转等操作不影响其语义信息。而全连接前馈网络很难提取
这些局部不变特征,一般需要进行数据增强来提高性能。
卷积神经网络是受生物学上感受野的机制而提出。感受野(receptive field)
主要是指听觉、视觉等神经系统中一些神经元的特性,即神经元只接受其所支
配的刺激区域内的信号。在视觉神经系统中,视觉皮层中的神经细胞的输出依
赖于视网膜上的光感受器。视网膜上的光感受器受刺激兴奋时,将神经冲动信
号传到视觉皮层,但不是所有视觉皮层中的神经元都会接受这些信号。一个神
经元的感受野是指视网膜上的特定区域,只有这个区域内的刺激才能够激活该
94
2017 年 11 月 28 日
第五章 卷积神经网络
David Hubel 和 Torsten
Wiesel 在此方面的贡献,
与 1981 年获得诺贝尔生
理学或医学奖。
神经元。David Hubel 和 Torsten Wiesel 在 1959 年发现,在猫的初级视觉皮层
中存在两种细胞:简单细胞和复杂细胞,这两种细胞承担不同层次的视觉感知
功能 [Hubel and Wiesel, 1959, 1962]。简单细胞的感受野是狭长型的,每个简
单细胞只对感受野中特定角度(orientation)的光带敏感,而复杂细胞对于感受
野中以特定方向(direction)移动的某种角度(orientation)的光带敏感。
受此启发,1980 年,福岛邦彦(Kunihiko Fukushima)提出了一种带卷积和
子采样操作的多层神经网络:新知机(Neocognitron)[Fukushima, 1980]。但当
时还没有反向传播算法,新知机采用了无监督学习的方式来训练。Yann LeCun
在 1989 年将反向传播算法引入了卷积神经网络 [LeCun et al., 1989],并在手写
体数字识别上取得了很大的成功 [LeCun et al., 1998]。
目前的卷积神经网络一般是由卷积层、汇聚层和全连接层交叉堆叠而成的
全连接层一般在卷积网
络的最顶层。
前馈神经网络,使用反向传播算法进行训练。卷积神经网络有三个结构上的特
性:局部连接,权重共享以及子采样。这些特性使得卷积神经网络具有一定程
度上的平移、缩放和旋转不变性。和前馈神经网络相比,卷积神经网络的参数
更少。
卷积神经网络主要使用在图像和视频分析的各种任务上,比如图像分类、人
脸识别、物体识别、图像分割等,其准确率一般也远远超出了其它的神经网络
模型。近年来卷积神经网络也广泛地应用到自然语言处理、推荐系统等领域。
5.1 卷积
卷积(convolution),也叫摺积,是分析数学中一种重要的运算。在信号
这里我们只考虑离散序
列的情况。
处理或图像处理中,经常使用一维或二维卷积。
一维卷积 一维卷积经常用在信号处理中,用于计算信号的延迟累积。假设一
个信号发生器每个时刻 t 产生一个信号 xt,其信息的衰减率为 fk,即在 k − 1 个
时间步长后,信息为原来的 fk 倍。假设 f1 = 1, f2 = 1/2, f3 = 1/4,那么在时
刻 t 收到的信号 yt 为当前时刻产生的信息和以前时刻延迟信息的叠加,
yt = 1 × xt + 1/2 × xt−1 + 1/4 × xt−2
= f1 × xt + f2 × xt−1 + f3 × xt−2
(5.1)
(5.2)
邱锡鹏:《神经网络与深度学习》
https://nndl.github.io/
5.1 卷积
2017 年 11 月 28 日
95
图 5.1: 一维卷积示例。滤波器为[−1, 0, 1],连接边上的数字为滤波器中的权重。
3∑
k=1
=
wk · xt−k+1.
(5.3)
我们把 f1, f2,··· 称为滤波器(filter)或卷积核(convolution kernel)。假
设滤波器长度为 m,它和一个信号序列 x1, x2,··· 的卷积为
m∑
yt =
fk · xt−k+1,
信号序列 x 和滤波器 w 的卷积定义为
k=1
y = w ⊗ x,
其中⊗ 表示卷积运算。
(5.4)
(5.5)
一般情况下滤波器的长度 m远小于信号序列长度 n。当滤波器fk = 1/m, 1 ≤
k ≤ m 时,卷积相当于信号序列的移动平均。图5.4给出了一维卷积示例。
二维卷积 卷积也经常用在图像处理中。因为图像为一个两维结构,所以需要
将一维卷积进行扩展。给定一个图像 X ∈ RM×N ,和滤波器 W ∈ Rm×n,一般
m << M, n << N ,其卷积为
m∑
n∑
yij =
wuv · xi−u+1,j−v+1.
(5.6)
u=1
v=1
图5.2给出了二维卷积示例。常用的均值滤波(mean filter)就是当前位置
的像素值设为滤波器窗口中所有像素的平均值,也就是 fuv = 1
mn 。
邱锡鹏:《神经网络与深度学习》
https://nndl.github.io/
112-11-2110-1-110-1210-1110-1110-10
96
2017 年 11 月 28 日
第五章 卷积神经网络
图 5.2: 二维卷积示例。
在图像处理中,卷积经常作为特征提取的有效方法。一幅图像在经过卷积
操作后得到结果称为特征映射(feature map)。图5.3给出在图像处理中几种常
用的滤波器,以及其对应的特征映射。
5.1.1 互相关
在机器学习和图像处理领域,卷积的主要功能是在一个图像(或某种特征)
上滑动一个卷积核(即滤波器),通过卷积操作得到一组新的特征。在计算卷积
翻转就是从两个维度(从
上到下、从左到右)颠倒
次序,即旋转 180 度。
互相关和卷积的区别也
可以理解为图像是否进
行翻转。
的过程中,需要进行卷积核翻转。在具体实现上,一般会以互相关操作来代替
卷积,从而会减少一些不必要的操作或开销。互相关(cross-correlation)是一
个衡量两个序列相关性的函数,通常是用滑动窗口的点积计算来实现。给定一
个图像 X ∈ RM×N 和卷积核 W ∈ Rm×n,它们的互相关为
m∑
n∑
yij =
wuv · xi+u−1,j+v−1.
(5.7)
u=1
v=1
和公式(5.6) 对比可知,互相关和卷积的区别在于卷积核仅仅是否进行翻转。因
此互相关也可以称为不翻转卷积。
在神经网络中使用卷积是为了进行特征抽取,卷积核是否进行翻转和其特
征抽取的能力无关。特别是当卷积核是可学习的参数时,卷积和互相关是等价
的。因此,为了实现上(或描述上)的方便起见,我们用互相关来代替卷积。事
实上,很多深度学习工具中卷积操作其实都是互相关操作。
公式 (5.7) 可以表述为
邱锡鹏:《神经网络与深度学习》
Y = W ⊗ X,
(5.8)
https://nndl.github.io/
102-112-1101111-3112-10111011001000-100=-12002-204-1001000100
5.1 卷积
2017 年 11 月 28 日
97
图 5.3: 图像处理中几种常用的滤波器示例。最上面的滤波器为高斯滤波器,中
间和最下面的过滤器为边缘检测滤波器。
其中 Y ∈ RM−m+1,N−n+1 为输出矩阵。
5.1.2 卷积的变种
在卷积的标准定义基础上,还可以引入滤波器的滑动步长和零填充来增加
卷积的多样性,可以更灵活地进行特征抽取。
滤波器的步长(stride)是指滤波器在滑动时的时间间隔。图5.4a给出了步
长为 2 的卷积示例。
零填充(zero padding)是在输入向量两端进行补零。图5.4b给出了输入的
邱锡鹏:《神经网络与深度学习》
https://nndl.github.io/
原始图像0101-410101161811618141811618116011-101-1-10滤波器===输出图像
98
2017 年 11 月 28 日
第五章 卷积神经网络
(a) 步长 s = 2
(b) 零填充 p = 1
图 5.4: 卷积的步长和零填充。
两端各补一个零后的卷积示例。
假设卷积层的输入神经元个数为 n,卷积大小为 m,步长(stride)为 s,输
入神经元两端各填补 p 个零(zero padding),那么该卷积层的神经元数量为
(n − m + 2p)/s + 1。
一般常用的卷积有一下三类:
• 窄卷积(narrow convolution):步长 s = 1,两端不补零 p = 0,卷积后输
通常可以通过选择合适
的卷积大小以及步长来
使得 (n− m + 2p)/s + 1
为整数。
• 宽卷积(wide convolution):步长 s = 1,两端补零 p = m − 1,卷积后
出长度为 n − m + 1。
输出长度 n + m − 1。
• 等长卷积(equal-width convolution):步长 s = 1,两端补零 p = (m−1)/2,
卷积后输出长度 n。图5.4b就是一个等长卷积示例。
除了特别声明外,一般说的卷积默认为窄卷积。
邱锡鹏:《神经网络与深度学习》
https://nndl.github.io/
112-11-31-110112-11-3100-1-12120-3
5.1 卷积
2017 年 11 月 28 日
99
5.1.3 卷积的数学性质
卷积有很多很好的数学性质。在本节中,我们介绍一些二维卷积的数学性
质,但是这些数学性质同样可以适用到一维卷积的情况。
交换性
如果不限制两个卷积信号的长度,卷积是具有交换性的,即x⊗ y = y⊗ x。
当输入信息和卷积核有固定长度时,它们的宽卷积依然具有交换性。
对于两维图像 X ∈ RM×N 和卷积核 W ∈ Rm×n,对图像 X 的两个维度进
行零填充,两端各补 m − 1 和 n − 1 个零,得到全填充(full padding)的图像
˜X ∈ R(M+2m−2)×(N+2n−2)。
图像 X 和卷积核 W 的宽卷积(wide convolution)定义为
˜Y = W ˜⊗X
= W ⊗ ˜X,
W ˜⊗X = X ˜⊗W.
其中 ˜⊗ 为宽卷积操作。
宽卷积具有交换性,即
导数
(5.9)
(5.10)
(5.11)
假设 Y = W ⊗ X,其中 X ∈ RM×N ,W ∈ Rm×n,函数 f(Y ) ∈ R 为一个
标量函数,则
∂f(Y )
∂wuv
=
=
=
M−m+1∑
M−m+1∑
M−m+1∑
i=1
i=1
N−n+1∑
N−n+1∑
N−n+1∑
j=1
j=1
i=1
j=1
∂yij
∂wuv
∂f(Y )
∂yij
xi+u−1,j+v−1
∂f(Y )
∂yij
∂f(Y )
∂yij
xu+i−1,v+j−1
(5.12)
(5.13)
(5.14)
邱锡鹏:《神经网络与深度学习》
https://nndl.github.io/
100
2017 年 11 月 28 日
第五章 卷积神经网络
从公式 (5.14) 可以看出,f(Y ) 关于 W 的偏导数为 X 和 ∂f(Y )
∂Y 的卷积
∂f(Y )
∂W
⊗ X.
∂Y
= ∂f(Y )
N−n+1∑
N−n+1∑
j=1
∂yij
∂xst
∂f(Y )
∂yij
同理得到,
∂f(Y )
∂xst
M−m+1∑
M−m+1∑
i=1
=
=
ws−i+1,t−j+1
i=1
j=1
(5.15)
(5.16)
(5.17)
∂f(Y )
∂yij
,
其中当(s− i + 1) < 1,或(s− i + 1) > m,或(t− j + 1) < 1,或(t− j + 1) > n
时,ws−i+1,t−j+1,即相当于对 W 进行了 p = (M − m, N − n) 的零填充。
从公式(5.17) 可以看出,f(Y ) 关于 X 的偏导数为 W 和 ∂f(Y )
∂Y 的宽卷积。公
式 (5.17) 中的卷积是真正的卷积而不是互相关,为了一致性,我们用互相关的
“卷积”,即
∂f(Y )
∂X
= rot180( ∂f(Y )
)˜⊗W
= rot180(W)˜⊗ ∂f(Y )
∂Y
∂Y
(5.18)
(5.19)
.
5.2 卷积神经网络
5.2.1 用卷积来代替全连接
在全连接前馈神经网络中,如果第 l 层有 nl 个神经元,第 l − 1 层有 n(l−1)
个神经元,连接边有 n(l) × n(l−1) 个,也就是权重矩阵有 n(l) × n(l−1) 个参数。
当 m 和 n 都很大时,权重矩阵的参数非常多,训练的效率会非常低。
如果采用卷积来代替全连接,第 l 层的净输入z(l) 为第 l − 1 层活性值a(l−1)
和滤波器 w(l) ∈ Rm 的卷积,即
z(l) = w(l) ⊗ a(l−1) + b(l),
(5.20)
其中滤波器 w(l) 为权重向量,b(l) ∈ Rnl−1
为偏置。
根据卷积的定义,卷积层有两个很重要的性质:
邱锡鹏:《神经网络与深度学习》
https://nndl.github.io/