394 Chapter 11. 基于卷积神经网络的模型 肖桐 朱靖波
11.2 基于卷积神经网络的翻译建模
正如之前所讲,卷积神经网络可以用于序列建模,同时具有并行性高和易于学
习的特点,一个很自然的想法就是将其用作神经机器翻译模型中的特征提取器。因
此,在神经机器翻译被提出之初,研究人员就已经开始利用卷积神经网络对句子进
行特征提取。比较经典的模型是使用卷积神经网络作为源语言句子的编码器,使用
循环神经网络作为目标语言译文生成的解码器
[453, 503]
。之后也有研究人员提出完全基
于卷积神经网络的翻译模型ConvS2S
[24]
或者针对卷积层进行改进,提出效率更
高、性能更好的模型
[504, 509]
本节将基于 ConvS2S 模型,阐述如何使用卷积神经网络
搭建端到端神经机器翻译模型。
<p> <p>
<sos>
go
to
school
目标语词嵌入
卷积
门控
线性单元
内积
go
to
school
<eos>
P
P
P
P
P
P
P
P
P
P
P
P
<p>
上学
<sos>
<p>
源语词嵌入
卷积
门控
线性单元
注意力模块
11.12 ConvS2S 模型结构
ConvS2S 模型是一种高并行的序列到序列的神经计算模型。该模型利用卷积
经网络分别对源语言端与目标语言端的序列进行特征提取,并使用注意力机制来捕
获两个序列之间映射关系。相比于基于多层循环神经网络的 GNMT 模型
[456]
其主要
优势在于每一层的网络计算是完全并行化的,避免了循环神经网络中计算顺序对时
序的依赖。同时,利用多层卷积神经网络的层级结构可以有效地捕捉序列不同位置
11.2 基于卷积神经网络的翻译建模 395
之间的依赖。即使是远距离依赖,也可以通过若干层卷积单元进行有效的捕捉,而
且其信息传递的路径相比循环神经网络更短。除此之外,模型同时使用门控线性单
元、残差网络和位置编码等技术来进一步提升模型性能,达到了和 GNMT 模型相媲
美的翻译性能,同时大大缩短了训练时间。
11.12 ConvS2S 模型的结构示意图,其内部由若干不同的模块组成,包括:
位置编码Position Encoding图中绿色背景框表示源语言端词嵌入部分。相比
于基于循环神经网络的翻译模型中的词嵌入,该模型还引入了位置编码,帮助
模型获得词位置信息。位置编码具体实现在图11.12中没有显示,详见11.2.1节。
卷积层门控线性单元Gated Linear Units, GLU:黄色背景框是卷积模块,
里使用门控线性单元作为非线性函数,之前的研究工
[502]
表明这种非线性
数更适合于序列建模任务。图中为了简化,只展示了一层卷积,但在实际中为
了更好地捕获句子信息,通常使用多层卷积的叠加。
残差连接Residual Connection源语言端和目标语言端的卷积层网络之间,
存在一个从输入到输出的额外连接,即跳接
[423]
该连接方式确保每个隐藏层输
出都能包含输入序列中的更多信息,同时能够有效提高深层网络的信息传递效
率(该部分在图11.12中没有显示,具体结构详见11.2.3节)
多步注意力机Multi-step Attention):蓝色框内部展示基于多步结构的注
意力
[510]
ConvS2S 模型使注意捉两间不
同位置的对应关系。区别于之前的做法,多步注意力在解码器端每一个层都会
执行注意力操作。下面将以此模型为例对基于卷积神经网络的机器翻译模型进
行介绍。
11.2.1 位置编码
与基于循环神经网络的翻译模型类似,基于卷积神经网络的翻译模型同样用词
嵌入序列来表示输入序列,记为 w = {w
1
,...,w
m
}序列 w 是维度大小为 m ×d 的矩
阵,第 i 个单 w
i
是维度 d 的向量,其 m 为序列长度,d 词嵌入向量维度。
和循环神经网络不同的是,基于卷积神经网络的模型需要对每个输入单词位置进行
表示。这是由于,在卷积神经网络中,受限于卷积核的大小,单层的卷积神经网络只
能捕捉序列局部的相对位置信息。虽然多层的卷积神经网络可以扩大感受野,但是
对全局的位置表示并不充分。而相较于基于卷积神经网络的模型,基于循环神经网
络的模型按时间步对输入的序列进行建模,这样间接的对位置信息进行了建模。而
词序又是自然语言处理任务中重要信息,因此这里需要单独考虑。
为了更好地引入序列的词序信息,该模型引入了位置编码 p = {p
1
,...,p
m
}其中
p
i
的维度大小 d,一般和词嵌入维度相等,其中具体数值作为网络可学习的参数。
简单来说,p
i
是一个可学习的参数向量,对应位置 i 的编码。这种编码的作用就是对
位置信息进行表示,不同序列中的相同位置都对应一个唯一的位置编码向量。之后
将词嵌入矩阵和位置编码进行相加,得到模型的输入序列 e = {w
1
+p
1
,...,w
m
+p
m
}
396 Chapter 11. 基于卷积神经网络的模型 肖桐 朱靖波
也有研究人员发现卷积神经网络本身具备一定的编码位置信息的能力
[511]
,而这里额
外的位置编码模块可以被看作是对卷积神经网络位置编码能力的一种补充。
11.2.2 门控卷积神经网络
单层卷积神经网络的感受野受限于卷积核的大小,因此只能捕捉序列中局部的
上下文信息,不能很好地进行长序列建模。为了捕捉更长的上下文信息,最简单的
做法就是堆叠多个卷积层。相比于循环神经网络的链式结构,对相同的上下文跨度,
多层卷积神经网络的层级结构可以通过更少的非线性计算对其进行建模,缓解了长
距离建模中的梯度消失问题。因此,卷积神经网络相对更容易进行训练。
ConvS2S 模型中,编码器和解码器分别使用堆叠的门控卷积神经网络对源语
言和目标语言序列进行建模,在传统卷积神经网络的基础上引入了门控线性单元
[502]
通过门控机制对卷积输出进行控制,它在模型中的位置如图11.13黄色方框所示:
<p> <p>
<sos>
go
to
school
目标语词嵌入
卷积
门控
线性单元
内积
go
to
school
<eos>
P
P
P
P
P
P
P
P
P
P
P
P
<p>
上学
<sos>
<p>
源语词嵌入
卷积
门控
线性单元
注意力模块
11.13 门控卷积神经网络机制在模型中的位置(黄色背景框部分)
门控机制在第十章中介绍 LSTM 模型时已经提到过。在 LSTM 模型中,可以通
过引入三个门控单元来控制信息流,使隐藏层状态能够获得长时间记忆。同时,门
控单元的引入简化了不同时间步间状态更新的计算,只包括一些线性计算,缓解了
11.2 基于卷积神经网络的翻译建模 397
长距离建模中梯度消失的问题。在多层卷积神经网络中,同样可以通过门控机制来
起到相同的作用。
11.14是单层门控卷积神经网络的基本结构,x R
m×d
为单层网络的输入,y
R
m×d
为单层网络的输出,网络结构主要包括卷积计算和 GLU 非线性单元两部分。
<p>
今天
日子
<p>
<p> 填充
σ sigmoid 函数
按位乘运算
* 卷积计算
σ
x
A = x W + b
W
B = x V + b
V
y = A σ(B)
11.14 单层门控卷积神经网络结构
如图所示,形式上,卷积操作可以分成两部分,别使用两个卷积核来得到两
个卷积结果,具体计算如公式(11.3)(11.4)所示:
A = x W + b
W
(11.3)
B = x V + b
V
(11.4)
其中,A,B R
d
W R
K×d×d
V R
K×d×d
b
W
b
V
R
d
WV 在此表示卷积核,
b
W
b
V
为偏置矩阵。在卷积操作之后,引入非线性变换,具体计算如下:
y = A σ(B) (11.5)
其中,
σ
Sigmoid
函数,
为按位乘运算。
Sigmoid
B
映射为
0-1
范围内的实数,
用来充当门控。可以看到,门控卷积神经网络中核心部分就是 σ(B),通过这个门控
单元来对卷积输出进行控制,确定保留哪些信息。同时,在梯度反向传播的过程中,
这种机制使得不同层之间存在线性的通道,梯度传导更加简单,利于深层网络的训
练。这种思想和11.2.3节将要介绍的残差网络也很类似。
ConvS2S 模型中,为了保证卷积操作之后的序列长度不变,需要对输入进行
填充,这一点已经在之前的章节中讨论过了。因此,在编码器每一次卷积操作前,
要对序列的头部和尾部分别做相应的填充(如图11.14左侧部分)而在解码器中,
于需要训练和解码保持一致,模型在训练过程中不能使用未来的信息,需要对未来信
息进行屏蔽,也就是屏蔽掉当前译文单词右侧的译文信息。从实践角度来看,只需要
对解码器输入序列的头部填充 K 1 个空元素,其中 K 为卷积核的宽度(图11.15
K=3 时,的填充情况,图中角形表示积操
作)
398 Chapter 11. 基于卷积神经网络的模型 肖桐 朱靖波
<p> <p>
<sos>
A
B C D
A
B C D
<eos>
<p> 填充
<sos> 序列的开始
<eos> 序列的终止
11.15 解码器的填充方法
11.2.3 残差网络
残差连接是一种训练深层网络的技术,其内容在第九章已经进行了介绍,即在
多层神经网络之间通过增加直接连接的方式,从而将底层信息直接传递给上层。通
过增加这样的直接连接,可以让不同层之间的信息传递更加高效,有利于深层神经
网络的训练,其计算公式为:
h
l+1
= F (h
l
) + h
l
(11.6)
其中,h
l
表示 l 神经网络的输入向量,F (h
l
) l 层神经网络的运算。如果 l = 2
那么公(11.6)可以解释为:第 3 层的输入 h
3
等于第 2 层的输出 F (h
2
) 加上第 2
的输入 h
2
ConvS2S 中残差连接主要应用于门控卷积神经网络和多步注意力机制中,比
如在编码器的多层门控卷积神经网络中,在每一层的输入和输出之间增加残差连接,
具体的数学描述如下:
h
l+1
= A
l
σ(B
l
) + h
l
(11.7)
11.2.4 多步注意力机制
ConvS2S 模型也采用了注意力机制来获取每个目标语言位置相应的源语言上
文信息。其仍然沿用传统的点乘注意力机制
[25]
,其中图11.16蓝色框代表了多步注意
力机制在模型中的位置。
在基于循环神经网络的翻译模型中,注意力机制已经被广使用
[22]
,并用于
免循环神经网络将源语言序列压缩成一个固定维度的向量表示带来的信息损失。另
一方面,注意力同样能够帮助解码器区分源语言中不同位置对当前目标语言位置的
贡献度,其具体的计算过程如公式(11.8)(11.9)所示:
C
j
=
X
i
α
i,j
h
i
(11.8)
α
i,j
=
exp(a(s
j1
,h
i
))
P
i
exp(a(s
j1
,h
i
))
(11.9)
11.2 基于卷积神经网络的翻译建模 399
其中,h
i
表示源语言端第 i 个位置的隐藏层状态,即编码器在第 i 个位置的输出。s
j
表示目标端第 j 个位置的隐藏层状态。给定 s
j
h
i
注意力机制通过函数 a(·) 计算
目标语言表示 s
j
与源语言表示 h
i
之间的注意力权重 α
i,j
通过加权平均得到当前目
标语言端位置所需的上下文表示 C
j
。其中 a(·) 的具体计算方式在第十章已经详细讨
论。
<p> <p>
<sos>
go
to
school
目标语词嵌入
卷积
门控
线性单元
内积
go
to
school
<eos>
P
P
P
P
P
P
P
P
P
P
P
P
<p>
上学
<sos>
<p>
源语词嵌入
卷积
门控
线性单元
注意力模块
11.16 多步注意力机制在 ConvS2S 模型中的位置(蓝色背景框部分)
ConvS2S 模型中,解码器同样采用堆叠的多层门控卷积网络来对目标语言进
行序列建模。区别于编码器,解码器在每一层卷积网络之后引入了注意力机制,用
来参考源语言信息。ConvS2S 选用了点乘注意力,并且通过类似残差连接的方式
注意力操作的输入与输出同时作用于下一层计算,称为多步注意力。其具体计算方
式如下:
α
l
ij
=
exp(h
i
d
l
j
)
P
m
i
=1
exp
(
h
i
d
l
j
)
(11.10)
不同于公式(11.9)中使用的目标语言端隐藏层表示 s
j1
公式(11.10)中的 d
l
j
同时结合
s
j
的卷积计算结果和目标语言端的词嵌入 g
j
其具体计算如公式(11.11)(11.12)
400 Chapter 11. 基于卷积神经网络的模型 肖桐 朱靖波
示:
d
l
j
= z
l
j
W
l
d
+ b
l
d
+ g
j
(11.11)
z
l
j
= Conv(s
l
j
) (11.12)
其中,z
l
j
表示第 l 层卷积网络输出中第 j 个位置的表示,W
l
d
b
l
d
是模型可学习的参
数,Conv(·) 表示卷积操作。在获得第 l 的注意力权重之后,就可以得到对应的一
个上下文表示 C
l
j
,具体计算如下:
C
l
j
=
X
i
α
l
ij
(h
i
+ e
i
) (11.13)
模型使用了更全面的源语言信息,同时考虑了源语言端编码表示 h
i
以及词嵌入表示
e
i
。在获得第 l 层的上下文向量 C
l
j
后,模型将其与 z
l
j
相加后送入下一层网络,这个
过程可以被描述为:
s
l+1
j
= C
l
j
+ z
l
j
(11.14)
与循环网络中的注意力机制相比,该机制能够帮助模型甄别已经考虑了哪些先前的
输入。也就是说,多步的注意力机制会考虑模型之前更关注哪些单词,并且之后层
中执行多次注意力的“跳跃”
11.2.5 训练与推断
与基于循环神经网络的翻译模型一致,ConvS2S 模型会计算每个目标语言位
上不同单词的概率,并以交叉熵作为损失函数来衡量模型预测分布与标准分布之间
的差异。同时,采用基于梯度的方法对网络中的参数进行更新(见第九章)
ConvS2S 模型的训练与基于循环神经网络的翻译模型的训练的主要区别是:
ConvS2S 模型使用了 Nesterov 速梯度下降法 Nesterov Accelerated Gradient
NAG), 0.99 0.1
[512]
ConvS2S 模型中设置学习率为 0.25每当模型在校验集上的困惑度不再下降时,
便在每轮的训练后将学习率降低一个数量级,直至学习率小于一定的阈值(如
0.0004
Nesterov 加速梯度下降法和第九章介绍的 Momentum 梯度下降法类似,都使用了
历史梯度信息,首先回忆一下 Momentum 梯度下降法,具体计算如公式(11.15)(11.16)
11.2 基于卷积神经网络的翻译建模 401
示:
w
t+1
= w
t
αv
t
(11.15)
v
t
= βv
t1
+ (1 β)
J(w
t
)
w
t
(11.16)
其中,w
t
表示第 t 步更新时的模型参数;J(w
t
) 表示损失函数均值期望的估计;
J
(
w
t
)
w
t
将指向 J(w
t
) w
t
处变化最大的方向,即梯度方向;α 为学习率;v
t
为损失函数在
t 1 步更新中累积的梯度动量,利用超参数 β 控制累积的范围。
而在 Nesterov 加速梯度下降法中,使用的梯度不是来自于当前参数位置,而
按照之前梯度方向更新一小步的位置,以便于更好地“预测未来”提前调整更新速
率,因此,其动量的更新方式如下:
v
t
=
β
v
t1
+ (1
β
)
J(w
t
)
(w
t
αβv
t1
)
(11.17)
Nesterov 加速梯度下降法利用了二阶导数的信息,可以做到“向前看”,加速收
敛过程
[513]
ConvS2S 模型也采用了一些网络正则化和参数初始化的策略,使得模
在前向计算和反向计算的过程中,方差尽可能保持一致,模型训练更稳定。
此外,ConvS2S 模型为了进一步提升训练效率及性能,还使用了小批量训练,即每
次从样本中选择出一小部分数据进行训练。同时,ConvS2S 模型中也使用了 Dropout
方法
[514]
。除了在词嵌入层和解码器输出层应 Dropout 外,ConvS2S 模型还对卷积
块的输入层应用了 Dropout
ConvS2S 模型的推断过程与第十章中描述的推断过程一样。其基本思想是:
靠源语言句子和前面已经生成的译文单词来预测下一个译文单词。这个过程也可以
结合贪婪搜索或者束搜索等解码策略。