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
87f00e07
Commit
87f00e07
authored
Sep 15, 2020
by
曹润柘
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update chapter 7
parent
b304d5f6
显示空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
11 行增加
和
11 行删除
+11
-11
Chapter7/chapter7.tex
+11
-11
没有找到文件。
Chapter7/chapter7.tex
查看文件 @
87f00e07
...
...
@@ -266,7 +266,7 @@ d = {(\bar{s}_{\bar{a}_1},\bar{t}_1)} \circ {(\bar{s}_{\bar{a}_2},\bar{t}_2)} \c
\end{eqnarray}
\parinterval
公式
\
ref
{
eq:7-3
}
中,
$
\funp
{
P
}
(
d,
\seq
{
t
}
|
\seq
{
s
}
)
$
表示翻译推导的概率。公式
\ref
{
eq:7-3
}
把翻译问题转化为翻译推导的生成问题。但是,由于翻译推导的数量十分巨大
\footnote
[3]
{
如果把推导看作是一种树结构,推导的数量与词串的长度成指数关系。
}
,公式
\
ref
{
eq:7-3
}
的右端需要对所有可能的推导进行枚举并求和,这几乎是无法计算的。
\parinterval
公式
\
eqref
{
eq:7-3
}
中,
$
\funp
{
P
}
(
d,
\seq
{
t
}
|
\seq
{
s
}
)
$
表示翻译推导的概率。公式
\eqref
{
eq:7-3
}
把翻译问题转化为翻译推导的生成问题。但是,由于翻译推导的数量十分巨大
\footnote
[3]
{
如果把推导看作是一种树结构,推导的数量与词串的长度成指数关系。
}
,公式
\eq
ref
{
eq:7-3
}
的右端需要对所有可能的推导进行枚举并求和,这几乎是无法计算的。
\parinterval
对于这个问题,常用的解决办法是利用一个化简的模型来近似完整的模型。如果把翻译推导的全体看作一个空间
$
D
$
,可以从
$
D
$
中选取一部分样本参与计算,而不是对整个
$
D
$
进行计算。比如,可以用最好的
$
n
$
个翻译推导来代表整个空间
$
D
$
。令
$
D
_{
n
\textrm
{
-
best
}}$
表示最好的
$
n
$
个翻译推导所构成的空间,于是可以定义:
\begin{eqnarray}
...
...
@@ -274,7 +274,7 @@ d = {(\bar{s}_{\bar{a}_1},\bar{t}_1)} \circ {(\bar{s}_{\bar{a}_2},\bar{t}_2)} \c
\label
{
eq:7-4
}
\end{eqnarray}
\parinterval
进一步,把公式
\
ref
{
eq:7-4
}
带入公式
\
ref
{
eq:7-2
}
,可以得到翻译的目标为:
\parinterval
进一步,把公式
\
eqref
{
eq:7-4
}
带入公式
\eq
ref
{
eq:7-2
}
,可以得到翻译的目标为:
\begin{eqnarray}
\hat
{
\seq
{
t
}}
=
\arg\max
_{
\seq
{
t
}}
\sum
_{
d
\in
D
_{
n
\textrm
{
-best
}}}
\funp
{
P
}
(d,
\seq
{
t
}
|
\seq
{
s
}
)
\label
{
eq:7-5
}
...
...
@@ -292,7 +292,7 @@ d = {(\bar{s}_{\bar{a}_1},\bar{t}_1)} \circ {(\bar{s}_{\bar{a}_2},\bar{t}_2)} \c
\label
{
eq:7-7
}
\end{eqnarray}
\parinterval
值得注意的是,翻译推导中蕴含着译文的信息,因此每个翻译推导都与一个译文对应。因此可以把公式
\ref
{
eq:7-7
}
所描述的问题重新定义为:
\parinterval
值得注意的是,翻译推导中蕴含着译文的信息,因此每个翻译推导都与一个译文对应。因此可以把公式
\
eq
ref
{
eq:7-7
}
所描述的问题重新定义为:
\begin{eqnarray}
\hat
{
d
}
=
\arg\max
_{
d
}
\funp
{
P
}
(d,
\seq
{
t
}
|
\seq
{
s
}
)
\label
{
eq:7-8
}
...
...
@@ -304,7 +304,7 @@ d = {(\bar{s}_{\bar{a}_1},\bar{t}_1)} \circ {(\bar{s}_{\bar{a}_2},\bar{t}_2)} \c
\label
{
eq:7-9
}
\end{eqnarray}
\parinterval
注意,公式
\
ref
{
eq:7-8
}
-
\ref
{
eq:7-9
}
和公式
\ref
{
eq:7-7
}
本质上是一样的。它们也构成了统计机器翻译中最常用的方法
\ \dash
\
Viterbi方法
\upcite
{
DBLP:journals/tit/Viterbi67
}
。在后面机器翻译的解码中还会看到它们的应用。而公式
\
ref
{
eq:7-5
}
也被称作
$
n
$
-best方法,常常作为Viterbi方法的一种改进。
\parinterval
注意,公式
\
eqref
{
eq:7-8
}
-
\eqref
{
eq:7-9
}
和公式
\eqref
{
eq:7-7
}
本质上是一样的。它们也构成了统计机器翻译中最常用的方法
\ \dash
\
Viterbi方法
\upcite
{
DBLP:journals/tit/Viterbi67
}
。在后面机器翻译的解码中还会看到它们的应用。而公式
\eq
ref
{
eq:7-5
}
也被称作
$
n
$
-best方法,常常作为Viterbi方法的一种改进。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
...
...
@@ -325,14 +325,14 @@ d = {(\bar{s}_{\bar{a}_1},\bar{t}_1)} \circ {(\bar{s}_{\bar{a}_2},\bar{t}_2)} \c
\label
{
eq:7-11
}
\end{eqnarray}
\parinterval
公式
\
ref
{
eq:7-11
}
是一种典型的
{
\small\bfnew
{
对数线性模型
}}
\index
{
对数线性模型
}
(Log-linear Model)
\index
{
Log-linear Model
}
。所谓“对数线性”体现在对多个量求和后进行指数运算(
$
\textrm
{
exp
}
(
\cdot
)
$
),这相当于对多个因素进行乘法。公式
\ref
{
eqa4.10
}
的右端是一种归一化操作。分子部分可以被看作是一种对翻译推导
$
d
$
的对数线性建模。具体来说,对于每个
$
d
$
,用
$
M
$
个特征对其进行描述。每个特征用函数
$
h
_
i
(
d,
\seq
{
t
}
,
\seq
{
s
}
)
$
表示,它对应一个权重
$
\lambda
_
i
$
,表示特征
$
i
$
的重要性。
$
\sum
_{
i
=
1
}^{
M
}
\lambda
_
i
\cdot
h
_
i
(
d,
\seq
{
t
}
,
\seq
{
s
}
)
$
表示了对这些特征的线性加权和,值越大表示模型得分越高,相应的
$
d
$
和
$
\seq
{
t
}$
的质量越高。公式
\ref
{
eqa4.10
}
的分母部分实际上不需要计算,因为其值与求解最佳推导的过程无关。把公式
\ref
{
eqa4.10
}
带入公式
\
ref
{
eq:7-8
}
得到:
\parinterval
公式
\
eqref
{
eq:7-11
}
是一种典型的
{
\small\bfnew
{
对数线性模型
}}
\index
{
对数线性模型
}
(Log-linear Model)
\index
{
Log-linear Model
}
。所谓“对数线性”体现在对多个量求和后进行指数运算(
$
\textrm
{
exp
}
(
\cdot
)
$
),这相当于对多个因素进行乘法。公式
\eqref
{
eqa4.10
}
的右端是一种归一化操作。分子部分可以被看作是一种对翻译推导
$
d
$
的对数线性建模。具体来说,对于每个
$
d
$
,用
$
M
$
个特征对其进行描述,每个特征用函数
$
h
_
i
(
d,
\seq
{
t
}
,
\seq
{
s
}
)
$
表示,它对应一个权重
$
\lambda
_
i
$
,表示特征
$
i
$
的重要性。
$
\sum
_{
i
=
1
}^{
M
}
\lambda
_
i
\cdot
h
_
i
(
d,
\seq
{
t
}
,
\seq
{
s
}
)
$
表示了对这些特征的线性加权和,值越大表示模型得分越高,相应的
$
d
$
和
$
\seq
{
t
}$
的质量越高。公式
\eqref
{
eqa4.10
}
的分母部分实际上不需要计算,因为其值与求解最佳推导的过程无关。把公式
\eqref
{
eqa4.10
}
带入公式
\eq
ref
{
eq:7-8
}
得到:
\begin{eqnarray}
\hat
{
d
}
&
=
&
\arg\max
_{
d
}
\frac
{
\textrm
{
exp
}
(
\textrm
{
score
}
(d,
\seq
{
t
}
,
\seq
{
s
}
))
}{
\sum
_{
d',
\seq
{
t
}
'
}
\textrm
{
exp
}
(
\textrm
{
score
}
(d',
\seq
{
t
}
',
\seq
{
s
}
))
}
\nonumber
\\
&
=
&
\arg\max
_{
d
}
\ \textrm
{
exp
}
(
\textrm
{
score
}
(d,
\seq
{
t
}
,
\seq
{
s
}
))
\label
{
eq:7-12
}
\end{eqnarray}
\parinterval
公式
\ref
{
eq:7-12
}
中,
$
\ \textrm
{
exp
}
(
\textrm
{
score
}
(
d,
\seq
{
t
}
,
\seq
{
s
}
))
$
表示指数化的模型得分,记为
$
\textrm
{
mscore
}
(
d,
\seq
{
t
}
,
\seq
{
s
}
)
=
\textrm
{
exp
}
(
\textrm
{
score
}
(
d,
\seq
{
t
}
,
\seq
{
s
}
))
$
。于是,翻译问题就可以被描述为:找到使函数
$
\textrm
{
mscore
}
(
d,
\seq
{
t
}
,
\seq
{
s
}
)
$
达到最大的
$
d
$
。由于,
$
\textrm
{
exp
}
(
\textrm
{
score
}
(
d,
\seq
{
t
}
,
\seq
{
s
}
))
$
和
$
\textrm
{
score
}
(
d,
\seq
{
t
}
,
\seq
{
s
}
)
$
是单调一致的,因此有时也直接把
$
\textrm
{
score
}
(
d,
\seq
{
t
}
,
\seq
{
s
}
)
$
当做模型得分。
\parinterval
公式
\
eq
ref
{
eq:7-12
}
中,
$
\ \textrm
{
exp
}
(
\textrm
{
score
}
(
d,
\seq
{
t
}
,
\seq
{
s
}
))
$
表示指数化的模型得分,记为
$
\textrm
{
mscore
}
(
d,
\seq
{
t
}
,
\seq
{
s
}
)
=
\textrm
{
exp
}
(
\textrm
{
score
}
(
d,
\seq
{
t
}
,
\seq
{
s
}
))
$
。于是,翻译问题就可以被描述为:找到使函数
$
\textrm
{
mscore
}
(
d,
\seq
{
t
}
,
\seq
{
s
}
)
$
达到最大的
$
d
$
。由于,
$
\textrm
{
exp
}
(
\textrm
{
score
}
(
d,
\seq
{
t
}
,
\seq
{
s
}
))
$
和
$
\textrm
{
score
}
(
d,
\seq
{
t
}
,
\seq
{
s
}
)
$
是单调一致的,因此有时也直接把
$
\textrm
{
score
}
(
d,
\seq
{
t
}
,
\seq
{
s
}
)
$
当做模型得分。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
...
...
@@ -583,7 +583,7 @@ dr = start_i-end_{i-1}-1
\label
{
eq:7-16
}
\end{eqnarray}
\noindent
其中,
$
o
_
i
$
表示(目标语言)第
$
i
$
个短语的调序方向,
$
\mathbf
{
o
}
=
\{
o
_
i
\}
$
表示短语序列的调序方向,
$
K
$
表示短语的数量。短语之间的调序概率是由双语短语以及短语对齐决定的,
$
o
$
表示调序的种类,可以取M、S、D 中的任意一种。而整个句子调序的好坏就是把相邻的短语之间的调序概率相乘(对应取log后的加法)。这样,公式
\ref
{
eq:7-16
}
把调序的好坏定义为新的特征,对于M、S、D总共就有三个特征。除了当前短语和前一个短语的调序特征,还可以定义当前短语和后一个短语的调序特征,即将上述公式中的
$
a
_{
i
-
1
}$
换成
$
a
_{
i
+
1
}$
。 于是,又可以得到三个特征。因此在MSD调序中总共可以有6个特征。
\noindent
其中,
$
o
_
i
$
表示(目标语言)第
$
i
$
个短语的调序方向,
$
\mathbf
{
o
}
=
\{
o
_
i
\}
$
表示短语序列的调序方向,
$
K
$
表示短语的数量。短语之间的调序概率是由双语短语以及短语对齐决定的,
$
o
$
表示调序的种类,可以取M、S、D 中的任意一种。而整个句子调序的好坏就是把相邻的短语之间的调序概率相乘(对应取log后的加法)。这样,公式
\
eq
ref
{
eq:7-16
}
把调序的好坏定义为新的特征,对于M、S、D总共就有三个特征。除了当前短语和前一个短语的调序特征,还可以定义当前短语和后一个短语的调序特征,即将上述公式中的
$
a
_{
i
-
1
}$
换成
$
a
_{
i
+
1
}$
。 于是,又可以得到三个特征。因此在MSD调序中总共可以有6个特征。
\parinterval
具体实现时,通常使用词对齐对两个短语间的调序关系进行判断。图
\ref
{
fig:7-22
}
展示了这个过程。先判断短语的左上角和右上角是否存在词对齐,再根据其位置对调序类型进行划分。每个短语对应的调序概率都可以用相对频次估计进行计算。而MSD调序模型也相当于在短语表中的每个双语短语后添加6个特征。不过,调序模型一般并不会和短语表一起存储,因此在系统中通常会看到两个独立的模型文件,分别保存短语表和调序模型。
...
...
@@ -665,7 +665,7 @@ dr = start_i-end_{i-1}-1
\end{eqnarray}
%公式--------------------------------------------------------------------
\noindent
其中,
\textrm
{
Error
}$
(
\cdot
)
$
是错误率函数。
\textrm
{
Error
}$
(
\cdot
)
$
的定义方式有很多,一般来说
\textrm
{
Error
}$
(
\cdot
)
$
会与机器翻译的评价指标相关,例如,词错误率(WER)、位置错误率(PER)、BLEU 值、NIST值等都可以用于
\textrm
{
Error
}$
(
\cdot
)
$
的定义。这里使用
$
1
-
$
BLEU作为错误率函数,即
$
\textrm
{
Error
}
(
\hat
{
\seq
{
D
}}
,
\seq
{
R
}
)
=
1
-
\textrm
{
BLEU
}
(
\hat
{
\seq
{
D
}}
,
\seq
{
R
}
)
$
。则公式
\ref
{
eq:7-18
}
可改写为:
\noindent
其中,
\textrm
{
Error
}$
(
\cdot
)
$
是错误率函数。
\textrm
{
Error
}$
(
\cdot
)
$
的定义方式有很多,一般来说
\textrm
{
Error
}$
(
\cdot
)
$
会与机器翻译的评价指标相关,例如,词错误率(WER)、位置错误率(PER)、BLEU 值、NIST值等都可以用于
\textrm
{
Error
}$
(
\cdot
)
$
的定义。这里使用
$
1
-
$
BLEU作为错误率函数,即
$
\textrm
{
Error
}
(
\hat
{
\seq
{
D
}}
,
\seq
{
R
}
)
=
1
-
\textrm
{
BLEU
}
(
\hat
{
\seq
{
D
}}
,
\seq
{
R
}
)
$
。则公式
\
eq
ref
{
eq:7-18
}
可改写为:
%公式--------------------------------------------------------------------
\begin{eqnarray}
\hat
{
\lambda
}
&
=
&
\arg\min
_{
\lambda
}
\
(1 -
\textrm
{
BLEU
}
(
\hat
{
\seq
{
D
}}
,
\seq
{
R
}
))
\nonumber
\\
...
...
@@ -674,7 +674,7 @@ dr = start_i-end_{i-1}-1
\end{eqnarray}
%公式--------------------------------------------------------------------
\parinterval
需要注意的是, BLEU本身是一个不可微分函数。因此,无法使用梯度下降等方法对式
\ref
{
eq:7-19
}
进行求解。那么如何能快速得到最优解?这里会使用一种特殊的优化方法,称作
{
\small\bfnew
{
线搜索
}}
\index
{
线搜索
}
(Line Search)
\index
{
Line Search
}
,它是Powell搜索的一种形式
\upcite
{
powell1964an
}
。这种方法也构成了最小错误率训练的核心。
\parinterval
需要注意的是, BLEU本身是一个不可微分函数。因此,无法使用梯度下降等方法对式
\
eq
ref
{
eq:7-19
}
进行求解。那么如何能快速得到最优解?这里会使用一种特殊的优化方法,称作
{
\small\bfnew
{
线搜索
}}
\index
{
线搜索
}
(Line Search)
\index
{
Line Search
}
,它是Powell搜索的一种形式
\upcite
{
powell1964an
}
。这种方法也构成了最小错误率训练的核心。
\parinterval
首先,重新看一下特征权重的搜索空间。按照前面的介绍,如果要进行暴力搜索,需要把特征权重的取值按小的间隔进行划分。这样,所有特征权重的取值可以用图
\ref
{
fig:7-23
}
的网格来表示。
...
...
@@ -687,11 +687,11 @@ dr = start_i-end_{i-1}-1
\end{figure}
%-------------------------------------------
\parinterval
其中横坐标为所有的
$
M
$
个特征函数,纵坐标为权重可能的取值。假设每个特征都有
$
V
$
种取值,那么遍历所有特征权重取值的组合有
$
M
^
V
$
种。每组
$
\lambda
=
\{\lambda
_
i
\}
$
的取值实际上就是一个贯穿所有特征权重的折线,如图
\ref
{
fig:7-23
}
中间
红
线所展示的路径。当然,可以通过枚举得到很多这样的折线(图
\ref
{
fig:7-23
}
右)。假设计算BLEU的时间开销为
$
B
$
,那么遍历所有的路径的时间复杂度为
$
O
(
M
^
V
\cdot
B
)
$
,由于
$
V
$
可能很大,而且
$
B
$
往往也无法忽略,因此这种计算方式的时间成本是极高的。如果考虑对每一组特征权重都需要重新解码得到
$
n
$
-best译文,那么基于这种简单枚举的方法是无法使用的。
\parinterval
其中横坐标为所有的
$
M
$
个特征函数,纵坐标为权重可能的取值。假设每个特征都有
$
V
$
种取值,那么遍历所有特征权重取值的组合有
$
M
^
V
$
种。每组
$
\lambda
=
\{\lambda
_
i
\}
$
的取值实际上就是一个贯穿所有特征权重的折线,如图
\ref
{
fig:7-23
}
中间
蓝
线所展示的路径。当然,可以通过枚举得到很多这样的折线(图
\ref
{
fig:7-23
}
右)。假设计算BLEU的时间开销为
$
B
$
,那么遍历所有的路径的时间复杂度为
$
O
(
M
^
V
\cdot
B
)
$
,由于
$
V
$
可能很大,而且
$
B
$
往往也无法忽略,因此这种计算方式的时间成本是极高的。如果考虑对每一组特征权重都需要重新解码得到
$
n
$
-best译文,那么基于这种简单枚举的方法是无法使用的。
\parinterval
对全搜索的一种改进是使用局部搜索。循环处理每个特征,每一次只调整一个特征权重的值,找到使BLEU达到最大的权重。反复执行该过程,直到模型达到稳定状态(例如BLEU不再降低)。
\parinterval
图
\ref
{
fig:7-24
}
左侧展示了这种方法。其中
红
色部分为固定住的权重,相应的虚线部分为当前权重所有可能的取值,这样搜索一个特征权重的时间复杂度为
$
O
(
V
\cdot
B
)
$
。而整个算法的时间复杂度为
$
O
(
L
\cdot
V
\cdot
B
)
$
,其中
$
L
$
为循环访问特征的总次数。这种方法也被称作
{
\small\bfnew
{
格搜索
}}
\index
{
格搜索
}
(Grid Search)
\index
{
Grid Search
}
。
\parinterval
图
\ref
{
fig:7-24
}
左侧展示了这种方法。其中
蓝
色部分为固定住的权重,相应的虚线部分为当前权重所有可能的取值,这样搜索一个特征权重的时间复杂度为
$
O
(
V
\cdot
B
)
$
。而整个算法的时间复杂度为
$
O
(
L
\cdot
V
\cdot
B
)
$
,其中
$
L
$
为循环访问特征的总次数。这种方法也被称作
{
\small\bfnew
{
格搜索
}}
\index
{
格搜索
}
(Grid Search)
\index
{
Grid Search
}
。
%----------------------------------------------
\begin{figure}
[htp]
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论