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
7a381f9b
Commit
7a381f9b
authored
Jul 06, 2021
by
孟霞
Browse files
Options
Browse Files
Download
Plain Diff
合并分支 'caorunzhe' 到 'mengxia'
Caorunzhe 查看合并请求
!1105
parents
33f3993b
585e48d8
显示空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
17 行增加
和
17 行删除
+17
-17
Chapter10/chapter10.tex
+0
-1
Chapter11/chapter11.tex
+3
-3
Chapter12/Figures/figure-position-of-difference-and-layer-regularization-in-the-model.tex
+1
-0
Chapter12/chapter12.tex
+7
-7
Chapter18/chapter18.tex
+6
-6
没有找到文件。
Chapter10/chapter10.tex
查看文件 @
7a381f9b
...
...
@@ -30,7 +30,6 @@
%----------------------------------------------------------------------------------------
% NEW SECTION 10.1
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
神经机器翻译的发展简史
}
\parinterval
纵观机器翻译的发展历程,神经机器翻译诞生较晚。无论是早期的基于规则的方法,还是逐渐发展起来的基于实例的方法,再或是上世纪末的统计方法,每次机器翻译框架级的创新都需要很长时间的酝酿,而技术走向成熟甚至需要更长的时间。但是,神经机器翻译的出现和后来的发展速度多少有些“出人意料”。神经机器翻译的概念出现在2013-2014年间,当时机器翻译领域的主流方法仍然是统计机器翻译。虽然那个时期深度学习已经在图像、语音等领域取得令人瞩目的效果,但是对于自然语言处理来说深度学习仍然不是主流。
...
...
Chapter11/chapter11.tex
查看文件 @
7a381f9b
...
...
@@ -230,7 +230,7 @@
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
基于卷积神经网络的翻译建模
}
\parinterval
正如之前所讲,卷积神经网络可以用于序列建模,同时具有并行性高和易于学习的特点,一个很自然的想法就是将其用作神经机器翻译模型中的特征提取器。因此,在神经机器翻译被提出之初,研究人员就已经开始利用卷积神经网络对句子进行特征提取。比较经典的模型是使用卷积神经网络作为源语言句子的编码器,使用循环神经网络作为目标语言译文生成的解码器
\upcite
{
kalchbrenner-blunsom-2013-recurrent,Gehring2017ACE
}
。之后也有研究人员提出完全基于卷积神经网络的翻译模型(ConvS2S)
\upcite
{
DBLP:journals/corr/GehringAGYD17
}
,或者针对卷积层进行改进,提出效率更高、性能更好的模型
\upcite
{
Kaiser2018DepthwiseSC,Wu2019PayLA
}
。本节将基于ConvS2S模型,阐述如何使用卷积神经网络搭建端到端神经机器翻译模型。
...
...
@@ -448,7 +448,7 @@
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
局部模型的改进
}
\parinterval
在序列建模中,卷积神经网络可以通过参数共享,高效地捕捉局部上下文特征,如图
\ref
{
fig:11-11
}
所示。但是通过进一步分析可以发现,在标准卷积操作中包括了不同词和不同通道之间两种信息的交互,每个卷积核都是对相邻词的不同通道进行卷积操作,参数量为
$
K
\times
O
$
,其中,
$
K
$
为卷积核大小,
$
O
$
为输入的通道数,即单词表示的维度大小。如果使用
$
N
$
个卷积核,得到
$
N
$
个特征(即输出通道数),总共的参数量为
$
K
\times
O
\times
N
$
。 这里涉及卷积核大小、输入通道数和输出通道数三个维度,因此计算复杂度较高。为了进一步提升计算效率,降低参数量,一些研究人员提出
{
\small\bfnew
{
深度可分离卷积
}}
\index
{
深度可分离卷积
}
(Depthwise Separable Convolution)
\index
{
Depthwise Separable Convolution
}
,将空间维度和通道间的信息交互分离成
{
\small\bfnew
{
深度卷积
}}
(Depthwise Convolution,也叫逐通道卷积)
\index
{
逐通道卷积
}
\index
{
Depthwise Convolution
}
和
{
\small\bfnew
{
逐点卷积
}}
\index
{
逐点卷积
}
(Pointwise Convolution)
\index
{
Pointwise Convolution
}
两部分
\upcite
{
Chollet2017XceptionDL,Howard2017MobileNetsEC
}
。 除了直接将深度可分离卷积应用到神经机器翻译中
\upcite
{
Kaiser2018DepthwiseSC
}
,研究人员提出使用更高效的
{
\small\bfnew
{
轻量卷积
}}
\index
{
轻量卷积
}
(Lightweight Convolution)
\index
{
Lightweight Convolution
}
和
{
\small\bfnew
{
动态卷积
}}
\index
{
动态卷积
}
(Dynamic Convolution)
\index
{
Dynamic convolution
}
来进行不同词之间的特征提取
\upcite
{
Wu2019PayLA
}
。本节将主要介绍这些改进的卷积操作。在后续章节中也会看到这些模型在神经机器翻译中的应用。
...
...
@@ -572,7 +572,7 @@
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
小结及拓展阅读
}
\parinterval
卷积是一种高效的神经网络结构,在图像、语音处理等领域取得了令人瞩目的成绩。本章介绍了卷积的概念及其特性,并对池化、填充等操作进行了讨论。本章介绍了具有高并行计算能力的机器翻译范式,即基于卷积神经网络的编码器-解码器框架。其在机器翻译任务上表现出色,并大幅度缩短了模型的训练周期。除了基础部分,本章还针对卷积计算进行了延伸,内容涉及逐通道卷积、逐点卷积、轻量卷积和动态卷积等。除了上述提及的内容,卷积神经网络及其变种在文本分类、命名实体识别、关系分类、事件抽取等其他自然语言处理任务上也有许多应用
\upcite
{
Kim2014ConvolutionalNN,2011Natural,DBLP:conf/cncl/ZhouZXQBX17,DBLP:conf/acl/ChenXLZ015,DBLP:conf/coling/ZengLLZZ14
}
。
...
...
Chapter12/Figures/figure-position-of-difference-and-layer-regularization-in-the-model.tex
查看文件 @
7a381f9b
...
...
@@ -71,6 +71,7 @@
\node
[rectangle,inner sep=0.2em,rounded corners=1pt,very thick,dotted,fill=red!40] [fit = (res2)] (box2)
{}
;
\node
[rectangle,inner sep=0.2em,rounded corners=1pt,very thick,dotted,fill=red!40] [fit = (res3)] (box3)
{}
;
\node
[rectangle,inner sep=0.2em,rounded corners=1pt,very thick,dotted,fill=red!40] [fit = (res4)] (box4)
{}
;
\node
[rectangle,inner sep=0.2em,rounded corners=1pt,very thick,dotted,fill=red!40] [fit = (res5)] (box5)
{}
;
\end{pgfonlayer}
\end{scope}
...
...
Chapter12/chapter12.tex
查看文件 @
7a381f9b
...
...
@@ -81,7 +81,6 @@
\label
{
eq:12-2
}
\end{eqnarray}
\parinterval
同理,也可以用同样的方法处理这个句子中的其他单词。可以看出,在自注意力机制中,并不是使用类似于循环神经网络的记忆能力去访问历史信息。序列中所有单词之间的信息都是通过同一种操作(
$
\mathrm
{
query
}$
和
$
\mathrm
{
key
}$
的相关度)进行处理。这样,表示结果
$
\tilde
{
h
}
(
\textrm
{
他
}
)
$
在包含“他”这个单词的信息的同时,也包含了序列中其他词的信息。也就是,序列中每一个位置的表示结果中,都包含了其他位置的信息。从这个角度说,
$
\tilde
{
h
}
(
\textrm
{
他
}
)
$
已经不再是单词“他”自身的表示结果,而是一种在单词“他”的位置上的全局信息的表示。
\parinterval
通常,也把生成
$
\tilde
{
h
}
(
w
_
i
)
$
的过程看作特征提取,而实现这个过程的模型被称为特征提取器。循环神经网络、卷积神经网络和自注意力模型都是典型的特征提取器。特征提取是神经机器翻译系统的关键步骤,在随后的内容中可以看到自注意力模型是一个非常适合机器翻译任务的特征提取器。
...
...
@@ -190,7 +189,7 @@
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
位置编码
}
\parinterval
在使用循环神经网络进行序列的信息提取时,每个时刻的运算都要依赖前一个时刻的输出,具有一定的时序性,这也与语言具有顺序的特点相契合。而采用自注意力机制对源语言和目标语言序列进行处理时,直接对当前位置和序列中的任意位置进行建模,忽略了词之间的顺序关系,例如图
\ref
{
fig:12-6
}
中两个语义不同的句子,通过自注意力得到的表示
$
\tilde
{
h
}$
(机票)却是相同的。
...
...
@@ -253,7 +252,7 @@
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
基于点乘的多头注意力机制
}
\parinterval
Transformer模型摒弃了循环单元和卷积等结构,完全基于注意力机制来构造模型,其中包含着大量的注意力计算。比如,可以通过自注意力机制对源语言和目标语言序列进行信息提取,并通过编码-解码注意力对双语句对之间的关系进行建模。图
\ref
{
fig:12-9
}
中红色方框部分是Transformer中使用注意力机制的模块。而这些模块都是由基于点乘的多头注意力机制实现的。
...
...
@@ -381,7 +380,7 @@
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
残差网络和层标准化
}
\parinterval
Transformer编码器、解码器分别由多层网络组成(通常为6层),每层网络又包含多个子层(自注意力网络、前馈神经网络)。因此Transformer实际上是一个很深的网络结构。再加上点乘注意力机制中包含很多线性和非线性变换;且注意力函数Attention(
$
\cdot
$
)的计算也涉及多层网络,整个网络的信息传递非常复杂。从反向传播的角度来看,每次回传的梯度都会经过若干步骤,容易产生梯度爆炸或者消失。解决这个问题的一种办法就是使用残差连接
\upcite
{
DBLP:journals/corr/HeZRS15
}
,此部分内容已经在
{
\chapternine
}
进行了介绍,这里不再赘述。
...
...
@@ -443,7 +442,7 @@
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
前馈全连接网络子层
}
\parinterval
在Transformer的结构中,每一个编码层或者解码层中都包含一个前馈神经网络,它在模型中的位置如图
\ref
{
fig:12-16
}
中红色方框所示。
...
...
@@ -468,7 +467,7 @@
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
训练
}
\parinterval
与前面介绍的神经机器翻译模型的训练一样,Transformer的训练流程为:首先对模型进行初始化,然后在编码器中输入包含结束符的源语言单词序列。前面已经介绍过,解码器每个位置单词的预测都要依赖已经生成的序列。在解码器输入包含起始符号的目标语言序列,通过起始符号预测目标语言的第一个单词,用真实的目标语言的第一个单词去预测第二个单词,以此类推,然后用真实的目标语言序列和预测的结果比较,计算它的损失。Transformer使用了交叉熵损失函数,损失越小说明模型的预测越接近真实输出。然后利用反向传播来调整模型中的参数。由于Transformer 将任意时刻输入信息之间的距离拉近为1,摒弃了RNN中每一个时刻的计算都要基于前一时刻的计算这种具有时序性的训练方式,因此Transformer中训练的不同位置可以并行化训练,大大提高了训练效率。
...
...
@@ -560,7 +559,7 @@ Transformer Deep(48层) & 30.2 & 43.1 & 194$\times 10^
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
推断
}
\parinterval
Transformer解码器生成译文词序列的过程和其它神经机器翻译系统类似,都是从左往右生成,且下一个单词的预测依赖已经生成的单词。其具体推断过程如图
\ref
{
fig:12-19
}
所示,其中
$
\mathbi
{
C
}_
i
$
是编码-解码注意力的结果,解码器首先根据“<sos>”和
$
\mathbi
{
C
}_
1
$
生成第一个单词“how”,然后根据“how”和
$
\mathbi
{
C
}_
2
$
生成第二个单词“are”,以此类推,当解码器生成“<eos>”时结束推断。
...
...
@@ -581,6 +580,7 @@ Transformer Deep(48层) & 30.2 & 43.1 & 194$\times 10^
%----------------------------------------------------------------------------------------
% NEW SECTION 12.3
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
小结及拓展阅读
}
\parinterval
编码器-解码器框架提供了一个非常灵活的机制,因为开发者只需要设计编码器和解码器的结构就能完成机器翻译。但是,架构的设计是深度学习中最具挑战的工
...
...
Chapter18/chapter18.tex
查看文件 @
7a381f9b
...
...
@@ -52,7 +52,7 @@
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
增量式模型优化
}
\parinterval
机器翻译的训练数据不是一成不变的。系统研发人员可以使用自有数据训练得到基础的翻译模型(或初始模型)。当应用这个基础模型时,可能会有新的数据出现,例如:
...
...
@@ -103,7 +103,7 @@
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
交互式机器翻译
}
\parinterval
机器翻译的结果会存在错误,因此很多时候需要人工的修改才能被使用。例如,在
{
\small\bfnew
译后编辑
}
\index
{
译后编辑
}
(Post-editing)
\index
{
Post-editing
}
中,翻译人员对机器翻译的译文进行修改,最终使译文达到要求。不过,译后编辑的成本很高,因为它需要翻译人员阅读机器翻译的结果,同时做出修改的动作。有时候,由于译文修改的内容较为复杂,译后编辑的时间甚至比人工直接翻译源语言句子的时间都长。因此在机器翻译应用中,需要更高效的方式调整机器翻译的结果,使其达到可用的程度。比如,可以使用质量评估方法(见
{
\chapterfour
}
),选择模型置信度较高的译文进行译后编辑,对置信度低的译文直接进行人工翻译。而另一种思路是,让人的行为直接影响机器翻译生成译文的过程,让人和机器翻译系统进行交互,在不断的修正中生成更好的译文。这种方法也被称作
{
\small\bfnew
交互式机器翻译
}
\index
{
交互式机器翻译
}
(Interactive Machine Translation,IMT)
\index
{
Interactive Machine Translation
}
。
...
...
@@ -142,7 +142,7 @@
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
翻译结果的可干预性
}
\parinterval
交互式机器翻译体现了一种用户的行为“干预”机器翻译结果的思想。实际上,在机器翻译出现错误时,人们总是希望用一种直接有效的方式“改变”译文,最短时间内达到改善翻译质量的目的。比如,如果机器翻译系统可以输出多个候选译文,用户可以在其中挑选最好的译文进行输出。也就是,人为干预了译文候选的排序过程。另一个例子是
{
\small\bfnew
{
翻译记忆
}}
\index
{
翻译记忆
}
(Translation Memory,TM
\index
{
Translation Memory
}
)。翻译记忆记录了高质量的源语言-目标语言句对,有时也可以被看作是一种先验知识或“记忆”。因此,当进行机器翻译时,使用翻译记忆指导翻译过程也可以被看作是一种干预手段
\upcite
{
DBLP:conf/acl/WangZS13,DBLP:conf/aaai/XiaHLS19
}
。
...
...
@@ -180,7 +180,7 @@
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
小设备机器翻译
}
\parinterval
在机器翻译研究中,一般会假设计算资源是充足的。但是,在很多应用场景中,机器翻译使用的计算资源非常有限,比如,一些离线设备上没有GPU,而且CPU的处理能力也很弱,甚至内存也非常有限。这时,让模型变得更小、系统变得更快就成为了重要的需求。
...
...
@@ -215,7 +215,7 @@
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
机器翻译系统的部署
}
\parinterval
除了在一些离线设备上使用机器翻译,更多时候机器翻译系统会部署在运算能力较强的服务器上。一方面随着神经机器翻译的大规模应用,在GPU服务器上部署机器翻译系统已经成为了常态。另一方面,GPU服务器的成本较高,而且很多应用中需要同时部署多个语言方向的系统。这时如何充分利用设备以满足大规模的翻译需求就成为了不可回避的问题。机器翻译系统的部署,有几个方向值得尝试:
...
...
@@ -253,7 +253,7 @@
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
机器翻译的应用场景
}
\parinterval
机器翻译有着十分广泛的应用,这里列举了一些常见的应用场景:
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论