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
03cda473
Commit
03cda473
authored
Nov 30, 2020
by
孟霞
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新 chapter14.tex
parent
1f62dd6a
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
9 行增加
和
9 行删除
+9
-9
Chapter14/chapter14.tex
+9
-9
没有找到文件。
Chapter14/chapter14.tex
查看文件 @
03cda473
...
...
@@ -185,7 +185,7 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
\textrm
{
cp
}
(
\seq
{
x
}
,
\seq
{
y
}
)
&
=
&
\beta
\cdot
\sum
_{
i=1
}^{
|
\seq
{
x
}
|
}
\log
(
\textrm
{
min
}
(
\sum
_{
j
}^{
|
\seq
{
y
}
|
}
a
_{
ij
}
, 1))
\label
{
eq:14-6
}
\end{eqnarray}
\noindent
其中,
$
\textrm
{
cp
}
(
\seq
{
x
}
,
\seq
{
y
}
)
$
表示覆盖度模型,它度量了译文对源语言每个单词的覆盖程度。
$
\textrm
{
cp
}
(
\seq
{
x
}
,
\seq
{
y
}
)
$
的定义中,
$
a
_{
ij
}$
表示源语言第
$
i
$
个位置与目标语第
$
j
$
个位置的注意力权重,这样
$
\sum
\limits
_{
j
}^{
|
\seq
{
y
}
|
}
a
_{
ij
}$
就可以
被当作是
源语言第
$
i
$
个单词被翻译了“多少”,如果它大于1,表明翻译多了;如果小于1,表明翻译少了。公式
\eqref
{
eq:14-6
}
会惩罚那些欠翻译的翻译假设。覆盖度模型的一种改进形式是
\upcite
{
li-etal-2018-simple
}
:
\noindent
其中,
$
\textrm
{
cp
}
(
\seq
{
x
}
,
\seq
{
y
}
)
$
表示覆盖度模型,它度量了译文对源语言每个单词的覆盖程度。
$
\textrm
{
cp
}
(
\seq
{
x
}
,
\seq
{
y
}
)
$
的定义中,
$
a
_{
ij
}$
表示源语言第
$
i
$
个位置与目标语第
$
j
$
个位置的注意力权重,这样
$
\sum
\limits
_{
j
}^{
|
\seq
{
y
}
|
}
a
_{
ij
}$
就可以
用来衡量
源语言第
$
i
$
个单词被翻译了“多少”,如果它大于1,表明翻译多了;如果小于1,表明翻译少了。公式
\eqref
{
eq:14-6
}
会惩罚那些欠翻译的翻译假设。覆盖度模型的一种改进形式是
\upcite
{
li-etal-2018-simple
}
:
\begin{eqnarray}
\textrm
{
cp
}
(
\seq
{
x
}
,
\seq
{
y
}
) =
\sum
_{
i=1
}^{
|
\seq
{
x
}
|
}
\log
(
\textrm
{
max
}
(
\sum
_{
j
}^{
|
\seq
{
y
}
|
}
a
_{
ij
}
,
\beta
))
...
...
@@ -201,13 +201,13 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
\subsection
{
搜索终止条件
}
\parinterval
在机器翻译推断中,何时终止搜索是一个非常基础的问题。如
\chaptertwo
所述,系统研发者一方面希望尽可能遍历更大的搜索空间,找到更好的结果,另一方面也希望在尽可能短的时间内得到结果。这时搜索的终止条件就是一个非常关键的指标。在束搜索中有很多终止条件可以使用,比如,在生成一定数量的译文之后就终止搜索,或者当最佳译文
比排名第二的译文分数的差
超过一个阈值时就终止搜索等。
\parinterval
在机器翻译推断中,何时终止搜索是一个非常基础的问题。如
\chaptertwo
所述,系统研发者一方面希望尽可能遍历更大的搜索空间,找到更好的结果,另一方面也希望在尽可能短的时间内得到结果。这时搜索的终止条件就是一个非常关键的指标。在束搜索中有很多终止条件可以使用,比如,在生成一定数量的译文之后就终止搜索,或者当最佳译文
与排名第二的译文之间的分数差距
超过一个阈值时就终止搜索等。
\parinterval
在统计机器翻译中,搜索的终止条件相对容易设计。因为所有的翻译结果都可以用相同步骤的搜索过程生成,比如,在CYK解码中搜索的步骤仅与构建的分析表大小有关。在神经机器翻译
,这个问题要更加复杂。当系统找到一个完整的译文之后,可能还有很多译文没有被生成完,这时就面临着如何决定是否继续搜索的问题
。
\parinterval
在统计机器翻译中,搜索的终止条件相对容易设计。因为所有的翻译结果都可以用相同步骤的搜索过程生成,比如,在CYK解码中搜索的步骤仅与构建的分析表大小有关。在神经机器翻译
中,这个问题要更加复杂。当系统找到一个完整的译文之后,可能还有很多译文没有被生成完,这时就面临着一个问题
\ \dash
\
如何决定是否继续搜索
。
\parinterval
针对这些问题,研究者们设计了很多新的方法。比如,有研究者
可以在束搜索中使用启发性信息让搜索尽可能早的停止,同时保证搜索结果是“最优的”
\upcite
{
DBLP:conf/emnlp/HuangZM17
}
。也有研究者将束搜索建模为优化问题
\upcite
{
Wiseman2016SequencetoSequenceLA,DBLP:conf/emnlp/Yang0M18
}
,进而设计出新的终止条件
\upcite
{
Ma2019LearningTS
}
。很多开源机器翻译系统也都使用了巧妙的终止条件,比如,在OpenNMT系统中当搜索束中当前最好的假设生成了完整的译文搜索就会停止
\upcite
{
KleinOpenNMT
}
,在RNNSearch系统中当找到与
预设数量的译文时搜索就会停止,同时在这个过程中会不断减小搜索束的大小
\upcite
{
bahdanau2014neural
}
。
\parinterval
针对这些问题,研究者们设计了很多新的方法。比如,有研究者
提出可以在束搜索中使用启发性信息让搜索尽可能早的停止,同时保证搜索结果是“最优的”
\upcite
{
DBLP:conf/emnlp/HuangZM17
}
。也有研究者将束搜索建模为优化问题
\upcite
{
Wiseman2016SequencetoSequenceLA,DBLP:conf/emnlp/Yang0M18
}
,进而设计出新的终止条件
\upcite
{
Ma2019LearningTS
}
。很多开源机器翻译系统也都使用了巧妙的终止条件,比如,在OpenNMT系统中当搜索束中当前最好的假设生成了完整的译文搜索就会停止
\upcite
{
KleinOpenNMT
}
,在RNNSearch系统中当找到
预设数量的译文时搜索就会停止,同时在这个过程中会不断减小搜索束的大小
\upcite
{
bahdanau2014neural
}
。
\parinterval
实际上,设计搜索终止条件反映了搜索
延时
和搜索精度之间的一种折中
\upcite
{
Eisner2011LearningST,Jiang2012LearnedPF
}
。在很多应用中,这个问题会非常关键。比如,在同声传译中,对于输入的长文本,何时开始翻译、何时结束翻译都是十分重要的
\upcite
{
Zheng2020OpportunisticDW,Ma2019STACLST
}
。在很多线上翻译应用中,翻译结果的响应不能超过一定的时间,这时就需要一种
{
\small\sffamily\bfseries
{
时间受限的搜索
}}
\index
{
时间受限的搜索
}
(Time-constrained Search)
\index
{
Time-constrained Search
}
策略
\upcite
{
DBLP:conf/emnlp/StahlbergHSB17
}
。
\parinterval
实际上,设计搜索终止条件反映了搜索
时延
和搜索精度之间的一种折中
\upcite
{
Eisner2011LearningST,Jiang2012LearnedPF
}
。在很多应用中,这个问题会非常关键。比如,在同声传译中,对于输入的长文本,何时开始翻译、何时结束翻译都是十分重要的
\upcite
{
Zheng2020OpportunisticDW,Ma2019STACLST
}
。在很多线上翻译应用中,翻译结果的响应不能超过一定的时间,这时就需要一种
{
\small\sffamily\bfseries
{
时间受限的搜索
}}
\index
{
时间受限的搜索
}
(Time-constrained Search)
\index
{
Time-constrained Search
}
策略
\upcite
{
DBLP:conf/emnlp/StahlbergHSB17
}
。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
...
...
@@ -236,7 +236,7 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
%----------------------------------------------------------------------
\parinterval
机器翻译输出缺乏多样性会带来很多问题。一个直接的问题是在重排序时无法选择到更好的译文,因为所有候选都没有太大的差别。另一方面,当需要利用
$
n
$
-best输出来表示翻译假设空间时,缺乏多样性的译文也会使得翻译后验概率的估计不够准确,造成建模的偏差。在一些模型训练方法中,这种后验概率估计的偏差也会造成较大的影响
\upcite
{
DBLP:conf/acl/ShenCHHWSL16
}
。从人工翻译的角度,同一个源语言句子的译文应该是多样的,因此过于相似的译文也无法反映足够多的翻译现象。
\parinterval
因此增加译文多样性成为了机器翻译
研究中一个有价值的
方向。在统计机器翻译中就有很多尝试
\upcite
{
DBLP:conf/emnlp/DuanLXZ09,DBLP:conf/acl/XiaoZZW10,xiao2013bagging
}
。主要思路是通过加入一些“扰动”让翻译模型的行为发生变化,进而得到区别更大的译文。类似的方法也同样适用于神经机器翻译。例如,可以在推断过程中加入额外的模型,用于惩罚出现相似译文的情况
\upcite
{
Li2016ADO,Li2016MutualIA
}
。也有研究者在翻译模型中引入新的隐含变量或者加入新的干扰,进而控制多样性译文的输出
\upcite
{
He2018SequenceTS,Shen2019MixtureMF,Wu2020GeneratingDT
}
。类似的,也可以利用模型中局部结构的多样性来生成多样的译文
\upcite
{
Sun2020GeneratingDT
}
。除了考虑每个译文之间的多样性,也可以对译文进行分组,之后增加不同组之间的多样性
\upcite
{
Vijayakumar2016DiverseBS
}
。
\parinterval
因此增加译文多样性成为了机器翻译
中一个有价值的研究
方向。在统计机器翻译中就有很多尝试
\upcite
{
DBLP:conf/emnlp/DuanLXZ09,DBLP:conf/acl/XiaoZZW10,xiao2013bagging
}
。主要思路是通过加入一些“扰动”让翻译模型的行为发生变化,进而得到区别更大的译文。类似的方法也同样适用于神经机器翻译。例如,可以在推断过程中加入额外的模型,用于惩罚出现相似译文的情况
\upcite
{
Li2016ADO,Li2016MutualIA
}
。也有研究者在翻译模型中引入新的隐含变量或者加入新的干扰,进而控制多样性译文的输出
\upcite
{
He2018SequenceTS,Shen2019MixtureMF,Wu2020GeneratingDT
}
。类似的,也可以利用模型中局部结构的多样性来生成多样的译文
\upcite
{
Sun2020GeneratingDT
}
。除了考虑每个译文之间的多样性,也可以对译文进行分组,之后增加不同组之间的多样性
\upcite
{
Vijayakumar2016DiverseBS
}
。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
...
...
@@ -244,9 +244,9 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
\subsection
{
搜索错误
}
\parinterval
机器翻译的错误分为两类:搜索错误和模型错误。搜索错误是指由于搜索算法的限制,即使
在
潜在的搜索空间中有更好的解,模型也无法找到。比较典型的例子是,在对搜索进行剪枝的时候,如果剪枝过多,找到的结果很有可能不是最优的。这时就出现了搜索错误。
\parinterval
机器翻译的错误分为两类:搜索错误和模型错误。搜索错误是指由于搜索算法的限制,即使潜在的搜索空间中有更好的解,模型也无法找到。比较典型的例子是,在对搜索进行剪枝的时候,如果剪枝过多,找到的结果很有可能不是最优的。这时就出现了搜索错误。
\parinterval
在统计机器翻译中,搜索错误可以通过减少剪枝进行缓解。比较简单的方式是增加
束宽度,这往往会带来一定的性能提升
\upcite
{
Xiao2016ALA
}
。也可以对搜索问题单独建模,以保证学习到的模型出现更少的搜索错误
\upcite
{
Liu2014SearchAwareTF,Yu2013MaxViolationPA
}
。但是,在神经机器翻译中,这个问题却表现出不同的现象。在很多神经机器翻译系统中,随着搜索束的增大,系统的BLEU不升反降。图
\ref
{
fig:14-3
}
展示了BLEU随着
束大小的变化曲线。这个现象与传统的常识是相违背的,因此也有一些研究尝试解释这个现象
\upcite
{
Stahlberg2019OnNS,Niehues2017AnalyzingNM
}
。在实验中,研究者也发现增加搜索束的大小会导致翻译生成的结果变得更短。他们将这个现象归因于:增加搜索束的大小,会导致更多的模型错误,因为神经机器翻译的建模是基于局部归一的最大似然估计
\upcite
{
Sountsov2016LengthBI,Murray2018CorrectingLB,StahlbergNeural
}
。另一方面,也有研究者把这种翻译过短的现象归因于搜索错误
\upcite
{
Stahlberg2019OnNS
}
。由于搜索时所面临的搜索空间是十分巨大的,因此搜索时可能无法找到模型定义的“最好”的译文。在某种意义上,这也体现了一种训练和推断不一致的问题。
\parinterval
在统计机器翻译中,搜索错误可以通过减少剪枝进行缓解。比较简单的方式是增加
搜索束宽度,这往往会带来一定的性能提升
\upcite
{
Xiao2016ALA
}
。也可以对搜索问题进行单独建模,以保证学习到的模型出现更少的搜索错误
\upcite
{
Liu2014SearchAwareTF,Yu2013MaxViolationPA
}
。但是,在神经机器翻译中,这个问题却表现出不同的现象:在很多神经机器翻译系统中,随着搜索束的增大,系统的BLEU不升反降。图
\ref
{
fig:14-3
}
展示了BLEU随
束大小的变化曲线。这个现象与传统的常识是相违背的,因此也有一些研究尝试解释这个现象
\upcite
{
Stahlberg2019OnNS,Niehues2017AnalyzingNM
}
。在实验中,研究者也发现增加搜索束的大小会导致翻译生成的结果变得更短。他们将这个现象归因于:增加搜索束的大小,会导致更多的模型错误,因为神经机器翻译的建模是基于局部归一的最大似然估计
\upcite
{
Sountsov2016LengthBI,Murray2018CorrectingLB,StahlbergNeural
}
。另一方面,也有研究者把这种翻译过短的现象归因于搜索错误
\upcite
{
Stahlberg2019OnNS
}
。由于搜索时所面临的搜索空间是十分巨大的,因此搜索时可能无法找到模型定义的“最好”的译文。在某种意义上,这也体现了一种训练和推断不一致的问题。
%----------------------------------------------------------------------
\begin{figure}
[htp]
...
...
@@ -257,7 +257,7 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
\end{figure}
%----------------------------------------------------------------------
\parinterval
也有研究者针对降低搜索错误提出了一些解决方案。典型的思路是从训练和推断的行为和目标不一致的角度切入。比如,为了解决
{
\small\sffamily\bfseries
{
曝光偏置
}}
\index
{
曝光偏置
}
(Exposure Bias)
\index
{
Exposure Bias
}
问题
\upcite
{
Ranzato2016SequenceLT
}
,可以让系统使用前面步骤的预测结果作为预测下一个词所需要的历史信息,而不是依赖于标准答案
\upcite
{
Bengio2015ScheduledSF,Zhang2019BridgingTG
}
。另一方面,为了解决训练和推断目标不一致的问题,可以在训练的时候模拟推断的行为,同时让模型训练的目标与评价系统的
方法
尽可能一致
\upcite
{
DBLP:conf/acl/ShenCHHWSL16
}
。
\parinterval
也有研究者针对降低搜索错误提出了一些解决方案。典型的思路是从训练和推断的行为和目标不一致的角度切入。比如,为了解决
{
\small\sffamily\bfseries
{
曝光偏置
}}
\index
{
曝光偏置
}
(Exposure Bias)
\index
{
Exposure Bias
}
问题
\upcite
{
Ranzato2016SequenceLT
}
,可以让系统使用前面步骤的预测结果作为预测下一个词所需要的历史信息,而不是依赖于标准答案
\upcite
{
Bengio2015ScheduledSF,Zhang2019BridgingTG
}
。另一方面,为了解决训练和推断目标不一致的问题,可以在训练的时候模拟推断的行为,同时让模型训练的目标与评价系统的
标准
尽可能一致
\upcite
{
DBLP:conf/acl/ShenCHHWSL16
}
。
\parinterval
需要注意的是,前面提到的搜索束变大造成的翻译品质下降的问题还有其它解决方法。比如,可以通过对结果重排序来缓解这个问题
\upcite
{
DBLP:conf/emnlp/Yang0M18
}
,也可以通过设计更好的覆盖度模型来生成长度更加合理的译文
\upcite
{
li-etal-2018-simple
}
。从这个角度说,上述问题的成因也较为复杂,因此需要同时考虑模型错误和搜索错误。
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论