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
a3aa6b49
Commit
a3aa6b49
authored
Nov 30, 2020
by
孟霞
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新 chapter14.tex
parent
c11bf1a5
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
11 行增加
和
11 行删除
+11
-11
Chapter14/chapter14.tex
+11
-11
没有找到文件。
Chapter14/chapter14.tex
查看文件 @
a3aa6b49
...
...
@@ -49,11 +49,11 @@
\vspace
{
0.5em
}
\end{itemize}
\parinterval
这个过程与统计机器翻译中自左向右翻译是一样的(见
{
\chapterseven
}
),即,在
每一个目标语
位置,根据已经生成的译文和源语言的信息,生成下一个译文单词
\upcite
{
Koehn2007Moses,DBLP:conf/amta/Koehn04
}
。它可以由两个模块实现
\upcite
{
DBLP:conf/emnlp/StahlbergHSB17
}
:
\parinterval
这个过程与统计机器翻译中自左向右翻译是一样的(见
{
\chapterseven
}
),即,在
目标语言的每个
位置,根据已经生成的译文和源语言的信息,生成下一个译文单词
\upcite
{
Koehn2007Moses,DBLP:conf/amta/Koehn04
}
。它可以由两个模块实现
\upcite
{
DBLP:conf/emnlp/StahlbergHSB17
}
:
\begin{itemize}
\vspace
{
0.5em
}
\item
预测模块,也就是根据已经翻译的历史和源语言句子,预测下一个要生成单词的概率
\footnote
{
在统计机器翻译中,翻译的每一步也可以预测短语。在神经机器翻译中也有类似于生成短语的方
\item
预测模块,也就是根据已经翻译的历史和源语言句子,预测下一个要生成单词的概率
分布
\footnote
{
在统计机器翻译中,翻译的每一步也可以预测短语。在神经机器翻译中也有类似于生成短语的方
法,但是主流的方法还是按单词为单位进行生成。
}
。因此预测模块实际上就是一个模型打分装置;
\vspace
{
0.5em
}
\item
搜索模块,它会利用预测结果,对当前的翻译假设进行打分,并根据模型得分对翻译假设进行排序和剪枝。
...
...
@@ -73,7 +73,7 @@
\parinterval
这是一个非常通用的框架,同样适用基于统计的机器翻译模型。因此,神经机器翻译推断中的很多问题与统计机器翻译是一致的,比如:束搜索的宽度、解码终止条件等等。
\parinterval
一般来说,机器翻译推断系统的设计要考虑三个因素:搜索的准确性、搜索的时延、搜索所需要的存储。通常,准确性是研究人员最关心的问题,比如可以通过增大搜索空间来找到模型得分更高的结果。而搜索的
延时和存储消耗是实践中必须要考虑的问题,比如,可以设计合理的搜索终止条件降低延时
。
\parinterval
一般来说,机器翻译推断系统的设计要考虑三个因素:搜索的准确性、搜索的时延、搜索所需要的存储。通常,准确性是研究人员最关心的问题,比如可以通过增大搜索空间来找到模型得分更高的结果。而搜索的
时延和存储消耗是实践中必须要考虑的问题,比如,可以设计合理的搜索终止条件降低搜索时延
。
\parinterval
虽然,上述问题在统计机器翻译中都有讨论,但是在神经机器翻译中又面临着新的挑战。
...
...
@@ -81,13 +81,13 @@
\vspace
{
0.5em
}
\item
搜索的基本问题在神经机器翻译中有着特殊的现象。比如,在统计机器翻译中,降低搜索错误是提升翻译效果的一种手段。但是神经机器翻译中,简单的降低搜索错误可能无法带来性能的提升,甚至造成翻译品质的下降
\upcite
{
li-etal-2018-simple,Stahlberg2019OnNS
}
;
\vspace
{
0.5em
}
\item
搜索的
延时
很高,系统实际部署的成本很高。与统计机器翻译系统不同的是,神经机器翻译依赖大量的浮点预算。这也造成神经机器翻译系统的推断会比统计机器翻译系统慢很多。虽然可以使用GPU来加速神经机器翻译的推断速度,但是也大大增加了成本;
\item
搜索的
时延
很高,系统实际部署的成本很高。与统计机器翻译系统不同的是,神经机器翻译依赖大量的浮点预算。这也造成神经机器翻译系统的推断会比统计机器翻译系统慢很多。虽然可以使用GPU来加速神经机器翻译的推断速度,但是也大大增加了成本;
\vspace
{
0.5em
}
\item
神经机器翻译
优化容易陷入局部最优,单模型的表现并不稳定。由于神经机器翻译优化的目标函数非常不光滑,每次训练得到的模型往往只是一个局部最优解。在新数据上,使用这个局部最优模型进行推断时
模型的表现可能不稳定。
\item
神经机器翻译
在优化过程中容易陷入局部最优,单模型的表现并不稳定。由于神经机器翻译优化的目标函数非常不光滑,每次训练得到的模型往往只是一个局部最优解。在新数据上使用这个局部最优模型进行推断时,
模型的表现可能不稳定。
\vspace
{
0.5em
}
\end{itemize}
\parinterval
研究者们也针对以上问题开展了大量的研究工作。在
\ref
{
sec:14-2
}
节中,我们会对神经机器翻译推断中所涉及的一些基本问题进行讨论。虽然这些问题在统计机器翻译中均有涉及,但是在神经机器翻译中却有着不同的现象和解决思路。在
\ref
{
sec:14-3
}
-
\ref
{
sec:14-5
}
节中,我们会针对
改进神经机器翻译推断效率和多模型融合
进行讨论。
\parinterval
研究者们也针对以上问题开展了大量的研究工作。在
\ref
{
sec:14-2
}
节中,我们会对神经机器翻译推断中所涉及的一些基本问题进行讨论。虽然这些问题在统计机器翻译中均有涉及,但是在神经机器翻译中却有着不同的现象和解决思路。在
\ref
{
sec:14-3
}
-
\ref
{
sec:14-5
}
节中,我们会针对
如何改进神经机器翻译推断效率和怎样进行多模型融合这两个问题
进行讨论。
%----------------------------------------------------------------------------------------
% NEW SECTION
...
...
@@ -103,7 +103,7 @@
\subsection
{
推断的方向
}
\parinterval
机器翻译有两种常用的推断方式
\ \dash
\
自左向右
翻译和自右向左翻译。自左向右翻译符合现实世界中人类的语言使用规律,因为在人为翻译一个句子时,人们总是习惯从句子开始的部分往后生成
\footnote
{
有些语言中,文字是自右向左书写,这时自右向左翻译
更符合人类使用这种语言的习惯。
}
。不过,有时候人也会使用当前单词后面的译文信息。也就是说,翻译也需要“未来” 的文字信息。于是很容易想到使用自右向左的方法对译文进行生成。
\parinterval
机器翻译有两种常用的推断方式
\ \dash
\
自左向右
推断和自右向左推断。自左向右推断符合现实世界中人类的语言使用规律,因为在人为翻译一个句子时,人们总是习惯从句子开始的部分往后生成
\footnote
{
有些语言中,文字是自右向左书写,这时自右向左推断
更符合人类使用这种语言的习惯。
}
。不过,有时候人也会使用当前单词后面的译文信息。也就是说,翻译也需要“未来” 的文字信息。于是很容易想到使用自右向左的方法对译文进行生成。
\parinterval
以上两种推断方式在神经机器翻译中都有应用,对于源语言句子
$
\seq
{
x
}
=
\{
x
_
1
,x
_
2
,
\dots
,x
_
m
\}
$
和目标语句子
$
\seq
{
y
}
=
\{
y
_
1
,y
_
2
,
\dots
,y
_
n
\}
$
,用自左向右的方式可以将翻译概率
$
\funp
{
P
}
(
\seq
{
y
}
\vert\seq
{
x
}
)
$
描述为公式
\eqref
{
eq:14-1
}
:
...
...
@@ -119,7 +119,7 @@
\end{eqnarray}
\parinterval
其中,
$
\seq
{
y
}_{
<j
}
=
\{
y
_
1
,y
_
2
,
\dots
,y
_{
j
-
1
}
\}
$
,
$
\seq
{
y
}_{
>j
}
=
\{
y
_{
j
+
1
}
,y
_{
j
+
2
}
,
\dots
,y
_
n
\}
$
。
\parinterval
可以看到,自左向右推断和自右向左推断本质上是一样的。
第十章
$
\sim
$
第十二章均使用了自左向右的推断方法。自右向左推断比较简单的实现方式是:直接将训练用双语数据中的目标语句子进行反向,之后仍然使用原始的模型进行训练即可。在推断的时候,生成的目标语词串也需要进行反向得到最终的译文。有时候,使用自右向左的翻译方式会取得更好的效果
\upcite
{
DBLP:conf/wmt/SennrichHB16
}
。不过更多情况下需要同时使用词串左端(历史)和右端(未来)的信息。有多种思路
:
\parinterval
可以看到,自左向右推断和自右向左推断本质上是一样的。
\chapterten
$
\sim
$
\chaptertwelve
均使用了自左向右的推断方法。自右向左推断比较简单的实现方式是:在训练过程中直接将双语数据中的目标语句子进行反向,之后仍然使用原始的模型进行训练即可。在推断的时候,生成的目标语词串也需要进行反向得到最终的译文。有时候,使用自右向左的推断方式会取得更好的效果
\upcite
{
DBLP:conf/wmt/SennrichHB16
}
。不过更多情况下需要同时使用词串左端(历史)和右端(未来)的信息。有多种思路可以融合左右两端信息
:
\begin{itemize}
\vspace
{
0.5em
}
...
...
@@ -127,13 +127,13 @@
\vspace
{
0.5em
}
\item
{
\small\sffamily\bfseries
{
双向推断
}}
\index
{
双向推断
}
(Bidirectional Inference)
\index
{
Bidirectional Inference
}
。另一种方法是,让自左向右和自右向左模型同步进行,也就是同时考虑译文左侧和右侧的文字信息
\upcite
{
DBLP:conf/aaai/ZhangSQLJW18,Zhou2019SynchronousBN,DBLP:conf/aaai/ZhangSQLJW18
}
。例如,可以同时对左边和右边生成的译文进行注意力计算,得到当前位置的单词预测结果。这种方法能够更加充分的融合双向翻译的优势。
\vspace
{
0.5em
}
\item
{
\small\sffamily\bfseries
{
多阶段推断
}}
\index
{
多阶段推断
}
(Multi-stage Inference)
\index
{
Multi-stage Inference
}
。在第一阶段,通过一个基础模型生成一个初步的翻译结果。在第二阶段,同时使用第一阶段生成的翻译结果和源语言句子,进一步生成更好的译文
\upcite
{
Li2017EnhancedNM,ElMaghraby2018EnhancingTF,Geng2018AdaptiveMD
}
。由于第一阶段的结果已经包含了完整的译文,因此在第二阶段中,系统实际上已经同时使用了整个译文串的两端信息。上述过程可以扩展为迭代式的译文生成方法,配合掩码等技术,可以在生成每个译文单词时,同时考虑左右两端的上下文信息
\upcite
{
Lee2018DeterministicNN,Gu2019LevenshteinT,Guo2020JointlyMS
}
。
\item
{
\small\sffamily\bfseries
{
多阶段推断
}}
\index
{
多阶段推断
}
(Multi-stage Inference)
\index
{
Multi-stage Inference
}
。在第一阶段,通过一个基础模型生成一个初步的翻译结果。在第二阶段,同时使用第一阶段生成的翻译结果和源语言句子,进一步生成更好的译文
\upcite
{
Li2017EnhancedNM,ElMaghraby2018EnhancingTF,Geng2018AdaptiveMD
}
。由于第一阶段的结果已经包含了完整的译文
信息
,因此在第二阶段中,系统实际上已经同时使用了整个译文串的两端信息。上述过程可以扩展为迭代式的译文生成方法,配合掩码等技术,可以在生成每个译文单词时,同时考虑左右两端的上下文信息
\upcite
{
Lee2018DeterministicNN,Gu2019LevenshteinT,Guo2020JointlyMS
}
。
\vspace
{
0.5em
}
\end{itemize}
\parinterval
不论是自左向右还是自右向左
翻译,本质上都是在对上下文信息进行建模。除了自左向右和自右向左的翻译
策略,研究者们也提出了许多新的译文生成策略,比如,
{
\small\sffamily\bfseries
{
从中部向外生成
}}
\index
{
从中部向外生成
}
(Middle-Out Decoding)
\index
{
Middle-Out Decoding
}
、按源语言顺序生成
\upcite
{
Stahlberg2018AnOS
}
、基于插入的方式生成
\upcite
{
Stern2019InsertionTF,stling2017NeuralMT
}
等。或者将翻译问题松弛化为一个连续空间模型的优化问题,进而在推断的过程中同时使用译文串左右两端的信息
\upcite
{
Geng2018AdaptiveMD
}
。
\parinterval
不论是自左向右还是自右向左
推断,本质上都是在对上下文信息进行建模。除了自左向右和自右向左的推断
策略,研究者们也提出了许多新的译文生成策略,比如,
{
\small\sffamily\bfseries
{
从中部向外生成
}}
\index
{
从中部向外生成
}
(Middle-Out Decoding)
\index
{
Middle-Out Decoding
}
、按源语言顺序生成
\upcite
{
Stahlberg2018AnOS
}
、基于插入的方式生成
\upcite
{
Stern2019InsertionTF,stling2017NeuralMT
}
等。或者将翻译问题松弛化为一个连续空间模型的优化问题,进而在推断的过程中同时使用译文串左右两端的信息
\upcite
{
Geng2018AdaptiveMD
}
。
\parinterval
最近,以BERT 为代表的预训练语言模型已经证明,一个单词的“历史” 和“未来” 信息对于生成当前单词都是有帮助的
\upcite
{
devlin2019bert
}
。类似的观点也在神经机器翻译编码器设计中得到验证。比如,在基于循环神经网络的模型中,经常同时使用自左向右和自右向左的方式对源语言句子进行编码。还有,Transformer 编码会使用整个句子的信息对每一个源语言位置进行表示。因此,在神经机器翻译的解码端采用类似的策略是有其合理性的。
\parinterval
最近,以BERT 为代表的预训练语言模型已经证明,一个单词的“历史” 和“未来” 信息对于生成当前单词都是有帮助的
\upcite
{
devlin2019bert
}
。类似的观点也在神经机器翻译编码器设计中得到验证。比如,在基于循环神经网络的模型中,经常同时使用自左向右和自右向左的方式对源语言句子进行编码。还有,Transformer 编码
器
会使用整个句子的信息对每一个源语言位置进行表示。因此,在神经机器翻译的解码端采用类似的策略是有其合理性的。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论