402 Chapter 11. 基于卷积神经网络的模型 肖桐 朱靖波
11.3 局部模型的改进
在序列建模中,卷积神经网络可以通过参数共享,高效地捕捉局部上下文特征,
如图11.11所示。但是通过进一步分析可以发现,在标准卷积操作中包括了不同词和
不同通道之间两种信息的交互,每个卷积核都是对相邻词的不同通道进行卷积操作,
参数量为 K ×O,其中,K 为卷积核大小,O 为输入的通道数,即单词表示的维
大小。使 N 个卷核, N 个特(即道数),总量为
K ×O ×N这里涉及卷积核大小、输入通道数和输出通道数三个维度,因此计算复
杂度较高。为了进一步提升计算效率,降低参数量,一些研究人员提出深度可分离卷
Depthwise Separable Convolution将空间维度和通道间的信息交互分离成深度
卷积Depthwise Convolution也叫逐通道卷积)逐点卷积Pointwise Convolution
两部分
[515, 516]
除了直接将深度可分离卷积应用到神经机器翻译中
[504]
研究人员提出
使用更高效的轻量卷积Lightweight Convolution动态卷积Dynamic Convolution
来进行不同词之间的特征提取
[509]
。本节将主要介绍这些改进的卷积操作。在后续章
节中也会看到这些模型在神经机器翻译中的应用。
11.3.1 深度可分离卷积
根据前面的介绍,可以看到卷积神经网络适用于局部检测和处理位置不变的
征。对于特定的表达,比如地点、情绪等,使用卷积神经网络能达到不错的识别
果,因此它常被用在文本分类中
[497, 498, 507, 517]
不过机器翻译所面临的情况更复杂,
了局部句子片段信息,研究人员还希望模型能够捕获句子结构、语义等信息。虽
单层卷积神经网络在文本分类中已经取得了很好的效果
[498]
,但是神经机器翻译等任
务仍然需要有效的卷积神经网络。随着深度可分离卷积在机器翻译中的探索
[504]
,更
高效的网络结构被设计出来,获得了比 ConvS2S 模型更好的性能。
深度可分离卷积由深度卷积和逐点卷积两部分结合而成
[518]
11.17对比了标准
卷积、深度卷积和逐点卷积,为了方便显示,图中只画出了部分连接。
给定输入列表 x = {x
1
,...,x
m
},其 m 为序长度,x
i
R
O
O 即输
序列的通道数。为了获得与输入序列长度相同的卷积输出结果,首先需要进行填充。
为了方便描述,这里在输入序列尾部填充 K 1 个元素(K 为卷积核窗口的长度)
其对应的卷积结果 z = {z
1
,...,z
m
}。在标准卷积中,若使用 N 表示卷积核的个数,
也就是标准卷积输出序列的通道数,那么对于第 i 个位置的第 n 个通道 z
std
i,n
其标准
卷积具体计算如下:
z
std
i,n
=
O
X
o=1
K1
X
k=0
x
i+k,o
W
std
k,o,n
(11.18)
其中,z
std
表示标准卷积的输出,z
std
i
R
N
W
std
R
K×O×N
为标准卷积的参数。
以看出,标准卷积中每个输出元素需要考虑卷积核尺度内所有词的所有特征,参
11.3 局部模型的改进 403
x
3
x
2
x
1
z
3
z
2
z
1
···
(a) 标准卷积
x
3
x
2
x
1
z
3
z
2
z
1
···
(b) 深度卷积
x
3
x
2
x
1
z
3
z
2
z
1
···
(c) 逐点卷积
11.17 标准卷积、深度卷积和逐点卷积示意图
量相对较多,对应图11.17中的连接数也最多。
相应的,深度卷积只考虑不同词之间的依赖性,而不考虑不同通道之间的关系,
相当于使用 O 个卷积核逐个通道对不同的词进行卷积操作。因此深度卷积不改变输
出的表示维度,输出序列表示的通道数与输入序列一致,其计算如下:
z
dw
i,o
=
K1
X
k=0
x
i+k,o
W
dw
k,o
(11.19)
其中,z
dw
表示深度卷积的输出,z
dw
i
R
O
W
dw
R
K×O
为深度卷积的参数,参数
量只涉及卷积核大小及输入表示维度。
与深度卷积互为补充的是,逐点卷积只考虑不同通道之间的依赖性,而不考
不同词之间的依赖。换句话说,逐点卷积对每个词表示做了一次线性变换,将输
表示 x
i
R
O
的空间映射到 R
N
的空间,其具体计算如下:
z
pw
i,n
=
O
X
o=1
x
i,o
W
pw
o,n
= x
i
W
pw
(11.20)
其中 z
pw
表示逐点卷积的输出,z
pw
i
R
N
W
pw
R
O×N
为逐点卷积的参数。
11.1展示了这几种不同类型卷积的参数量,深度可分离卷积通过将标准卷积进
行分解,降低了整体模型的参数量。在相同参数量的情况下,深度可分离卷积可
采用更大的卷积窗口,考虑序列中更大范围的依赖关系。因此相比于标准卷积,
404 Chapter 11. 基于卷积神经网络的模型 肖桐 朱靖波
度可分离卷积具有更强的表示能力,在机器翻译任务中也能获得更好的性能。
11.1 不同类型卷积的参数量对比(K 表示卷积核大小,O 表示输入通道数,N 表示输出通道数)
[457]
卷积类型 参数量
标准卷积 K ×O ×N
深度卷积 K ×O
逐点卷积 O ×N
深度可分离卷积 K ×O + O ×N
11.3.2 轻量卷积和动态卷积
深度可分离卷积中深度卷积的作用就是用来捕捉相邻词之间的依赖关系,这
第十二章即将介绍的基于自注意力机制的模型类似。基于深度卷积,一些研究人
提出了轻量卷积和动态卷积,用来替换注意力机制,并将其应用于基于自注意力
制的模型中
[509]
。同时,卷积操作的线性复杂度使得它具有较高的运算效率,相比注
意力机制的平方复杂度,卷积操作是一种更加“轻量”的方法。接下来分别介绍
量卷积与动态卷积的思想。
1. 轻量卷积
在序列建模的模型中,一个很重要的模块就是对序列中不同位置信息的提取,
ConvS2S 模型中的卷积神经网络等。虽然考虑局部上下文的卷积神经网络只在序
这一维度进行操作,具有线性的复杂度,但是由于标准卷积操作中考虑了不同通
的信息交互,整体复杂度依旧较高。一种简化的策略就是采取通道独立的卷积操作,
也就是11.3.1节中介绍的深度卷积。
在神经机器翻译模型中,神经网络不同层的维度通常一致, O = N = d
此,深度卷积可以使得卷积神经网络参数量从 Kd
2
降到 Kd(参考表11.1。从形式
上来看,深度卷积和注意力机制很类似,区别在于注意力机制考虑了序列全局上
文信息,权重来自于当前位置对其他位置的“注意力”而深度卷积中仅考虑了局部
的上下文信息,权重采用了在不同通道上独立的固定参数。为了进一步降低参数量,
轻量卷积共享了部分通道的卷积参数。如图11.18所示,深度卷积中 4 种颜色的连接
代表了 4 个通道上独立的卷积核,而轻量卷积中,第一和第三通道,第二和第四
道采用了共享的卷积核参数。通过共享,可以将参数量压缩到 Ka其中压缩比例为
d/aa 为压缩后保留的共享通道数)
此外,和标准卷积不同的是,轻量卷积之前需要先对卷积参数进行归一化,
体计算过程为:
z
lw
i,o
=
K1
X
k=0
x
i+k,o
Softmax(W
lw
)
k,[
oa
d
]
(11.21)
11.3 局部模型的改进 405
x
2
x
1
z
2
z
1
···
深度卷积
x
2
x
1
z
2
z
1
···
轻量卷积
11.18 深度卷积 vs 轻量卷积
其中,z
lw
表示轻量卷积的输出,z
lw
i
R
d
W
lw
R
K×a
为轻量卷积的参数。在这里,
轻量卷积用来捕捉相邻词的特征,通过 Softmax 可以在保证关注到不同词的同时,
输出大小进行限制。
2. 动态卷积
轻量卷积和动态卷积的概念最早都是在图像领域被提出,大大减少了卷积神
网络模型中的参数和计算量
[494, 519, 520]
虽然轻量卷积在存储和速度上具有优势,但其
参数量的减少也导致了表示能力的下降,损失了一部分模型性能。为此,研究人
提出了动态卷积,旨在不增加网络深度和宽度的情况下来增强模型的表示能力,
思想就是根据输入来动态地生成卷积参数
[509, 521]
在轻量卷积中,模型使用的卷积参数是静态的,与序列位置无关,维度大小
K ×a而在动态卷积中,为了增强模型的表示能力,卷积参数来自于当前位置输入
的变换,具体计算为:
f(x
i
) =
d
X
c=1
x
i,c
W
:,:,c
(11.22)
这里采用了最简单的线性变换,其 表示矩阵的点乘(详见第九章介绍)d
为通道数,x
i
是序列第 i 个位置的表示,c 表示某个通道,W R
K×a×d
为变换矩阵,
W
:,:,c
表示其只在 d 这一维进行计算,最后生成的 f(x
i
) R
K×a
就是与输入相关的卷
积核参数。通过这种方式,模型可以根据不同位置的表示来确定如何关注其他位
信息的“权重”更好地提取序列信息。同时,相比于注意力机制中两两位置确定出
来的注意力权重,动态卷积线性复杂度的做法具有更高的计算效率。