Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
M
mtbookv2
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
NiuTrans
mtbookv2
Commits
19481952
Commit
19481952
authored
Dec 14, 2020
by
zengxin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
统一
parent
136d36d4
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
8 行增加
和
8 行删除
+8
-8
Chapter10/chapter10.tex
+2
-2
Chapter11/chapter11.tex
+6
-6
Chapter12/chapter12.tex
+0
-0
没有找到文件。
Chapter10/chapter10.tex
查看文件 @
19481952
...
...
@@ -698,9 +698,9 @@ $\funp{P}({y_j | \mathbi{s}_{j-1} ,y_{j-1},\mathbi{C}})$由Softmax实现,Softm
\end{figure}
%----------------------------------------------
\parinterval
显然,以上问题的根本原因在于所使用的表示模型还比较“弱”。因此需要一个更强大的表示模型,在生成目标语言单词时能够有选择地获取源语言句子中更有用的部分。更准确的说,对于要生成的目标语单词,相关性更高的源语言片段应该在源语言句子的表示中体现出来,而不是将所有的源语言单词一视同仁。在神经机器翻译中引入注意力机制正是为了达到这个目的
\upcite
{
bahdanau2014neural,DBLP:journals/corr/LuongPM15
}
。实际上,除了机器翻译,注意力机制也被成功地应用于图像处理、语音识别、自然语言处理等其他任务。也正是注意力机制的引入,使得包括机器翻译在内很多自然语言处理系统得到了飞跃发展。
\parinterval
显然,以上问题的根本原因在于所使用的表示模型还比较“弱”。因此需要一个更强大的表示模型,在生成目标语言单词时能够有选择地获取源语言句子中更有用的部分。更准确的说,对于要生成的目标语
言
单词,相关性更高的源语言片段应该在源语言句子的表示中体现出来,而不是将所有的源语言单词一视同仁。在神经机器翻译中引入注意力机制正是为了达到这个目的
\upcite
{
bahdanau2014neural,DBLP:journals/corr/LuongPM15
}
。实际上,除了机器翻译,注意力机制也被成功地应用于图像处理、语音识别、自然语言处理等其他任务。也正是注意力机制的引入,使得包括机器翻译在内很多自然语言处理系统得到了飞跃发展。
\parinterval
神经机器翻译中的注意力机制并不复杂。对于每个目标语言单词
$
y
_
j
$
,系统生成一个源语言表示向量
$
\mathbi
{
C
}_
j
$
与之对应,
$
\mathbi
{
C
}_
j
$
会包含生成
$
y
_
j
$
所需的源语言的信息,或者说
$
\mathbi
{
C
}_
j
$
是一种包含目标语言单词与源语言单词对应关系的源语言表示。相比用一个静态的表示
$
\mathbi
{
C
}$
,注意机制使用的是动态的表示
$
\mathbi
{
C
}_
j
$
。
$
\mathbi
{
C
}_
j
$
也被称作对于目标语言位置
$
j
$
的
{
\small\bfnew
{
上下文向量
}}
\index
{
上下文向量
}
(Context Vector
\index
{
Context Vector
}
)。图
\ref
{
fig:10-18
}
对比了未引入注意力机制和引入了注意力机制的编码器- 解码器结构。可以看出,在注意力模型中,对于每一个目标单词的生成,都会额外引入一个单独的上下文向量参与运算。
\parinterval
神经机器翻译中的注意力机制并不复杂。对于每个目标语言单词
$
y
_
j
$
,系统生成一个源语言表示向量
$
\mathbi
{
C
}_
j
$
与之对应,
$
\mathbi
{
C
}_
j
$
会包含生成
$
y
_
j
$
所需的源语言的信息,或者说
$
\mathbi
{
C
}_
j
$
是一种包含目标语言单词与源语言单词对应关系的源语言表示。相比用一个静态的表示
$
\mathbi
{
C
}$
,注意机制使用的是动态的表示
$
\mathbi
{
C
}_
j
$
。
$
\mathbi
{
C
}_
j
$
也被称作对于目标语言位置
$
j
$
的
{
\small\bfnew
{
上下文向量
}}
\index
{
上下文向量
}
(Context Vector
\index
{
Context Vector
}
)。图
\ref
{
fig:10-18
}
对比了未引入注意力机制和引入了注意力机制的编码器- 解码器结构。可以看出,在注意力模型中,对于每一个目标
语言
单词的生成,都会额外引入一个单独的上下文向量参与运算。
%----------------------------------------------
\begin{figure}
[htp]
...
...
Chapter11/chapter11.tex
查看文件 @
19481952
...
...
@@ -233,14 +233,14 @@
\section
{
基于卷积神经网络的翻译建模
}
\parinterval
正如之前所讲,卷积神经网络可以用于序列建模,同时具有并行性高和易于学习的特点,一个很自然的想法就是将其用作神经机器翻译模型中的特征提取器。因此,在神经机器翻译被提出之初,研究人员就已经开始利用卷积神经网络对句子进行特征提取。比较经典的模型是使用卷积神经网络作为源语言句子的编码器,使用循环神经网络作为目标语译文生成的解码器
\upcite
{
kalchbrenner-blunsom-2013-recurrent,Gehring2017ACE
}
。之后也有研究人员提出完全基于卷积神经网络的翻译模型(ConvS2S)
\upcite
{
DBLP:journals/corr/GehringAGYD17
}
,或者针对卷积层进行改进,提出效率更高、性能更好的模型
\upcite
{
Kaiser2018DepthwiseSC,Wu2019PayLA
}
。本节将基于ConvS2S模型,阐述如何使用卷积神经网络搭建端到端神经机器翻译模型。
\parinterval
正如之前所讲,卷积神经网络可以用于序列建模,同时具有并行性高和易于学习的特点,一个很自然的想法就是将其用作神经机器翻译模型中的特征提取器。因此,在神经机器翻译被提出之初,研究人员就已经开始利用卷积神经网络对句子进行特征提取。比较经典的模型是使用卷积神经网络作为源语言句子的编码器,使用循环神经网络作为目标语
言
译文生成的解码器
\upcite
{
kalchbrenner-blunsom-2013-recurrent,Gehring2017ACE
}
。之后也有研究人员提出完全基于卷积神经网络的翻译模型(ConvS2S)
\upcite
{
DBLP:journals/corr/GehringAGYD17
}
,或者针对卷积层进行改进,提出效率更高、性能更好的模型
\upcite
{
Kaiser2018DepthwiseSC,Wu2019PayLA
}
。本节将基于ConvS2S模型,阐述如何使用卷积神经网络搭建端到端神经机器翻译模型。
\parinterval
ConvS2S模型是一种高并行的序列到序列的神经计算模型。该模型利用卷积神经网络分别对源语言端与目标语言端的序列进行特征提取,并使用注意力机制来捕获两个序列之间映射关系。相比于基于多层循环神经网络的GNMT模型
\upcite
{
Wu2016GooglesNM
}
,其主要优势在于每一层的网络计算是完全并行化的,避免了循环神经网络中计算顺序对时序的依赖。同时,利用多层卷积神经网络的层级结构可以有效地捕捉序列不同位置之间的依赖。即使是远距离依赖,也可以通过若干层卷积单元进行有效的捕捉,而且其信息传递的路径相比循环神经网络更短。除此之外,模型同时使用门控线性单元、残差网络和位置编码等技术来进一步提升模型性能,达到了和GNMT模型相媲美的翻译性能,同时大大缩短了训练时间。
\parinterval
图
\ref
{
fig:11-12
}
为ConvS2S模型的结构示意图,其内部由若干不同的模块组成,包括:
\begin{itemize}
\item
{
\small\bfnew
{
位置编码
}}
\index
{
位置编码
}
(Position Embedding)
\index
{
Position Embedding
}
:图中绿色背景框表示源语端词嵌入部分。相比于基于循环神经网络的翻译模型中的词嵌入,该模型还引入了位置编码,帮助模型获得词位置信息。位置编码具体实现在图
\ref
{
fig:11-12
}
中没有显示,详见
\ref
{
sec:11.2.1
}
节。
\item
{
\small\bfnew
{
位置编码
}}
\index
{
位置编码
}
(Position Embedding)
\index
{
Position Embedding
}
:图中绿色背景框表示源语
言
端词嵌入部分。相比于基于循环神经网络的翻译模型中的词嵌入,该模型还引入了位置编码,帮助模型获得词位置信息。位置编码具体实现在图
\ref
{
fig:11-12
}
中没有显示,详见
\ref
{
sec:11.2.1
}
节。
\item
{
\small\bfnew
{
卷积层
}}
与
{
\small\bfnew
{
门控线性单元
}}
(Gated Linear Units, GLU
\index
{
Gated Linear Units, GLU
}
):黄色背景框是卷积模块,这里使用门控线性单元作为非线性函数,之前的研究工作
\upcite
{
Dauphin2017LanguageMW
}
表明这种非线性函数更适合于序列建模任务。图中为了简化,只展示了一层卷积,但在实际中为了更好地捕获句子信息,通常使用多层卷积的叠加。
...
...
@@ -278,7 +278,7 @@
\parinterval
单层卷积神经网络的感受野受限于卷积核的大小,因此只能捕捉序列中局部的上下文信息,不能很好地进行长序列建模。为了捕捉更长的上下文信息,最简单的做法就是堆叠多个卷积层。相比于循环神经网络的链式结构,对相同的上下文跨度,多层卷积神经网络的层级结构可以通过更少的非线性计算对其进行建模,缓解了长距离建模中的梯度消失问题。因此,卷积神经网络相对更容易进行训练。
\parinterval
在ConvS2S模型中,编码端和解码端分别使用堆叠的门控卷积神经网络对源语
和目标语
序列进行建模,在传统卷积神经网络的基础上引入了门控线性单元
\upcite
{
Dauphin2017LanguageMW
}
,通过门控机制对卷积输出进行控制,它在模型中的位置如图
\ref
{
fig:11-13
}
黄色方框所示:
\parinterval
在ConvS2S模型中,编码端和解码端分别使用堆叠的门控卷积神经网络对源语
言和目标语言
序列进行建模,在传统卷积神经网络的基础上引入了门控线性单元
\upcite
{
Dauphin2017LanguageMW
}
,通过门控机制对卷积输出进行控制,它在模型中的位置如图
\ref
{
fig:11-13
}
黄色方框所示:
%----------------------------------------------
% 图13.
...
...
@@ -360,7 +360,7 @@
\subsection
{
多跳注意力机制
}
\parinterval
ConvS2S模型也采用了注意力机制来获取每个目标语位置相应的源语言上下文信息。其仍然沿用传统的点乘注意力机制
\upcite
{
DBLP:journals/corr/LuongPM15
}
,其中图
\ref
{
fig:11-16
}
蓝色框代表了多跳自注意力机制在模型中的位置。
\parinterval
ConvS2S模型也采用了注意力机制来获取每个目标语
言
位置相应的源语言上下文信息。其仍然沿用传统的点乘注意力机制
\upcite
{
DBLP:journals/corr/LuongPM15
}
,其中图
\ref
{
fig:11-16
}
蓝色框代表了多跳自注意力机制在模型中的位置。
%----------------------------------------------
% 图16.
...
...
@@ -379,7 +379,7 @@
\alpha
_{
i,j
}
&
=
&
\frac
{
\textrm
{
exp
}
(
\funp
{
a
}
(
\mathbi
{
s
}_{
j-1
}
,
\mathbi
{
h
}_
i))
}{
\sum
_{
i'
}
\textrm
{
exp
}
(
\funp
{
a
}
(
\mathbi
{
s
}_{
j-1
}
,
\mathbi
{
h
}_{
i'
}
))
}
\label
{
eq:11-9
}
\end{eqnarray}
\noindent
其中,
$
\mathbi
{
h
}_
i
$
表示源语
端第
$
i
$
个位置的隐层状态,即编码器在第
$
i
$
个位置的输出。
$
\mathbi
{
s
}_
j
$
表示目标端第
$
j
$
个位置的隐层状态。给定
$
\mathbi
{
s
}_
j
$
和
$
\mathbi
{
h
}_
i
$
,注意力机制通过函数
$
\funp
{
a
}
(
\cdot
)
$
计算目标语言表示
$
\mathbi
{
s
}_
j
$
与源语言表示
$
\mathbi
{
h
}_
i
$
之间的注意力权重
$
\alpha
_{
i,j
}$
,通过加权平均得到当前目标
端位置所需的上下文表示
$
\mathbi
{
C
}_
j
$
。其中
$
\funp
{
a
}
(
\cdot
)
$
的具体计算方式在
{
\chapterten
}
已经详细讨论。
\noindent
其中,
$
\mathbi
{
h
}_
i
$
表示源语
言端第
$
i
$
个位置的隐层状态,即编码器在第
$
i
$
个位置的输出。
$
\mathbi
{
s
}_
j
$
表示目标端第
$
j
$
个位置的隐层状态。给定
$
\mathbi
{
s
}_
j
$
和
$
\mathbi
{
h
}_
i
$
,注意力机制通过函数
$
\funp
{
a
}
(
\cdot
)
$
计算目标语言表示
$
\mathbi
{
s
}_
j
$
与源语言表示
$
\mathbi
{
h
}_
i
$
之间的注意力权重
$
\alpha
_{
i,j
}$
,通过加权平均得到当前目标语言
端位置所需的上下文表示
$
\mathbi
{
C
}_
j
$
。其中
$
\funp
{
a
}
(
\cdot
)
$
的具体计算方式在
{
\chapterten
}
已经详细讨论。
\parinterval
在ConvS2S模型中,解码器同样采用堆叠的多层门控卷积网络来对目标语言进行序列建模。区别于编码器,解码器在每一层卷积网络之后引入了注意力机制,用来参考源语言信息。ConvS2S选用了点乘注意力,并且通过类似残差连接的方式将注意力操作的输入与输出同时作用于下一层计算,称为多跳注意力。其具体计算方式如公式
\eqref
{
eq:11-10
}
所示:
\begin{eqnarray}
...
...
@@ -387,7 +387,7 @@
\label
{
eq:11-10
}
\end{eqnarray}
\noindent
不同于公式
\eqref
{
eq:11-9
}
中使用的目标语
端隐层表示
$
\mathbi
{
s
}_{
j
-
1
}$
,公式
\eqref
{
eq:11-10
}
中的
$
\mathbi
{
d
}_{
j
}^
l
$
同时结合了
$
\mathbi
{
s
}_{
j
}$
的卷积计算结果和目标语
端的词嵌入
$
\mathbi
{
g
}_
j
$
,其具体计算如公式
\eqref
{
eq:11-11
}
和
\eqref
{
eq:11-12
}
所示:
\noindent
不同于公式
\eqref
{
eq:11-9
}
中使用的目标语
言端隐层表示
$
\mathbi
{
s
}_{
j
-
1
}$
,公式
\eqref
{
eq:11-10
}
中的
$
\mathbi
{
d
}_{
j
}^
l
$
同时结合了
$
\mathbi
{
s
}_{
j
}$
的卷积计算结果和目标语言
端的词嵌入
$
\mathbi
{
g
}_
j
$
,其具体计算如公式
\eqref
{
eq:11-11
}
和
\eqref
{
eq:11-12
}
所示:
\begin{eqnarray}
\mathbi
{
d
}_{
j
}^
l
&
=
&
\mathbi
{
W
}_{
d
}^{
l
}
\mathbi
{
z
}_{
j
}^{
l
}
+
\mathbi
{
b
}_{
d
}^{
l
}
+
\mathbi
{
g
}_
j
\label
{
eq:11-11
}
\\
\mathbi
{
z
}_
j
^
l
&
=
&
\textrm
{
Conv
}
(
\mathbi
{
s
}_
j
^
l)
\label
{
eq:11-12
}
...
...
Chapter12/chapter12.tex
查看文件 @
19481952
差异被折叠。
点击展开。
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论