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
5d68b79e
Commit
5d68b79e
authored
Jan 02, 2022
by
单韦乔
Browse files
Options
Browse Files
Download
Plain Diff
合并分支 'caorunzhe' 到 'shanweiqiao'
Caorunzhe 查看合并请求
!1135
parents
2e5209e7
cb2fba93
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
13 个修改的文件
包含
39 行增加
和
124 行删除
+39
-124
Chapter10/chapter10.tex
+2
-2
Chapter11/chapter11.tex
+1
-1
Chapter14/chapter14.tex
+4
-4
Chapter17/chapter17.tex
+2
-2
Chapter3/chapter3.tex
+0
-0
Chapter4/chapter4.tex
+3
-3
Chapter5/chapter5.tex
+3
-3
Chapter6/Figures/figure-examples-of-sequential-translation-and-reorder-translation.tex
+2
-2
Chapter7/Figures/figure-word-and-phrase-translation-regard-as-path.tex
+7
-5
Chapter7/chapter7.tex
+2
-2
Chapter8/chapter8.tex
+2
-2
Chapter9/chapter9.tex
+4
-4
bibliography.bib
+7
-94
没有找到文件。
Chapter10/chapter10.tex
查看文件 @
5d68b79e
...
...
@@ -541,7 +541,7 @@ $\funp{P}({y_j | \mathbi{s}_{j-1} ,y_{j-1},\mathbi{C}})$由Softmax实现,Softm
\hat
{
\mathbi
{
c
}}_
t
&
=
&
\textrm
{
Tanh
}
([
\mathbi
{
h
}_{
t-1
}
,
\mathbi
{
x
}_{
t
}
]
\mathbi
{
W
}_
c +
\mathbi
{
b
}_
c )
\label
{
eq:10-8
}
\end{eqnarray}
之后,用
$
\mathbi
{
i
}_
t
$
点乘
$
\hat
{
\mathbi
{
c
}}_
t
$
,得到当前需要记忆的信息,记为
$
\mathbi
{
i
}_
t
\odot
\hat
{
\mathbi
{
c
}}_
t
$
。接下来需要更新旧的信息
$
\mathbi
{
c
}_{
t
-
1
}$
,得到新的记忆信息
$
\mathbi
{
c
}_
t
$
,更新的操作如图
\ref
{
fig:10-11
}
(c)红色线部分所示,“
$
\bigoplus
$
”表示相加。具体规则是通过遗忘门选择忘记一部分上文信息
$
\mathbi
{
f
}_
t
$
,通过输入门计算新增的信息
$
\mathbi
{
i
}_
t
\odot
\hat
{
\mathbi
{
c
}}_
t
$
,然后根据“
$
\bigotimes
$
”门与“
$
\bigoplus
$
”门进行相应的乘法和加法计算,如公式
\eqref
{
eq:10-9
}
:
之后,用
$
\mathbi
{
i
}_
t
$
点乘
$
\hat
{
\mathbi
{
c
}}_
t
$
,得到当前需要记忆的信息,记为
$
\mathbi
{
i
}_
t
\odot
\hat
{
\mathbi
{
c
}}_
t
$
。接下来需要更新旧的信息
$
\mathbi
{
c
}_{
t
-
1
}$
,得到新的记忆信息
$
\mathbi
{
c
}_
t
$
,更新的操作如图
\ref
{
fig:10-11
}
(c)红色线部分所示,“
$
\bigoplus
$
”表示相加。具体规则是通过遗忘门选择忘记一部分上文信息
$
\mathbi
{
f
}_
t
\odot
\mathbi
{
c
}_{
t
-
1
}
$
,通过输入门计算新增的信息
$
\mathbi
{
i
}_
t
\odot
\hat
{
\mathbi
{
c
}}_
t
$
,然后根据“
$
\bigotimes
$
”门与“
$
\bigoplus
$
”门进行相应的乘法和加法计算,如公式
\eqref
{
eq:10-9
}
:
\begin{eqnarray}
\mathbi
{
c
}_
t
&
=
&
\mathbi
{
f
}_
t
\odot
\mathbi
{
c
}_{
t-1
}
+
\mathbi
{
i
}_
t
\odot
\hat
{
\mathbi
{
c
}_
t
}
\label
{
eq:10-9
}
...
...
@@ -573,7 +573,7 @@ $\funp{P}({y_j | \mathbi{s}_{j-1} ,y_{j-1},\mathbi{C}})$由Softmax实现,Softm
\subsection
{
门控循环单元
}
\parinterval
LSTM 通过门控单元控制传递状态,忘记不重要的信息,记住必要的历史信息,在长序列上取得了很好的效果,但是其进行了许多门信号的计算,较为繁琐。
{
\small\bfnew
{
门
循环单元
}}
\index
{
门
循环单元
}
(Gated Recurrent Unit,GRU)
\index
{
Gated Recurrent Unit
}
作为一个LSTM的变种,继承了LSTM中利用门控单元控制信息传递的思想,并对LSTM进行了简化
\upcite
{
Cho2014Learning
}
。它把循环单元状态
$
\mathbi
{
h
}_
t
$
和记忆
$
\mathbi
{
c
}_
t
$
合并成一个状态
$
\mathbi
{
h
}_
t
$
,同时使用了更少的门控单元,大大提升了计算效率。
\parinterval
LSTM 通过门控单元控制传递状态,忘记不重要的信息,记住必要的历史信息,在长序列上取得了很好的效果,但是其进行了许多门信号的计算,较为繁琐。
{
\small\bfnew
{
门
控循环单元
}}
\index
{
门控
循环单元
}
(Gated Recurrent Unit,GRU)
\index
{
Gated Recurrent Unit
}
作为一个LSTM的变种,继承了LSTM中利用门控单元控制信息传递的思想,并对LSTM进行了简化
\upcite
{
Cho2014Learning
}
。它把循环单元状态
$
\mathbi
{
h
}_
t
$
和记忆
$
\mathbi
{
c
}_
t
$
合并成一个状态
$
\mathbi
{
h
}_
t
$
,同时使用了更少的门控单元,大大提升了计算效率。
%----------------------------------------------
\begin{figure}
[htp]
...
...
Chapter11/chapter11.tex
查看文件 @
5d68b79e
...
...
@@ -87,7 +87,7 @@
\parinterval
在卷积计算中,不同深度下卷积核不同但是执行操作相同,这里以二维卷积核为例展示具体卷积计算。若设输入矩阵为
$
\mathbi
{
x
}$
,输出矩阵为
$
\mathbi
{
y
}$
,卷积滑动步幅为
$
\textrm
{
stride
}$
,卷积核为
$
\mathbi
{
w
}$
,且
$
\mathbi
{
w
}
\in
\mathbb
{
R
}^{
Q
\times
U
}
$
,那么卷积计算过程如下:
\begin{eqnarray}
\mathbi
{
y
}_{
i,j
}
&
=
&
\sum
\sum
(
\mathbi
{
x
}_{
[
j
\times
\textrm
{
stride
}
:j
\times
\textrm
{
stride
}
+U-1,i
\times
\textrm
{
stride
}
:i
\times
\textrm
{
stride
}
+Q
-1]
}
\odot
\mathbi
{
w
}
)
\mathbi
{
y
}_{
i,j
}
&
=
&
\sum
\sum
(
\mathbi
{
x
}_{
[
i
\times
\textrm
{
stride
}
:i
\times
\textrm
{
stride
}
+Q-1,j
\times
\textrm
{
stride
}
:j
\times
\textrm
{
stride
}
+U
-1]
}
\odot
\mathbi
{
w
}
)
\label
{
eq:11-1
}
\end{eqnarray}
...
...
Chapter14/chapter14.tex
查看文件 @
5d68b79e
...
...
@@ -444,7 +444,7 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
\end{figure}
%----------------------------------------------------------------------
\parinterval
图
\ref
{
fig:14-12
}
对比了自回归翻译模型和简单的非自回归翻译模型。可以看到这种自回归翻译模型可以一次性生成完整的译文。不过,高并行性也带来了翻译品质的下降。例如,对于IWSLT英德等数据,非自回归翻译模型的BLEU值只有个位数,而现在最好的自回归模型的BLEU值已经能够达到30左右。这是因为每个位置词的预测只依赖于源语言句子
$
\seq
{
x
}$
,使得预测不准确。需要注意的是,图
\ref
{
fig:14-12
}
(b)中将位置编码作为非自回归翻译模型解码器的输入只是一个最简单的例子,在真实的系统中,非自回归解码器的输入一般是复制编码器端的输入,即源语言句子词嵌入与位置编码的融合。
\parinterval
图
\ref
{
fig:14-12
}
对比了自回归翻译模型和简单的非自回归翻译模型。可以看到这种自回归翻译模型可以一次性生成完整的译文。不过,高并行性也带来了翻译品质的下降。例如,对于IWSLT英德等数据,非自回归翻译模型的BLEU值只有个位数,而现在最好的自回归
翻译
模型的BLEU值已经能够达到30左右。这是因为每个位置词的预测只依赖于源语言句子
$
\seq
{
x
}$
,使得预测不准确。需要注意的是,图
\ref
{
fig:14-12
}
(b)中将位置编码作为非自回归翻译模型解码器的输入只是一个最简单的例子,在真实的系统中,非自回归解码器的输入一般是复制编码器端的输入,即源语言句子词嵌入与位置编码的融合。
\parinterval
完全独立地对每个词建模,会出现什么问题呢?来看一个例子,将汉语句子“干/得/好/!”翻译成英文,可以翻译成“Good job !”或者“Well done !”。假设生成这两种翻译的概率是相等的,即一半的概率是“Good job !”,另一半的概率是“Well done !”。由于非自回归翻译模型的条件独立性假设,推断时第一个词“Good”和“Well”的概率是差不多大的,如果第二个词“job”和“done”的概率也差不多大,会使得模型生成出“Good done !”或者“Well job !”这样错误的翻译,如图
\ref
{
fig:14-13
}
所示。这便是影响句子质量的关键问题,称之为
{
\small\sffamily\bfseries
{
多峰问题
}}
\index
{
多峰问题
}
(Multimodality Problem)
\index
{
Multimodality Problem
}
\upcite
{
Gu2017NonAutoregressiveNM
}
。如何有效处理非自回归翻译模型中的多峰问题 是提升非自回归翻译模型质量的关键。
...
...
@@ -479,9 +479,9 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
\end{figure}
%----------------------------------------------------------------------
\parinterval
实际上,使用繁衍率的另一个好处在于可以缓解多峰问题。因为,繁衍率本身可以看作是模型的一个隐变量。使用这个隐变量本质上是在对可能的译文空间进行剪枝,因为只有一部分译文满足给定的繁衍率序列。从这个角度说,在
翻译
率的作用下,不同单词译文组合的情况变少了,因此多峰问题也就被缓解了。
\parinterval
实际上,使用繁衍率的另一个好处在于可以缓解多峰问题。因为,繁衍率本身可以看作是模型的一个隐变量。使用这个隐变量本质上是在对可能的译文空间进行剪枝,因为只有一部分译文满足给定的繁衍率序列。从这个角度说,在
繁衍
率的作用下,不同单词译文组合的情况变少了,因此多峰问题也就被缓解了。
\parinterval
另外,在每个解码器层中还新增了额外的位置注意力模块,该模块与其它部分中使用的多头注意力机制相同。其仍然基于
$
\mathbi
{
Q
}$
、
$
\mathbi
{
K
}$
、
$
\mathbi
{
V
}$
之间的计算(见
{
\chaptertwelve
}
),只是把位置编码作为
$
\mathbi
{
Q
}$
和
$
\mathbi
{
K
}$
, 解码器端前一层的输出作为
$
\mathbi
{
V
}$
。这种方法提供了更强的位置信息。
\parinterval
另外,在每个解码器层中还新增了额外的位置注意力模块,该模块与其它部分中使用的多头注意力机制相同。其仍然基于
$
\mathbi
{
Q
}$
、
$
\mathbi
{
K
}$
、
$
\mathbi
{
V
}$
之间的计算(见
{
\chaptertwelve
}
),只是把位置编码作为
$
\mathbi
{
K
}$
和
$
\mathbi
{
V
}$
, 解码器端前一层的输出作为
$
\mathbi
{
Q
}$
。这种方法提供了更强的位置信息。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
...
...
@@ -708,7 +708,7 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
\vspace
{
0.5em
}
\item
目前的翻译模型使用交叉熵损失作为优化函数,这在自回归翻译模型上取得了非常优秀的性能。交叉熵是一个严格的损失函数,每个预测错误的单词所对应的位置都会受到惩罚,即使是编辑距离很小的输出序列
\upcite
{
Ghazvininejad2020AlignedCE
}
。自回归翻译模型会很大程度上避免这种惩罚,因为当前位置的单词是根据先前生成的词得到的,然而非自回归翻译模型无法获得这种信息。如果在预测时漏掉一个单词,就可能会将正确的单词放在错误的位置上。为此,一些研究工作通过改进损失函数来提高非自回归翻译模型的性能。一种做法使用一种新的交叉熵函数
\upcite
{
Ghazvininejad2020AlignedCE
}
,它通过忽略绝对位置、关注相对顺序和词汇匹配来为非自回归翻译模型提供更精确的训练信号。另外,也可以使用基于
$
n
$
-gram的训练目标
\upcite
{
Shao2020MinimizingTB
}
来最小化模型与参考译文之间的
$
n
$
-gram差异。该训练目标在
$
n
$
-gram 的层面上评估预测结果,因此能够建模目标序列单词之间的依赖关系。
\vspace
{
0.5em
}
\item
自回归翻译模型解码时,当前位置单词的生成依赖于先前生成的单词,已生成的单词提供了较强的目标端上下文信息。与自回归翻译模型相比,非自回归翻译模型的解码器需要在信息更少的情况下执行翻译任务。一些研究工作通过将条件随机场引入非自回归翻译模型中来对序列依赖进行建模
\upcite
{
Ma2019FlowSeqNC
}
。也有工作引入了词嵌入转换矩阵来将源语言端的词嵌入转换为目标语言端的词嵌入来为解码器提供更好的输入
\upcite
{
Guo2019NonAutoregressiveNM
}
。此外,研究人员也提出了轻量级的调序模块来显式地建模调序信息,以指导非自回归翻译模型的推断
\upcite
{
Ran2019GuidingNN
}
。大多数非自回归模型都可以被看作是一种基于隐含变量的模型,因为目标语言单词的并行生成是基于源语言编码器生成的一个(一些)隐含变量。因此,也有很多方法来生成隐含变量,例如,利用自编码生成一个较短的离散化序列,将其作为隐含变量,之后在这个较短的变量上并行生成目标语言序列
\upcite
{
Kaiser2018FastDI
}
。类似的思想也可以用于局部块内的单词并行生成
\upcite
{
DBLP:conf/nips/SternSU18
}
。
\item
自回归翻译模型解码时,当前位置单词的生成依赖于先前生成的单词,已生成的单词提供了较强的目标端上下文信息。与自回归翻译模型相比,非自回归翻译模型的解码器需要在信息更少的情况下执行翻译任务。一些研究工作通过将条件随机场引入非自回归翻译模型中来对序列依赖进行建模
\upcite
{
Ma2019FlowSeqNC
}
。也有工作引入了词嵌入转换矩阵来将源语言端的词嵌入转换为目标语言端的词嵌入来为解码器提供更好的输入
\upcite
{
Guo2019NonAutoregressiveNM
}
。此外,研究人员也提出了轻量级的调序模块来显式地建模调序信息,以指导非自回归翻译模型的推断
\upcite
{
Ran2019GuidingNN
}
。大多数非自回归
翻译
模型都可以被看作是一种基于隐含变量的模型,因为目标语言单词的并行生成是基于源语言编码器生成的一个(一些)隐含变量。因此,也有很多方法来生成隐含变量,例如,利用自编码生成一个较短的离散化序列,将其作为隐含变量,之后在这个较短的变量上并行生成目标语言序列
\upcite
{
Kaiser2018FastDI
}
。类似的思想也可以用于局部块内的单词并行生成
\upcite
{
DBLP:conf/nips/SternSU18
}
。
\vspace
{
0.5em
}
\end{itemize}
...
...
Chapter17/chapter17.tex
查看文件 @
5d68b79e
...
...
@@ -122,7 +122,7 @@
\vspace
{
-1em
}
\parinterval
语音识别目前广泛使用基于Transformer的模型结构(见
{
\chaptertwelve
}
),如图
\ref
{
fig:17-5
}
所示。可以看出,相比文本翻译,语音识别模型结构上唯一的区别在于编码器的输入为声学特征,以及编码器底层会使用额外的卷积层来减小输入序列的长度。这是由于语音对应的特征序列过长,在计算注意力模型的时候,会占用大量的内存和显存,并增加训练时间。因此,一个常用的做法是在语音特征上进行两层步长为2的卷积操作,从而将输入序列的长度缩小为之前的1/4。通过使用大量的语音-标注平行数据对模型进行训练,可以得到高质量的语音识别模型。
\parinterval
为了降低语音识别的错误对下游系统的影响,通常也会用词格来取代One-best语音识别结果。除此之外,另一种思路是通过一个后处理模型修正识别结果中的错误,再送给文本翻译模型进行翻译。也可以进一步对文本做
{
\small\bfnew
{
顺滑
}}
\index
{
顺滑
}
(Disfluency Detection
\index
{
Disfluency Detection
}
)处理,使得送给翻译系统的文本更加干净、流畅,比如除去一些
导致
停顿的语气词。这一做法在工业界得到了广泛应用,但由于每个模型只能串行地计算,也会带来额外的计算代价以及运算时间。第三种思路是训练更加健壮的文本翻译模型,使其可以处理输入中存在的噪声或误差
\upcite
{
DBLP:conf/acl/LiuTMCZ18
}
。
\parinterval
为了降低语音识别的错误对下游系统的影响,通常也会用词格来取代One-best语音识别结果。除此之外,另一种思路是通过一个后处理模型修正识别结果中的错误,再送给文本翻译模型进行翻译。也可以进一步对文本做
{
\small\bfnew
{
顺滑
}}
\index
{
顺滑
}
(Disfluency Detection
\index
{
Disfluency Detection
}
)处理,使得送给翻译系统的文本更加干净、流畅,比如除去一些
表示
停顿的语气词。这一做法在工业界得到了广泛应用,但由于每个模型只能串行地计算,也会带来额外的计算代价以及运算时间。第三种思路是训练更加健壮的文本翻译模型,使其可以处理输入中存在的噪声或误差
\upcite
{
DBLP:conf/acl/LiuTMCZ18
}
。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
...
...
@@ -594,7 +594,7 @@
\subsubsection
{
4. 基于缓存的方法
}
\parinterval
除了以上提到的建模方法,还有一类基于缓存的方法
\upcite
{
DBLP:journals/tacl/TuLSZ18,DBLP:conf/coling/KuangXLZ18
}
。这类方法最大的特点在于将篇章翻译看作一个连续的过程,即依次翻译篇章中的每一个句子,该过程中通过一个额外的缓存来记录一些相关信息,且在每个句子的推断过程中都使用这个缓存来提供上下文信息。图
\ref
{
fig:17-20
}
描述了一种基于缓存的篇章级翻译模型结构
\upcite
{
DBLP:journals/tacl/TuLSZ18
}
。 在这里,翻译模型基于循环神经网络(见
{
\chapterten
}
),但是这种方法同样适用于包括Transformer在内的其他神经机器翻译模型。
\parinterval
除了以上提到的建模方法,还有一类基于缓存的方法
\upcite
{
DBLP:journals/tacl/TuLSZ18,DBLP:conf/coling/KuangXLZ18
}
。这类方法最大的特点在于将篇章翻译看作一个连续的过程,即依次翻译篇章中的每一个句子,该过程中通过一个额外的缓存来记录一些相关信息,且在每个句子的推断过程中都使用这个缓存来提供上下文信息。图
\ref
{
fig:17-20
}
描述了一种基于缓存的篇章级翻译模型
的解码器
结构
\upcite
{
DBLP:journals/tacl/TuLSZ18
}
。 在这里,翻译模型基于循环神经网络(见
{
\chapterten
}
),但是这种方法同样适用于包括Transformer在内的其他神经机器翻译模型。
\parinterval
模型中篇章上下文的建模依赖于缓存的读和写操作。缓存的写操作指的是:按照一定规则,将翻译历史中一些译文单词对应的上下文向量作为键,将其解码器端的隐藏状态作为值,共同写入到缓存中。而缓存的读操作是指将待翻译句子中第
$
t
$
个单词的上下文向量
$
\mathbi
{
C
}_
t
$
作为Query(查询),与缓存中的所有键分别进行匹配,并根据其匹配程度进行带权相加,最后得到当前待翻译句子的篇章上下文信息
$
\mathbi
{
d
}$
。 该方法中,解码器端隐藏状态
$
\mathbi
{
s
}_
t
$
与对应位置的上下文信息
$
\mathbi
{
d
}_
t
$
的融合也是基于门控机制。事实上,由于该方法中缓存空间是有限的,其内容的更新也存在一定的规则:在当前句子的翻译结束后,如果单词
$
y
_
t
$
的对应信息未曾写入缓存,则写入其中的空槽或者替换最久未使用的键值对;如果
$
y
_
t
$
已作为翻译历史存在于缓存中,则将对应的键值对按照以下规则进行更新:
\begin{eqnarray}
...
...
Chapter3/chapter3.tex
查看文件 @
5d68b79e
差异被折叠。
点击展开。
Chapter4/chapter4.tex
查看文件 @
5d68b79e
...
...
@@ -23,7 +23,7 @@
\chapter
{
翻译质量评价
}
\parinterval
人们在使用机器翻译系统时需要评估系统输出结果的质量。这个过程也被称作机器翻译译文质量评价,简称为
{
\small\sffamily\bfseries
{
译文质量评价
}}
\index
{
译文质量评价
}
(Quality Evaluation of Translation)
\index
{
Quality Evaluation of Translation
}
。在机器翻译的发展进程中,译文质量评价有着非常重要的作用。不论在系统研发的反复迭代中,还是在诸多的机器翻译应用场景中,都存在大量的译文质量评价环节。从某种意义上说,没有译文质量评价,机器翻译也不会发展成今天的样子。比如,本世纪初研究人员提出了译文质量自动评价方法
{
\small\sffamily\bfseries
{
BLEU
}}
\index
{
BLEU
}
(Bilingual Evaluation Understudy)
\index
{
Bilingual Evaluation Understudy
}
\upcite
{
DBLP:conf/acl/PapineniRWZ02
}
。该方法使得机器系统的评价变得自动、快速、便捷,而且评价过程可以重复。正是由于BLEU等自动评价方法的提出,机器翻译研究人员可以在更短的时间内得到译文质量的评价结果,加速系统研发的进程。
\parinterval
人们在使用机器翻译系统时需要评估系统输出结果的质量。这个过程也被称作机器翻译译文质量评价,简称为
{
\small\sffamily\bfseries
{
译文质量评价
}}
\index
{
译文质量评价
}
(Quality Evaluation of Translation)
\index
{
Quality Evaluation of Translation
}
。在机器翻译的发展进程中,译文质量评价有着非常重要的作用。不论在系统研发的反复迭代中,还是在诸多的机器翻译应用场景中,都存在大量的译文质量评价环节。从某种意义上说,没有译文质量评价,机器翻译也不会发展成今天的样子。比如,本世纪初研究人员提出了译文质量自动评价方法
{
\small\sffamily\bfseries
{
BLEU
}}
\index
{
BLEU
}
(Bilingual Evaluation Understudy)
\index
{
Bilingual Evaluation Understudy
}
\upcite
{
DBLP:conf/acl/PapineniRWZ02
}
。该方法使得机器
翻译
系统的评价变得自动、快速、便捷,而且评价过程可以重复。正是由于BLEU等自动评价方法的提出,机器翻译研究人员可以在更短的时间内得到译文质量的评价结果,加速系统研发的进程。
\parinterval
时至今日,译文质量评价方法已经非常丰富,针对不同的使用场景研究人员陆续提出了不同的方法。本章将会对其中的典型方法进行介绍,包括:人工评价、有参考答案自动评价、无参考答案自动评价等。相关方法及概念也会在本章的后续章节中被广泛使用。
...
...
@@ -477,7 +477,7 @@ His house is on the south bank of the river .
\end{figure}
%----------------------------------------------
\parinterval
从图
\ref
{
fig:4-7
}
中可以看出,HyTER方法通过构造同义单元的方式,可以列举出译文中每个片段的所有可能的表
达
方式,从而增大参考答案的数量,图
\ref
{
fig:4-7
}
中的每一条路径都代表一个参考答案。但是这种对参考答案集的编码方式存在问题,同义单元之间的组合往往存在一定的限制关系
\upcite
{
DBLP:conf/tsd/BojarMTZ13
}
,使用HyTER方法会导致参考答案集中包含有错误的参考答案。
\parinterval
从图
\ref
{
fig:4-7
}
中可以看出,HyTER方法通过构造同义单元的方式,可以列举出译文中每个片段的所有可能的表
示
方式,从而增大参考答案的数量,图
\ref
{
fig:4-7
}
中的每一条路径都代表一个参考答案。但是这种对参考答案集的编码方式存在问题,同义单元之间的组合往往存在一定的限制关系
\upcite
{
DBLP:conf/tsd/BojarMTZ13
}
,使用HyTER方法会导致参考答案集中包含有错误的参考答案。
\begin{example}
将中文“市政府批准了一项新规定”分别翻译为英语和捷克语,使用HyTER构造的参考答案集分别如图
\ref
{
fig:4-8
}
(a)和(b)所示
\upcite
{
DBLP:conf/tsd/BojarMTZ13
}
:
...
...
@@ -773,7 +773,7 @@ d&=&t \frac{s}{\sqrt{n}}
\parinterval
句子级质量评估的目标是生成能够反映译文句子整体质量的标签
\ \dash
\
可以是离散型的表示某种质量等级的标签,也可以是连续型的基于评分的标签。虽然以不同的标准进行评估,同一个译文句子的质量标签可能有所不同,但可以肯定的是句子的最终质量绝不是句子中单词质量的简单累加。因为与词级的质量评估相比,句子级质量评估也会关注是否保留源句的语义、译文的语义是否连贯、译文中的单词顺序是否合理等因素。
\parinterval
句子级质量系统需要根据某种评价标准,通过建立预测模型来生成一个反映句子质量的标签。人们可以根据句子翻译的目的、后编辑的工作难度、是否达到发表要求或是是否能让非母语者读懂等各个角度、各个标准去设定句子级质量评估的标准。句子级质量评估任务有多种形式:
\parinterval
句子级质量
评估
系统需要根据某种评价标准,通过建立预测模型来生成一个反映句子质量的标签。人们可以根据句子翻译的目的、后编辑的工作难度、是否达到发表要求或是是否能让非母语者读懂等各个角度、各个标准去设定句子级质量评估的标准。句子级质量评估任务有多种形式:
\begin{itemize}
\vspace
{
0.5em
}
...
...
Chapter5/chapter5.tex
查看文件 @
5d68b79e
...
...
@@ -138,7 +138,7 @@ IBM模型由Peter F. Brown等人于上世纪九十年代初提出\upcite{DBLP:jo
\parinterval
对于第二个问题,尽管机器能够找到很多译文选择路径,但它并不知道哪些路径是好的。说地再直白一些,简单地枚举路径实际上就是一个体力活,没有太多的智能。因此计算机还需要再聪明一些,运用它的能够“掌握”的知识判断翻译结果的好与坏。这一步是最具挑战的,当然也有很多思路来解决这个问题。在统计机器翻译中,这个问题被定义为:设计一种统计模型,它可以给每个译文一个可能性,而这个可能性越高表明译文越接近人工翻译。
\parinterval
如图
\ref
{
fig:5-4
}
所示,每个单词翻译候选的
右
侧黑色框里的数字就是单词的翻译概率,使用这些单词的翻译概率,可以得到整句译文的概率(用符号
$
\funp
{
P
}$
表示)。这样,就用概率化的模型描述了每个翻译候选的可能性。基于这些翻译候选的可能性,机器翻译系统可以对所有的翻译路径进行打分,比如,图
\ref
{
fig:5-4
}
中第一条路径的分数为0.042,第二条是0.006,以此类推。最后,系统可以选择分数最高的路径作为源语言句子的最终译文。
\parinterval
如图
\ref
{
fig:5-4
}
所示,每个单词翻译候选的
下
侧黑色框里的数字就是单词的翻译概率,使用这些单词的翻译概率,可以得到整句译文的概率(用符号
$
\funp
{
P
}$
表示)。这样,就用概率化的模型描述了每个翻译候选的可能性。基于这些翻译候选的可能性,机器翻译系统可以对所有的翻译路径进行打分,比如,图
\ref
{
fig:5-4
}
中第一条路径的分数为0.042,第二条是0.006,以此类推。最后,系统可以选择分数最高的路径作为源语言句子的最终译文。
%----------------------------------------------
\begin{figure}
[htp]
...
...
@@ -348,7 +348,7 @@ $\seq{t}^{[2]}$ = So\; ,\; what\; is\; human\; \underline{translation}\; ?
\parinterval
首先引入一个非常重要的概念
\ \dash
\
{
\small\sffamily\bfseries
{
词对齐
}}
\index
{
词对齐
}
(Word Alignment)
\index
{
Word Alignment
}
,它是统计机器翻译中最核心的概念之一。词对齐描述了平行句对中单词之间的对应关系,它体现了一种观点:本质上句子之间的对应是由单词之间的对应表示的。当然,这个观点在神经机器翻译或者其他模型中可能会有不同的理解,但是翻译句子的过程中考虑词级的对应关系是符合人类对语言的认知的。
\parinterval
图
\ref
{
fig:5-7
}
展示了一个汉英互译句对
$
\seq
{
s
}$
和
$
\seq
{
t
}$
及其词对齐关系,单词的右下标数字表示了该词在句中的位置,而虚线表示的是句子
$
\seq
{
s
}$
和
$
\seq
{
t
}$
中的词对齐关系。比如,“满意”的右下标数字5表示在句子
$
\seq
{
s
}$
中处于第5个位置,“satisfied”的右下标数字3表示在句子
$
\seq
{
t
}$
中处于第3个位置,“满意”和“satisfied”之间的虚线表示两个单词之间是对齐的。为方便描述,用二元组
$
(
j,i
)
$
来描述词对齐,它表示源语言句子的第
$
j
$
个单词对应目标语言句子的第
$
i
$
个单词,即单词
$
s
_
j
$
和
$
t
_
i
$
对应。通常,也会把
$
(
j,i
)
$
称作一条
{
\small\sffamily\bfseries
{
词对齐连接
}}
\index
{
词对齐连接
}
(Word Alignment Link
\index
{
Word Alignment Link
}
)。图
\ref
{
fig:5-7
}
中共有5 条虚线,表示有5组单词之间的词对齐连接。可以把这些词对齐连接构成的集合作为词对齐的一种表示,记为
$
A
$
,即
$
A
=
{
\{
(
1
,
1
)
,
(
2
,
4
)
,
(
3
,
5
)
,
(
4
,
2
)(
5
,
3
)
}
\}
$
。
\parinterval
图
\ref
{
fig:5-7
}
展示了一个汉英互译句对
$
\seq
{
s
}$
和
$
\seq
{
t
}$
及其词对齐关系,单词的右下标数字表示了该词在句中的位置,而虚线表示的是句子
$
\seq
{
s
}$
和
$
\seq
{
t
}$
中的词对齐关系。比如,“满意”的右下标数字5表示在句子
$
\seq
{
s
}$
中处于第5个位置,“satisfied”的右下标数字3表示在句子
$
\seq
{
t
}$
中处于第3个位置,“满意”和“satisfied”之间的虚线表示两个单词之间是对齐的。为方便描述,用二元组
$
(
j,i
)
$
来描述词对齐,它表示源语言句子的第
$
j
$
个单词对应目标语言句子的第
$
i
$
个单词,即单词
$
s
_
j
$
和
$
t
_
i
$
对应。通常,也会把
$
(
j,i
)
$
称作一条
{
\small\sffamily\bfseries
{
词对齐连接
}}
\index
{
词对齐连接
}
(Word Alignment Link
\index
{
Word Alignment Link
}
)。图
\ref
{
fig:5-7
}
中共有5 条虚线,表示有5组单词之间的词对齐连接。可以把这些词对齐连接构成的集合作为词对齐的一种表示,记为
$
A
$
,即
$
A
=
{
\{
(
1
,
1
)
,
(
2
,
4
)
,
(
3
,
5
)
,
(
4
,
2
)
,
(
5
,
3
)
}
\}
$
。
%----------------------------------------------
\begin{figure}
[htp]
...
...
@@ -503,7 +503,7 @@ g(\seq{s},\seq{t}) & \equiv & \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)} \ti
\parinterval
在
\ref
{
sec:simple-mt-example
}
节中,我们实现了一个简单的基于词的统计机器翻译模型,内容涉及建模、训练和解码。但是,还有很多问题还没有进行深入讨论,比如,如何处理空翻译?如何对调序问题进行建模?如何用更严密的数学模型描述翻译过程?如何对更加复杂的统计模型进行训练?等等。针对以上问题,本节将系统地介绍IBM统计机器翻译模型。作为经典的机器翻译模型,对IBM模型的学习将有助于对自然语言处理问题建立系统化建模思想,特别是对问题的数学描述方法将会成为理解本书后续内容的基础工具。
\parinterval
首先,重新思考一下人类进行翻译的过程。对于给定的源语
句
$
\seq
{
s
}$
,人不会像计算机一样尝试很多的可能,而是快速准确地翻译出一个或者少数几个正确的译文。在人看来,除了正确的译文外,其他的翻译都是不正确的,或者说除了少数的译文人甚至都不会考虑太多其他的可能性。但是,在统计机器翻译的世界里,没有译文是不可能的。换句话说,对于源语言句子
$
\seq
{
s
}$
,所有目标语词串
$
\seq
{
t
}$
都是可能的译文,只是可能性大小不同。这个思想可以通过统计模型实现:每对
$
(
\seq
{
s
}
,
\seq
{
t
}
)
$
都有一个概率值
$
\funp
{
P
}
(
\seq
{
t
}
|
\seq
{
s
}
)
$
来描述
$
\seq
{
s
}$
翻译为
$
\seq
{
t
}$
的好与坏(图
\ref
{
fig:5-12
}
)。
\parinterval
首先,重新思考一下人类进行翻译的过程。对于给定的源语
言句子
$
\seq
{
s
}$
,人不会像计算机一样尝试很多的可能,而是快速准确地翻译出一个或者少数几个正确的译文。在人看来,除了正确的译文外,其他的翻译都是不正确的,或者说除了少数的译文人甚至都不会考虑太多其他的可能性。但是,在统计机器翻译的世界里,没有译文是不可能的。换句话说,对于源语言句子
$
\seq
{
s
}$
,所有目标语词串
$
\seq
{
t
}$
都是可能的译文,只是可能性大小不同。这个思想可以通过统计模型实现:每对
$
(
\seq
{
s
}
,
\seq
{
t
}
)
$
都有一个概率值
$
\funp
{
P
}
(
\seq
{
t
}
|
\seq
{
s
}
)
$
来描述
$
\seq
{
s
}$
翻译为
$
\seq
{
t
}$
的好与坏(图
\ref
{
fig:5-12
}
)。
%----------------------------------------------
\begin{figure}
[htp]
...
...
Chapter6/Figures/figure-examples-of-sequential-translation-and-reorder-translation.tex
查看文件 @
5d68b79e
...
...
@@ -5,7 +5,7 @@
\tikzstyle
{
cand
}
= [draw,inner sep=4pt,line width=1pt,align=center,drop shadow,minimum height =1.6em,minimum width=4.2em,fill=green!30]
\tikzstyle
{
ref
}
= [draw,inner sep=4pt,line width=1pt,align=center,drop shadow,minimum height =1.6em,minimum width=4.2em,fill=red!30]
\node
[align=center,minimum width=2.4em,minimum height=1.6em,minimum width=6em]
(n11) at (0,0)
{
源语
}
;
\node
[align=center,minimum width=2.4em,minimum height=1.6em,minimum width=6em]
(n11) at (0,0)
{
源语
言
}
;
\node
[cand,anchor=west]
(n12) at ([xshift=0.0em]n11.east)
{
我
}
;
\node
[cand,anchor=west]
(n13) at ([xshift=1em]n12.east)
{
对
}
;
\node
[cand,anchor=west]
(n14) at ([xshift=1em]n13.east)
{
你
}
;
...
...
@@ -30,7 +30,7 @@
\tikzstyle
{
cand
}
= [draw,inner sep=4pt,line width=1pt,align=center,drop shadow,minimum height =1.6em,minimum width=4.2em,fill=green!30]
\tikzstyle
{
ref
}
= [draw,inner sep=4pt,line width=1pt,align=center,drop shadow,minimum height =1.6em,minimum width=4.2em,fill=red!30]
\node
[align=center,minimum width=2.4em,minimum height=1.6em,minimum width=6em]
(n11) at (0,0)
{
源语
}
;
\node
[align=center,minimum width=2.4em,minimum height=1.6em,minimum width=6em]
(n11) at (0,0)
{
源语
言
}
;
\node
[cand,anchor=west]
(n12) at ([xshift=0.0em]n11.east)
{
我
}
;
\node
[cand,anchor=west]
(n13) at ([xshift=1em]n12.east)
{
对
}
;
\node
[cand,anchor=west]
(n14) at ([xshift=1em]n13.east)
{
你
}
;
...
...
Chapter7/Figures/figure-word-and-phrase-translation-regard-as-path.tex
查看文件 @
5d68b79e
...
...
@@ -27,7 +27,7 @@
\node
[anchor=north west,inner sep=1pt,fill=black] (tl13) at (t13.north west)
{
\tiny
{{
\color
{
white
}
\textbf
{
1
}}}}
;
{
\node
[anchor=north west,inner sep=2pt,fill=red!20,minimum height=1.6em,minimum width=6.55em] (t14) at ([yshift=-
0.8
em]t13.south west)
{
I'm
\quad
\quad
}
;
\node
[anchor=north west,inner sep=2pt,fill=red!20,minimum height=1.6em,minimum width=6.55em] (t14) at ([yshift=-
1.0
em]t13.south west)
{
I'm
\quad
\quad
}
;
\node
[anchor=north west,inner sep=2pt,fill=red!20,minimum height=1.6em,minimum width=6.55em] (t15) at ([yshift=-0.8em]t14.south west)
{
I
\quad
\quad
}
;
\node
[anchor=north west,inner sep=1pt,fill=black] (tl14) at (t14.north west)
{
\tiny
{{
\color
{
white
}
\textbf
{
1-2
}}}}
;
\node
[anchor=north west,inner sep=1pt,fill=black] (tl15) at (t15.north west)
{
\tiny
{{
\color
{
white
}
\textbf
{
1-2
}}}}
;
...
...
@@ -45,6 +45,7 @@
\node
[anchor=north west,inner sep=2pt,fill=green!20,minimum height=1.6em,minimum width=6.55em] (t25) at ([yshift=-0.8em]t24.south west)
{
with you
}
;
\node
[anchor=north west,inner sep=1pt,fill=black] (tl24) at (t24.north west)
{
\tiny
{{
\color
{
white
}
\textbf
{
2-3
}}}}
;
\node
[anchor=north west,inner sep=1pt,fill=black] (tl25) at (t25.north west)
{
\tiny
{{
\color
{
white
}
\textbf
{
2-3
}}}}
;
\node
[anchor=north](tb25) at ([yshift=-0.6em]t25.south)
{
...
}
;
}
\node
[anchor=north,inner sep=2pt,fill=blue!20,minimum height=1.6em,minimum width=2.5em] (t31) at ([yshift=-1em]s3.south)
{
you
}
;
...
...
@@ -67,6 +68,7 @@
\node
[anchor=north west,inner sep=2pt,fill=red!20,minimum height=1.6em,minimum width=9.00em] (t44) at ([yshift=-0.8em]t43.south west)
{
satisfactory
}
;
\node
[anchor=north west,inner sep=1pt,fill=black] (tl43) at (t43.north west)
{
\tiny
{{
\color
{
white
}
\textbf
{
4-5
}}}}
;
\node
[anchor=north west,inner sep=1pt,fill=black] (tl44) at (t44.north west)
{
\tiny
{{
\color
{
white
}
\textbf
{
4-5
}}}}
;
\node
[anchor=north](tb44) at ([yshift=-0.6em]t44.south)
{
...
}
;
}
\node
[anchor=north,inner sep=2pt,fill=purple!20,minimum height=1.6em,minimum width=4.5em] (t51) at ([yshift=-1em]s5.south)
{
satisfy
}
;
...
...
@@ -126,7 +128,7 @@
\begin{scope}
\draw
[decorate,thick,decoration={brace,amplitude=5pt,mirror}]
([yshift=0em,xshift=-0.5em]t11.north west) -- ([xshift=-0.5em]t13.south west) node [pos=0.5,left,xshift=1.0em,yshift=0.0em,text width=5em,align=left] (label2)
{
\footnotesize
{
\textbf
{
单词翻译
}}}
;
\draw
[decorate,thick,decoration={brace,amplitude=5pt,mirror}]
([yshift=0em,xshift=-0.5em]t11.north west) -- ([
yshift=-0.6em,
xshift=-0.5em]t13.south west) node [pos=0.5,left,xshift=1.0em,yshift=0.0em,text width=5em,align=left] (label2)
{
\footnotesize
{
\textbf
{
单词翻译
}}}
;
{
\draw
[->,ultra thick,red,line width=2pt,opacity=0.7] ([xshift=-0.5em,yshift=-0.62em]t13.west) -- ([xshift=0.8em,yshift=-0.62em]t13.east) -- ([xshift=-0.2em,yshift=-0.62em]t22.west) -- ([xshift=0.8em,yshift=-0.62em]t22.east) -- ([xshift=-0.2em,yshift=-0.62em]t31.west) -- ([xshift=0.8em,yshift=-0.62em]t31.east) -- ([xshift=-0.2em,yshift=-0.62em]t41.west) -- ([xshift=0.8em,yshift=-0.62em]t41.east) -- ([xshift=-0.2em,yshift=-0.62em]t52.west) -- ([xshift=1.2em,yshift=-0.62em]t52.east);
...
...
@@ -139,16 +141,16 @@
}
{
\draw
[decorate,thick,decoration={brace,amplitude=5pt,mirror}]
([yshift=
-0.2em,xshift=-0.5em]t13.south west) -- ([yshift=-6.3em,xshift=-0.5em]t13.sou
th west) node [pos=0.5,left,xshift=1.0em,yshift=0.0em,text width=5em,align=left] (label3)
{
\footnotesize
{
\textbf
{
短语翻译
}}}
;
\draw
[decorate,thick,decoration={brace,amplitude=5pt,mirror}]
([yshift=
0em,xshift=-0.5em]t14.north west) -- ([yshift=-8.8em,xshift=-0.5em]t14.nor
th west) node [pos=0.5,left,xshift=1.0em,yshift=0.0em,text width=5em,align=left] (label3)
{
\footnotesize
{
\textbf
{
短语翻译
}}}
;
}
{
\node
[anchor=north west] (wtranslabel) at ([
yshift=-
5em]t15.south west)
{
\scriptsize
{
翻译路径(仅包含单词)
}}
;
\node
[anchor=north west] (wtranslabel) at ([
xshift=-0.3em,yshift=-5.
5em]t15.south west)
{
\scriptsize
{
翻译路径(仅包含单词)
}}
;
\draw
[->,ultra thick,red,line width=1.5pt,opacity=0.7] ([xshift=0.2em]wtranslabel.east) -- ([xshift=1.2em]wtranslabel.east);
}
{
\node
[anchor=north west] (ptranslabel) at ([
yshift=-6.5
em]t15.south west)
{
\scriptsize
{
翻译路径(含有短语)
}}
;
\node
[anchor=north west] (ptranslabel) at ([
xshift=-0.3em,yshift=-7.0
em]t15.south west)
{
\scriptsize
{
翻译路径(含有短语)
}}
;
\draw
[->,ultra thick,ublue,line width=1.5pt,opacity=0.7] ([xshift=0.95em]ptranslabel.east) -- ([xshift=1.95em]ptranslabel.east);
}
...
...
Chapter7/chapter7.tex
查看文件 @
5d68b79e
...
...
@@ -754,7 +754,7 @@ dr & = & {\rm{start}}_i-{\rm{end}}_{i-1}-1
\parinterval
解码的目的是根据模型以及输入,找到模型得分最高的推导,即:
\begin{eqnarray}
\hat
{
d
}
=
\arg\max
_{
d
}
\ \
\
textrm
{
score
}
(d,
\seq
{
t
}
,
\seq
{
s
}
)
\hat
{
d
}
=
\arg\max
_{
d
}
\ \textrm
{
score
}
(d,
\seq
{
t
}
,
\seq
{
s
}
)
\label
{
eq:7-21
}
\end{eqnarray}
...
...
@@ -914,7 +914,7 @@ dr & = & {\rm{start}}_i-{\rm{end}}_{i-1}-1
\vspace
{
0.5em
}
\item
统计机器翻译的成功很大程度上来自判别模型引入任意特征的能力。因此,在统计机器翻译时代,很多工作都集中在新特征的设计上。比如,可以基于不同的统计特征和先验知识设计翻译特征
\upcite
{
och2004smorgasbord,Chiang200911,gildea2003loosely
}
,也可以模仿分类任务设计大规模的稀疏特征
\upcite
{
DBLP:conf/emnlp/ChiangMR08
}
。模型训练和特征权重调优也是统计机器翻译中的重要问题,除了最小错误率训练,还有很多方法,比如,最大似然估计
\upcite
{
koehn2003statistical,DBLP:journals/coling/BrownPPM94
}
、判别式方法
\upcite
{
Blunsom2008A
}
、贝叶斯方法
\upcite
{
Blunsom2009A,Cohn2009A
}
、最小风险训练
\upcite
{
smith2006minimum,li2009first
}
、基于Margin的方法
\upcite
{
watanabe2007online,Chiang200911
}
以及基于排序模型的方法(PRO)
\upcite
{
Hopkins2011Tuning,dreyer2015apro
}
。实际上,统计机器翻译的训练和解码也存在不一致的问题,比如,特征值由双语数据上的极大似然估计得到(没有剪枝),而解码时却使用束剪枝,而且模型的目标是最大化机器翻译评价指标。对于这个问题也可以通过调整训练的目标函数进行缓解
\upcite
{
XiaoA,marcu2006practical
}
。
\vspace
{
0.5em
}
\item
短语表是基于短语的系统中的重要模块。但是,简单地利用基于频次的方法估计得到的翻译概率无法很好地处理低频短语。这时就需要对短语表进行平滑
\upcite
{
DBLP:conf/iwslt/ZensN08,DBLP:conf/emnlp/SchwenkCF07,boxing2011unpacking,DBLP:conf/coling/DuanSZ10
}
。另一方面,随着数据量的增长和抽取短语长度的增大,短语表的体积会急剧膨胀,这也大大增加了系统的存储消耗,同时过大的短语表也会带来短语查询效率的下降。针对这个问题,很多工作尝试对短语表进行压缩。一种思路是限制短语的长度
\upcite
{
DBLP:conf/naacl/QuirkM06,DBLP:journals/coling/MarinoBCGLFC06
}
;另一种广泛使用的思路是使用一些指标或者分类器来对短语进行剪枝,其核心思想是判断每个短语的质量
\upcite
{
DBLP:conf/emnlp/ZensSX12
}
,并过滤掉低质量的短语。代表性的方法有:基于假设检验的剪枝
\upcite
{
DBLP:conf/emnlp/JohnsonMFK07
}
、基于熵的剪枝
\upcite
{
DBLP:conf/emnlp/LingGTB12
}
、两阶段短语抽取方法
\upcite
{
DBLP:conf/naacl/ZettlemoyerM07
}
、基于解码中短语使用频率的方法
\upcite
{
DBLP:conf/naacl/EckVW07
}
等。此外,短语表的存储方式也是在实际使用中需要考虑的问题。因此,也有研究者尝试使用更加紧凑、高效的结构保存短语表。其中最具代表性的结构是后缀数组(Suffix Arrays),这种结构可以充分利用短语之间有重叠的性质,减少了重复存储
\upcite
{
DBLP:conf/acl/Callison-BurchBS05,DBLP:conf/
acl/Callison-BurchBS05
,DBLP:conf/naacl/ZensN07,2014Dynamic
}
。
\item
短语表是基于短语的系统中的重要模块。但是,简单地利用基于频次的方法估计得到的翻译概率无法很好地处理低频短语。这时就需要对短语表进行平滑
\upcite
{
DBLP:conf/iwslt/ZensN08,DBLP:conf/emnlp/SchwenkCF07,boxing2011unpacking,DBLP:conf/coling/DuanSZ10
}
。另一方面,随着数据量的增长和抽取短语长度的增大,短语表的体积会急剧膨胀,这也大大增加了系统的存储消耗,同时过大的短语表也会带来短语查询效率的下降。针对这个问题,很多工作尝试对短语表进行压缩。一种思路是限制短语的长度
\upcite
{
DBLP:conf/naacl/QuirkM06,DBLP:journals/coling/MarinoBCGLFC06
}
;另一种广泛使用的思路是使用一些指标或者分类器来对短语进行剪枝,其核心思想是判断每个短语的质量
\upcite
{
DBLP:conf/emnlp/ZensSX12
}
,并过滤掉低质量的短语。代表性的方法有:基于假设检验的剪枝
\upcite
{
DBLP:conf/emnlp/JohnsonMFK07
}
、基于熵的剪枝
\upcite
{
DBLP:conf/emnlp/LingGTB12
}
、两阶段短语抽取方法
\upcite
{
DBLP:conf/naacl/ZettlemoyerM07
}
、基于解码中短语使用频率的方法
\upcite
{
DBLP:conf/naacl/EckVW07
}
等。此外,短语表的存储方式也是在实际使用中需要考虑的问题。因此,也有研究者尝试使用更加紧凑、高效的结构保存短语表。其中最具代表性的结构是后缀数组(Suffix Arrays),这种结构可以充分利用短语之间有重叠的性质,减少了重复存储
\upcite
{
DBLP:conf/acl/Callison-BurchBS05,DBLP:conf/
naacl/McNamee-and-Mayfield06
,DBLP:conf/naacl/ZensN07,2014Dynamic
}
。
\vspace
{
0.5em
}
\end{itemize}
...
...
Chapter8/chapter8.tex
查看文件 @
5d68b79e
...
...
@@ -519,7 +519,7 @@ span\textrm{[0,4]}&=&\textrm{“猫} \quad \textrm{喜欢} \quad \textrm{吃} \q
\vspace
{
0.5em
}
\item
把层次短语文法转化为乔姆斯基范式,这样可以直接使用原始的CKY方法进行分析;
\vspace
{
0.5em
}
\item
对CKY方法进行改造。解码的核心任务要知道每个跨度是否能匹配规则的源语言部分。实际上,层次短语模型的文法是一种特殊的文法。这种文法规则的源语言部分最多包含两个变量,而且变量不能连续。这样的规则会对应一种特定类型的模版,比如,对于包含两个变量的规则,它的源语言部分形如
$
\alpha
_
0
\funp
{
X
}_
1
\alpha
_
1
\funp
{
X
}_
2
\alpha
_
2
$
。其中,
$
\alpha
_
0
$
、
$
\alpha
_
1
$
和
$
\alpha
_
2
$
表示终结符串,
$
\funp
{
X
}_
1
$
和
$
\funp
{
X
}_
2
$
是变量。显然,如果
$
\alpha
_
0
$
、
$
\alpha
_
1
$
和
$
\alpha
_
2
$
确定下来那么
$
\funp
{
X
}_
1
$
和
$
\funp
{
X
}_
2
$
的位置也就确定了下来。因此,对于每一个词串,都可以很容易的生成这种模版,进而完成匹配。而
$
\funp
{
X
}_
1
$
和
$
\funp
{
X
}_
2
$
和原始CKY中匹配二叉规则本质上是一样的。由于这种方法并不需要对CKY方法进行过多调整,因此层次短语系统中广泛使用这种改造的CKY方法进行解码。
\item
对CKY方法进行改造。解码的核心任务
是
要知道每个跨度是否能匹配规则的源语言部分。实际上,层次短语模型的文法是一种特殊的文法。这种文法规则的源语言部分最多包含两个变量,而且变量不能连续。这样的规则会对应一种特定类型的模版,比如,对于包含两个变量的规则,它的源语言部分形如
$
\alpha
_
0
\funp
{
X
}_
1
\alpha
_
1
\funp
{
X
}_
2
\alpha
_
2
$
。其中,
$
\alpha
_
0
$
、
$
\alpha
_
1
$
和
$
\alpha
_
2
$
表示终结符串,
$
\funp
{
X
}_
1
$
和
$
\funp
{
X
}_
2
$
是变量。显然,如果
$
\alpha
_
0
$
、
$
\alpha
_
1
$
和
$
\alpha
_
2
$
确定下来那么
$
\funp
{
X
}_
1
$
和
$
\funp
{
X
}_
2
$
的位置也就确定了下来。因此,对于每一个词串,都可以很容易的生成这种模版,进而完成匹配。而
$
\funp
{
X
}_
1
$
和
$
\funp
{
X
}_
2
$
和原始CKY中匹配二叉规则本质上是一样的。由于这种方法并不需要对CKY方法进行过多调整,因此层次短语系统中广泛使用这种改造的CKY方法进行解码。
\vspace
{
0.5em
}
\end{itemize}
...
...
@@ -1411,7 +1411,7 @@ r_9: \quad \textrm{IP(}\textrm{NN}_1\ \textrm{VP}_2) \rightarrow \textrm{S(}\tex
\vspace
{
-1.0em
}
\parinterval
对于规则“
$
\textrm
{
VP
}
\rightarrow
\textrm
{
VV
}
\ \textrm
{
NP
}$
”,超边的头指向VP,超边的尾表示规则右部的两个变量VV和NP。规则“
$
\textrm
{
NP
}
\rightarrow
\textrm
{
NN
}
\ \textrm
{
NP
}$
”也可以进行类似的解释。
\parinterval
不难发现,超图提供了一种非常紧凑的数据结构来表示多个推导,因为不同推导之间可以共享节点。如果把图
\ref
{
fig:8-37
}
中的
蓝色和红色部分看作是两个推导,那么它们就共享了同一个节点NN[1,2],其中NN
是句法标记,[1,2]是跨度。能够想象,简单枚举一个句子所有的推导几乎是不可能的,但是用超图的方式却可以很有效地对指数级数量的推导进行表示。另一方面,超图上的运算常常被看作是一种基于半环的代数系统,而且人们发现许多句法分析和机器翻译问题本质上都是
{
\small\bfnew
{
半环分析
}}
\index
{
半环分析
}
(Semi-ring Parsing)
\index
{
Semi-ring Parsing
}
。不过,由于篇幅有限,这里不会对半环等结构展开讨论。感兴趣的读者可以查阅相关文献
\upcite
{
goodman1999semiring,eisner2002parameter
}
。
\parinterval
不难发现,超图提供了一种非常紧凑的数据结构来表示多个推导,因为不同推导之间可以共享节点。如果把图
\ref
{
fig:8-37
}
中的
绿色和红色部分看作是两个推导,那么它们就共享了同一个节点NP[1,2],其中NP
是句法标记,[1,2]是跨度。能够想象,简单枚举一个句子所有的推导几乎是不可能的,但是用超图的方式却可以很有效地对指数级数量的推导进行表示。另一方面,超图上的运算常常被看作是一种基于半环的代数系统,而且人们发现许多句法分析和机器翻译问题本质上都是
{
\small\bfnew
{
半环分析
}}
\index
{
半环分析
}
(Semi-ring Parsing)
\index
{
Semi-ring Parsing
}
。不过,由于篇幅有限,这里不会对半环等结构展开讨论。感兴趣的读者可以查阅相关文献
\upcite
{
goodman1999semiring,eisner2002parameter
}
。
\parinterval
从句法分析的角度看,超图最大程度地复用了局部的分析结果,使得分析可以“结构化”。比如,有两个推导:
\begin{eqnarray}
...
...
Chapter9/chapter9.tex
查看文件 @
5d68b79e
...
...
@@ -88,7 +88,7 @@
\subsubsection
{
3. 深度学习和神经网络方法的崛起
}
\parinterval
21世纪初,随着深度学习浪潮席卷世界,人工神经网络又一次出现在人们的视野中。深度学习的流行源于2006年Hinton等人成功训练了一个
深度信念网络(Deep Belief Network)
,在深度神经网络方法完全不受重视的情况下,大家突然发现深度神经网络完全是一个魔鬼般的存在,可以解决很多当时其他方法无法解决的问题。神经网络方法终于在一次又一次的被否定后,迎来了它的春天。随之针对神经网络和深度学习的一系列研究前赴后继地展开了,延续至今。
\parinterval
21世纪初,随着深度学习浪潮席卷世界,人工神经网络又一次出现在人们的视野中。深度学习的流行源于2006年Hinton等人成功训练了一个
{
\small\bfnew
{
深度信念网络
}}
\index
{
深度信念网络
}
(Deep Belief Network)
\index
{
Deep Belief Network
}
,在深度神经网络方法完全不受重视的情况下,大家突然发现深度神经网络完全是一个魔鬼般的存在,可以解决很多当时其他方法无法解决的问题。神经网络方法终于在一次又一次的被否定后,迎来了它的春天。随之针对神经网络和深度学习的一系列研究前赴后继地展开了,延续至今。
\parinterval
回过头来看,现代深度学习的成功主要有三方面的原因:
...
...
@@ -119,7 +119,7 @@
\subsection
{
为什么需要深度学习
}
\parinterval
深度神经网络提供了一种简单的学习机制,即直接学习输入与输出的关系,通常把这种机制称为
{
\small\bfnew
{
端到端学习
}}
\index
{
端到端学习
}
(End-to-End Learning)
\index
{
End-to-End Learning
}
。与传统方法不同,端到端学习并不需要人工定义特征或者进行过多的先验性假设,所有的学习过程都是由一个模型完成。从外面看这个模型只是建立了一种输入到输出的映射,而这种映射具体是如何形成的完全由模型的结构和参数决定。这样做的最大好处是,模型可以更加“自由”的进行学习。此外,端到端学习也引发了一个新的思考
\ \dash
\
如何表示问题?这也就是所谓的
{
\small\bfnew
{
表示学习
}}
\index
{
表示学习
}
(Representation Learning)
\index
{
Representation Learning
}
问题。在深度学习时代,问题输入和输出的表示已经不再是人类通过简单地总结得到的规律,而是可以让计算机自己进行描述的一种可计算“量”,比如一个实数向量。由于这种表示可以被自动学习,因此也大大
促进
了计算机对语言文字等复杂现象的处理能力。
\parinterval
深度神经网络提供了一种简单的学习机制,即直接学习输入与输出的关系,通常把这种机制称为
{
\small\bfnew
{
端到端学习
}}
\index
{
端到端学习
}
(End-to-End Learning)
\index
{
End-to-End Learning
}
。与传统方法不同,端到端学习并不需要人工定义特征或者进行过多的先验性假设,所有的学习过程都是由一个模型完成。从外面看这个模型只是建立了一种输入到输出的映射,而这种映射具体是如何形成的完全由模型的结构和参数决定。这样做的最大好处是,模型可以更加“自由”的进行学习。此外,端到端学习也引发了一个新的思考
\ \dash
\
如何表示问题?这也就是所谓的
{
\small\bfnew
{
表示学习
}}
\index
{
表示学习
}
(Representation Learning)
\index
{
Representation Learning
}
问题。在深度学习时代,问题输入和输出的表示已经不再是人类通过简单地总结得到的规律,而是可以让计算机自己进行描述的一种可计算“量”,比如一个实数向量。由于这种表示可以被自动学习,因此也大大
提升
了计算机对语言文字等复杂现象的处理能力。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
...
...
@@ -1109,7 +1109,7 @@ y&=&{\textrm{Sigmoid}}({\textrm{Tanh}}({\mathbi{x}}{\mathbi{W}}^{[1]}+{\mathbi{b
\sectionnewpage
\section
{
神经网络的参数训练
}
\parinterval
简单来说,神经网络可以被看作是由变量和函数组成的表达式,例如:
$
{
\mathbi
{
y
}}
=
{
\mathbi
{
x
}}
+
{
\mathbi
{
b
}}
$
、
$
{
\mathbi
{
y
}}
=
{
\textrm
{
ReLU
}}
(
{
\mathbi
{
x
}}
{
\mathbi
{
W
}}
+
{
\mathbi
{
b
}}
)
$
、
$
{
\mathbi
{
y
}}
=
{
\textrm
{
Sigmoid
}}
(
{
\textrm
{
ReLU
}}
(
{
\mathbi
{
x
}}{
\mathbi
{
W
}}^{
[
1
]
}
+
{
\mathbi
{
b
}}^{
[
1
]
}
)
{
\mathbi
{
W
}}^{
[
2
]
}
+
{
\mathbi
{
b
}}^{
[
2
]
}
)
$
等等,其中的
$
{
\mathbi
{
x
}}
$
和
$
{
\mathbi
{
y
}}
$
作为输入和输出向量,
${
\mathbi
{
W
}}$
、
${
\mathbi
{
b
}}$
等其他变量作为
{
\small\sffamily\bfseries
{
模型参数
}}
\index
{
模型参数
}
(Model Parameters)
\index
{
Model Parameters
}
。确定了函数表达式和模型参数,也就确定了神经网络模型。通常,表达式的形式需要
系统开发者
设计,而模型参数的数量有时会非常巨大,因此需要自动学习,这个过程也被称为模型学习或训练。为了实现这个目标,通常会准备一定量的带有标准答案的数据,称之为有标注数据。这些数据会用于对模型参数的学习,这也对应了统计模型中的参数估计过程。在机器学习中,一般把这种使用有标注数据进行统计模型参数训练的过程称为
{
\small\sffamily\bfseries
{
有指导的训练
}}
\index
{
有指导的训练
}
或
{
\small\sffamily\bfseries
{
有监督的训练
}}
\index
{
有监督的训练
}
(Supervised Training)
\index
{
Supervised Training
}
。在本章中,如果没有特殊说明,模型训练都是指有监督的训练。那么神经网络内部是怎样利用有标注数据对参数进行训练的呢?
\parinterval
简单来说,神经网络可以被看作是由变量和函数组成的表达式,例如:
$
{
\mathbi
{
y
}}
=
{
\mathbi
{
x
}}
+
{
\mathbi
{
b
}}
$
、
$
{
\mathbi
{
y
}}
=
{
\textrm
{
ReLU
}}
(
{
\mathbi
{
x
}}
{
\mathbi
{
W
}}
+
{
\mathbi
{
b
}}
)
$
、
$
{
\mathbi
{
y
}}
=
{
\textrm
{
Sigmoid
}}
(
{
\textrm
{
ReLU
}}
(
{
\mathbi
{
x
}}{
\mathbi
{
W
}}^{
[
1
]
}
+
{
\mathbi
{
b
}}^{
[
1
]
}
)
{
\mathbi
{
W
}}^{
[
2
]
}
+
{
\mathbi
{
b
}}^{
[
2
]
}
)
$
等等,其中的
$
{
\mathbi
{
x
}}
$
和
$
{
\mathbi
{
y
}}
$
作为输入和输出向量,
${
\mathbi
{
W
}}$
、
${
\mathbi
{
b
}}$
等其他变量作为
{
\small\sffamily\bfseries
{
模型参数
}}
\index
{
模型参数
}
(Model Parameters)
\index
{
Model Parameters
}
。确定了函数表达式和模型参数,也就确定了神经网络模型。通常,表达式的形式需要
开发人员
设计,而模型参数的数量有时会非常巨大,因此需要自动学习,这个过程也被称为模型学习或训练。为了实现这个目标,通常会准备一定量的带有标准答案的数据,称之为有标注数据。这些数据会用于对模型参数的学习,这也对应了统计模型中的参数估计过程。在机器学习中,一般把这种使用有标注数据进行统计模型参数训练的过程称为
{
\small\sffamily\bfseries
{
有指导的训练
}}
\index
{
有指导的训练
}
或
{
\small\sffamily\bfseries
{
有监督的训练
}}
\index
{
有监督的训练
}
(Supervised Training)
\index
{
Supervised Training
}
。在本章中,如果没有特殊说明,模型训练都是指有监督的训练。那么神经网络内部是怎样利用有标注数据对参数进行训练的呢?
\parinterval
为了回答这个问题,可以把模型参数的学习过程看作是一个优化问题,即找到一组参数,使得模型达到某种最优的状态。这个问题又可以被转化为两个新的问题:
...
...
@@ -1513,7 +1513,7 @@ z_t&=&\gamma z_{t-1}+(1-\gamma) \frac{\partial J}{\partial {\theta}_t} \cdot \f
\vspace
{
0.5em
}
\item
{
\small\sffamily\bfseries
{
同步更新
}}
\index
{
同步更新
}
(Synchronous Update)
\index
{
Synchronous Update
}
是指所有计算设备完成计算后,统一汇总并更新参数。当所有设备的反向传播算法完成之后同步更新参数,不会出现单个设备单独对参数进行更新的情况。这种方法效果稳定,但是效率比较低,在同步更新时,每一次参数更新都需要所有设备统一开始、统一结束,如果设备的运行速度不一致,那么每一次参数更新都需要等待最慢的设备结束才能开始。
\vspace
{
0.5em
}
\item
{
\small\sffamily\bfseries
{
异步更新
}}
\index
{
异步更新
}
(Asynchronous Update)
\index
{
Asynchronous Update
}
是指每个计算设备可以随时更新参数。不同设备可以随时读取参数的最新值,然后根据当前参数值和分配的训练样本,各自执行反向传播过程并独立更新参数。由于设备间不需要相互等待,这种方法并行度高。但是不同设备读取参数的时间可能不同,会造成不同设备上的参数不同步,导致这种方法不
十分
稳定,有可能无法达到较好的训练结果。
\item
{
\small\sffamily\bfseries
{
异步更新
}}
\index
{
异步更新
}
(Asynchronous Update)
\index
{
Asynchronous Update
}
是指每个计算设备可以随时更新参数。不同设备可以随时读取参数的最新值,然后根据当前参数值和分配的训练样本,各自执行反向传播过程并独立更新参数。由于设备间不需要相互等待,这种方法并行度高。但是不同设备读取参数的时间可能不同,会造成不同设备上的参数不同步,导致这种方法不
太
稳定,有可能无法达到较好的训练结果。
\vspace
{
0.5em
}
\end{itemize}
...
...
bibliography.bib
查看文件 @
5d68b79e
...
...
@@ -145,44 +145,7 @@ new
pages={75--102},
year={1993}
}
@inproceedings{Wu2016GooglesNM,
author = {Yonghui Wu and
Mike Schuster and
Zhifeng Chen and
Quoc V. Le and
Mohammad Norouzi and
Wolfgang Macherey and
Maxim Krikun and
Yuan Cao and
Qin Gao and
Klaus Macherey and
Jeff Klingner and
Apurva Shah and
Melvin Johnson and
Xiaobing Liu and
Lukasz Kaiser and
Stephan Gouws and
Yoshikiyo Kato and
Taku Kudo and
Hideto Kazawa and
Keith Stevens and
George Kurian and
Nishant Patil and
Wei Wang and
Cliff Young and
Jason Smith and
Jason Riesa and
Alex Rudnick and
Oriol Vinyals and
Greg Corrado and
Macduff Hughes and
Jeffrey Dean},
title = {Google's Neural Machine Translation System: Bridging the Gap between
Human and Machine Translation},
publisher = {CoRR},
volume = {abs/1609.08144},
year = {2016}
}
@inproceedings{DBLP:journals/corr/LuongPM15,
author = {Thang Luong and
Hieu Pham and
...
...
@@ -3015,7 +2978,7 @@ year = {2012}
publisher = {Annual Meeting of the Association for Computational Linguistics},
year = {2005}
}
@inproceedings{DBLP:conf/
acl/Callison-BurchBS05
,
@inproceedings{DBLP:conf/
naacl/McNamee-and-Mayfield06
,
author = {Paul McNamee and James Mayfield},
title = {Translation of Multiword Expressions Using Parallel Suffix Arrays},
publisher = {Association for Machine Translation in the Americas},
...
...
@@ -3351,16 +3314,7 @@ year = {2012}
publisher = {Annual Meeting of the Association for Computational Linguistics},
year = {2006}
}
@inproceedings{DBLP:conf/emnlp/DeNeefeKWM07,
author = {Steve DeNeefe and
Kevin Knight and
Wei Wang and
Daniel Marcu},
title = {What Can Syntax-Based {MT} Learn from Phrase-Based MT?},
pages = {755--763},
publisher = {Annual Meeting of the Association for Computational Linguistics},
year = {2007}
}
@inproceedings{DBLP:conf/wmt/LiuG08,
author = {Ding Liu and
Daniel Gildea},
...
...
@@ -7781,20 +7735,7 @@ author = {Zhuang Liu and
volume = {abs/2006.10369},
year = {2020}
}
@inproceedings{DBLP:conf/aclnmt/HuLLLLWXZ20,
author = {Chi Hu and
Bei Li and
Yinqiao Li and
Ye Lin and
Yanyang Li and
Chenglong Wang and
Tong Xiao and
Jingbo Zhu},
title = {The NiuTrans System for WNGT 2020 Efficiency Task},
pages = {204--210},
publisher = {Annual Meeting of the Association for Computational Linguistics},
year = {2020}
}
@inproceedings{DBLP:journals/corr/abs-2010-02416,
author = {Yi-Te Hsu and
Sarthak Garg and
...
...
@@ -7926,7 +7867,7 @@ author = {Zhuang Liu and
Xiao, Tong and
Zhu, Jingbo},
title = {The NiuTrans Machine Translation Systems for WMT20},
month = {
November
},
month = {
11
},
year = {2020},
publisher = {Annual Meeting of the Association for Computational Linguistics},
pages = {336--343}
...
...
@@ -9232,21 +9173,7 @@ author = {Zhuang Liu and
publisher = {{IEEE} Conference on Computer Vision and Pattern Recognition},
year = {2017}
}
@inproceedings{DBLP:conf/coling/XuHJFWHJXZ20,
author = {Chen Xu and
Bojie Hu and
Yufan Jiang and
Kai Feng and
Zeyang Wang and
Shen Huang and
Qi Ju and
Tong Xiao and
Jingbo Zhu},
title = {Dynamic Curriculum Learning for Low-Resource Neural Machine Translation},
pages = {3977--3989},
publisher = {International Conference on Computational Linguistics},
year = {2020}
}
@inproceedings{DBLP:conf/acml/WuXTZQLL18,
author = {Lijun Wu and
Yingce Xia and
...
...
@@ -9341,15 +9268,7 @@ author = {Zhuang Liu and
publisher = {Conference on Empirical Methods in Natural Language Processing},
year = {2007}
}
@inproceedings{DBLP:conf/emnlp/ShiPK16,
author = {Xing Shi and
Inkit Padhi and
Kevin Knight},
title = {Does String-Based Neural {MT} Learn Source Syntax?},
pages = {1526--1534},
publisher = {Conference on Empirical Methods in Natural Language Processing},
year = {2016}
}
@inproceedings{tu2017neural,
title={Neural machine translation with reconstruction},
author={Tu, Zhaopeng and Liu, Yang and Shang, Lifeng and Liu, Xiaohua and Li, Hang},
...
...
@@ -10768,12 +10687,6 @@ author = {Zhuang Liu and
publisher = {Asian Federation of Natural Language Processing},
year = {2017}
}
@inproceedings{2018When,
title={When and Why are Pre-trainedWord Embeddings Useful for Neural Machine Translation?},
author={ Qi, Ye and Sachan, Devendra Singh and Felix, Matthieu and Padmanabhan, Sarguna Janani and Neubig, Graham },
publisher = {Annual Conference of the North American Chapter of the Association for Computational Linguistics},
year={2018},
}
@inproceedings{DBLP:conf/acl/PetersABP17,
author = {Matthew Peters and
Waleed Ammar and
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论