11. 基于卷积神经网络的模型
卷积神经网络是一种经典的神经计算模型,在计算机视觉等领域已经得到广
应用。通过卷积、池化等一系列操作,卷积神经网络可以很好地对输入数据进行
征提取。这个过程也与图像和语言加工中局部输入信号的处理有着天然的联系。
积操作还可以被多次执行,形成多层卷积神经网络,进而进行更高层次的特征抽象。
在自然语言处理中,卷积神经网络也是受关注的模型之一。本章将介绍基
卷积神经网络的机器翻译模型,不仅会重点介绍如何利用卷积神经网络构建端到
翻译模型,也会对一些机器翻译中改进的卷积神经网络结构进行讨论。
11.1 卷积神经网络
卷积神经网络Convolutional Neural NetworkCNN是一种前馈神经网络,由若
干的卷积层与池化层组成。早期,卷积神经网络被应用在语音识别任务
[492]
,之后
在图像处理领域取得了很好的效果
[493, 494]
。近年来,卷积神经网络已经成为语音、自
然语言处理、图像处理任务的基础框架
[423, 495, 496, 497, 498]
在自然语言处理领域,卷积神
经网络已经得到广泛应用,在文本分类
[497, 498, 499]
、情感分析
[500]
、语言建模
[501, 502]
、机
器翻译
[24, 451, 453, 503, 504]
等任务中取得不错的成绩。
11.1展示了全连接层和卷积层的结构对比,可以看到在全连接层中,模型考虑
了所有的输入,层输出中的每一个元素都依赖于所有输入。这种全连接层适用于
多数任务,但是当处理图像这种网格数据的时候,规模过大的数据会导致模型参
量过大,难以处理。其次,在一些网格数据中,通常具有局部不变性的特征,比如图
388 Chapter 11. 基于卷积神经网络的模型 肖桐 朱靖波
像中不同位置的相同物体,语言序列中相同的 n-gram 等。而全连接网络很难提取这
些局部不变性特征。为此,一些研究人员提出使用卷积层来替换全连接层
[505, 506]
相比络,卷最大Locally Con-
nected)和权值共享Weight Sharing)的特性。如图11.1(b),卷积层中每个神经元只
响应周围部分的局部输入特征,大大减少了网络中的连接数和参数量。另一方面,
积层使用相同的卷积核对不同位置进行特征提取,换句话说,就是采用权值共享
进一步减少参数量,共享的参数对应于图中相同颜色的连接。
(a) 全连接层
(b) 卷积层
11.1 全连接层(a)与卷积层(b)的结构对比
11.2展示了一个标准的卷积神经网络结构,其中包括了卷积层、激活函数和池
化层三个部分。本节将对卷积神经网络中的基本结构进行介绍。
11.2 标准的卷积神经网络结构(卷积、激活函数、池化)
11.1.1 卷积核与卷积操作
卷积操作作为卷积神经网络的核心部分,其本质是一种特殊的线性运算。区
于全连接的方式,卷积使用一系列卷积核Convolution Kernel也叫滤波器)对局部
输入数据进行特征提取,然后通过在输入数据空间维度上移动卷积核来获取所有
11.1 卷积神经网络 389
置的特征信息。卷积的输入可以是任意维度形式的数据。由于其在图像处理领域
用最为广泛,这里以二维图像为例对卷积核和卷积操作进行简单介绍。
在图像卷积中,卷积核是一组 Q×U ×O 的参数(如图11.3其中 Q U 表示
卷积核窗的宽度与度,分别对图像的宽和长个维度,Q ×U 决定了该
积核窗口的大小。O 是该卷积核的深度,它的取值和输入数据通道数保持一致。
这里,通道可以看作图像不同的特征,比如灰色图像只有灰度信息,通道数为 1
RGB 格式的图像有 3 个通道,分别对应红绿蓝三种颜色信息。
-1
0
1
0
1
0
0
-1
0
0
0
1
1
1
0
1
1
1
1
1
0
0
0
0
-1
-1
-1
: 卷积核窗口的长度
卷积核窗口的宽度:
: 卷积核深度
Q
U
O
11.3 图像卷积中的卷积核
在卷积计算中,不同深度下卷积核不同是执行操作相同,这里以二维卷积
为例展示具体卷积计算。若设输入矩阵为 x,输出矩阵为 y,卷积滑动步幅 stride
卷积核为 w,且 w R
Q×U
,那么卷积计算过程如下:
y
i,j
=
XX
(x
[j×stride:j×stride+U1,i×stride:i×stride+Q1]
w) (11.1)
其中 i 是输出矩阵的行下标,j 是输出矩阵的列下标, 表示矩阵点乘,具体见第九
章。11.4展示了一个简单的卷积操作示例,其中 Q 2U 2stride 1根据
公式(11.1),图中蓝色位置 y
0,0
的计算如下:
y
0,0
=
XX
(x
[0×1:0×1+21,0×1:0×1+21]
w)
=
XX
(x
[0:1,0:1]
w)
=
XX
0 ×0 1 ×1
3 ×2 4 ×3
!
= 0 ×0 + 1 ×1 + 3 ×2 + 4 ×3
= 19 (11.2)
卷积计算的作用是提取特征,用不同的积核计算可以获取不同的特征,比
11.5通过设计的特定卷积核就可以获取图像边缘信息。在卷积神经网络中,不需
要手动设计卷积核,只需要指定卷积层中卷积核的数量及大小,模型就可以自己
390 Chapter 11. 基于卷积神经网络的模型 肖桐 朱靖波
习卷积核具体的参数。
6
3
0
7
4
1
8
5
2
2
3
0
1
37
43
19
25
输入:3 × 3
卷积核:2 × 2
输出:2 × 2
*
=
11.4 图像卷积操作(* 表示卷积计算)
11.5 图像通过卷积进行边缘检测
11.1.2 步长与填充
在卷积操作中,步长是指卷积核每次滑的距离,和卷积核的大小共同决定
卷积输出的大小,如图11.6所示。步长越大,对输入数据的压缩程度越高,其输出的
维度越小;反之步长越小,对输入数据的压缩程度越低,同时输出的尺寸和输入越接
近。比如使用一个 3 ×3 ×1 的卷积核 6 ×6 ×1 的图像上进行卷积,如设置步长为
1,其对应的输出大小就为 4 ×4 ×1。这种做法最为简单,但是会导致两个问题;一
是在输入数据中,由于边缘区域的像素只会被计算一次,相比于中心区域来说,
些像素被考虑的次数会更少一些,导致图像边缘信息的丢失;二是在经历多次卷
之后,其输出特征的维度会不断减小,影响模型的泛化能力。
1 1 2
0
2 2
2
0 0
1
5
2
1 2
3
2
0 0
2
0
1 4
0 0
0
1 2 4 2 2
0 0
1
0
2 1
*
0
1
0
1
0 0
0
1 1
=
8
7
2
3
2
7
8
7
7
9 9
8
1
3 8
7
输入:6×6
卷积核:3×3
输出:4×4
11.6 卷积操作的维度变换(* 表示卷积计算)
为了解决这两个问题,可以采用填充的作对图像的边缘进行扩充,填充一
11.1 卷积神经网络 391
元素,例如 0比如在图11.7中, 6×6 ×1 的图像填充为 8 ×8 ×1 的图像,然后在
8×8 ×1 的图像上进行卷积操作。这样可以得到与输入数据大小一致的输出结果,
时也缓解了图像边缘信息丢失的问题。
0 0 0 0 0 0 0 0
0
1 1 2
0
2 2
0
0
2
0 0
1
5
2
0
0
1 2
3
2
0 0 0
0
2
0
1 4
0 0 0
0 0
1 2 4 2 2
0
0 0 0
1
0
2 1
0
0 0 0 0 0 0 0 0
*
0
1
0
1
0 0
0
1 1
=
2 1 2
8
7
4
4
8
7
2
3
7
4 2
7
8
7
2
2
7
9 9
8
2
2 1
3 8
7
3
0
1 2
5
2 4
0
1
输入:8×8(填充后)
卷积核:3×3
输出:6×6
11.7 填充和卷积操作(* 表示卷积计算)
11.1.3 池化
在图11.2所示的网络结构中,卷积层输出会通过一个非线性的激活函数,之后会
通过池化层(也称为汇聚层)。池化过程和卷积类似,都是根据设定的窗口进行滑
选取局部信息进行计算,不同的是,池化层的计算是无参数化的,不需要额外的
重矩阵。常见的池化操作有最大池化Max Pooling平均池化Average Pooling
前者获取窗口内最大的值,后者则获取窗口内矩阵的平均值。11.8展示了窗口大小
2×2、步长为 2 的两种池化方法的计算过程。
1
5
0
6
4
7
5
8
3
1
2
2
1
3
0
4
6 8
3
4
输入:4×4 输出:2×2
(a) 最大池化
1
5
0
6
4
7
5
8
3
1
2
2
1
3
0
4
3 6
2 2
输入:4×4 输出:2×2
(b) 平均池化
11.8 池化操作
池化计算选取每个滑动窗口内最突出的值或平均值作为局部信息,压缩了卷
层输出的维度大小,有效地减少了神经网络的计算量,是卷积神经网络中必不可
的操作。在网络建模时,通常在较低层时会使用最大池化,仅保留特征中最显著
部分。而当网络更深时,特征信息都具有一定意义,比如在自然语言处理任务中,
层网络的特征向量包含的语义信息较多,选取平均池化方法更适合。
392 Chapter 11. 基于卷积神经网络的模型 肖桐 朱靖波
11.1.4 面向序列的卷积操作
对比于图像处理任务中二维图像数据,自然语言处理任务中主要处理一维序列,
如单词序列。由于单词序列长度往往是不固定的,很难使用全连接网络处理它,
为变长序列无法用固定大小的全连接网络进行直接建模,而且过长的序列也会导
全连接网络参数量的急剧增加。
e
1
e
2
e
3
e
4
e
5
e
6
e
7
e
8
e
9
(a) 循环神经网络的串行结构
0
e
1
e
2
e
3
e
4
e
5
e
6
e
7
e
8
e
9
0
0
2 2 2 2 2 2 2 2 2
0
0
3 3 3 3 3 3 3 3 3
0
0
4 4 4 4 4 4 4 4 4
0
(b) 卷积神经网络的层级结构
11.9 串行及层级结构对比(e
i
表示词嵌入,0 表示 0 向量,方框里的 234 表示层次编号)
针对不定长序列,一种可行的方法是使用之前介绍过的循环神经网络进行信
提取,其本质也是基于权重共享的想法,在不同的时间步复用相同的循环神经网
单元进行处理。但是,循环神经网络最大的弊端在于每一时刻的计算都依赖于上
时刻的结果,因此只能对序列进行串行处理,无法充分利用硬件设备进行并行计算,
导致效率相对较低。此外,在处理较长的序列时,这种串行的方式很难捕捉长距
的依赖关系。相比之下,卷积神经网络采用共享参数的方式处理固定大小窗口内
信息,且不同位置的卷积操作之间没有相互依赖,因此可以对序列进行高效地并
处理。同时,对序中距离较的依关系,可以过堆多层卷积来扩
受野 (Receptive Field) ,这里感受野指能够影响神经元输出的原始输入数据区域的大
小。图11.9对比了这两种结构,可以看出,为了捕捉 e
2
e
8
之间的联系,串行结构
需要顺序地进行 6 操作,操作次数与序列长度相关。而该卷积神经网络中,卷积
操作每次对三个词进行计算,仅需要 4 层卷积计算就能得到 e
2
e
8
之间的联系,
操作数和卷积核的大小相关,相比于串行的方式具有更短的路径和更少的非线性
算,更容易进行训练。因此,也有许多研究人员在许多自然语言处理任务上尝试使
用卷积神经网络进行序列建模
[497, 498, 500, 507, 508]
区别于传统图像上的卷积操作,在面向列的卷积操作中,卷积核只在序列
一维度进行移动,用来捕捉连续的多个词之间的特征。需要注意的是,由于单词
常由量表(词入),因嵌入是卷
通道数。图11.10就是一个基于序列卷积的文本分类模型,模型的输入是维度大小为
11.1 卷积神经网络 393
m ×O 的句子表示,m 表示句子长度,O 表示卷积核通道数,其值等于词嵌入维度,
模型使用多个不同(对应图中不同的颜色)的卷积核来对序列进行特征提取,得
了多个不同的特征序列。然后使用池化层降低表示维度,得到了一组和序列长度
关的特征表示。最后模型基于这组压缩过的特征表示,使用全连接网络和 Softmax
数进行类别预测。在这过程中卷积层和池化层分别起到了特征提取和特征压缩的
用,将一个不定长的序列转化为一组固定大小的特征表示。
wait
for
the
video
and
do
n’t
rent
it
卷积核
特征图
维度大小为 m × O
的句子表示
具有多个不同大小
的卷积核和特征图
的卷积层
最大池化
带有 Dropout
Softmax 输出
的全连接层
11.10 序列卷积在文本分类模型中的应用
[498]
和其它自然语言处理任务不同的是,机翻译中需要对序列进行全局表示,
句话说,模型需要捕捉序列中各个位置之间的关系。因此,基于卷积神经网络的神经
机器翻译模型需要堆叠多个卷积层进行远距离的依赖关系的建模。同时,为了在
层网络中维持序列的原有长度,需要在卷积操作前对输入序列进行填充。图11.11
一个简单的示例,针对一个长度 m = 6 的句子,其隐藏层表示维度即卷积操作的输
入通道数是 O = 4,卷积核大小为 K = 3。首先对序列进行填充,得到一个长度为 8
的序列,然后使用这些卷积核在这之上进行特征提取。一共使用了 N = 4 个卷积核,
整体的参数量为 K ×O ×N,最后的卷积结果为 m ×N 的序列表示。
<p>
今天
日子
<p>
O
N
O :输入通道数
N :卷积核数量
<p>:填充
11.11 机器翻译中的序列卷积操作