168 Chapter 5. 基于词的机器翻译建模 肖桐 朱靖波
5.5.2 解码及计算优化
如果模型参数给定,可以使用 IBM 模型 1 对新的句子进行翻译。比如,可以使
用5.2.5节描述的解码方法搜索最优译文。在搜索过程中,只需要通过公式(5.25)计算
每个译文候选的 IBM 模型翻译概率。但是,公式(5.25)的高计算复杂度导致这些模型
很难直接使用。以 IBM 模型 1 为例,这里把公式(5.25)重写为:
P (s|t) =
ε
(l + 1)
m
l
X
a
1
=0
...
l
X
a
m
=0
| {z }
(l+1)
m
次循环
m
Y
j=1
f(s
j
|t
a
j
)
| {z }
m次循环
(5.26)
可以看到,遍历所有的词对齐需要 (l+1)
m
次循环,遍历所有源语言位置累计 f(s
j
|t
a
j
)
需要 m 次循环,因此这个模型的计算复杂度为 O((l + 1)
m
m)。当 m 较大时,计算这
样的模型几乎是不可能的。不过,经过仔细观察,可以发现公式右端的部分有另外
一种计算方法,如下:
l
X
a
1
=0
...
l
X
a
m
=0
m
Y
j=1
f(s
j
|t
a
j
) =
m
Y
j=1
l
X
i=0
f(s
j
|t
i
) (5.27)
公式(5.27)的技巧在于把若干个乘积的加法(等式左手端)转化为若干加法结果的
乘积(等式右手端),这样省去了多次循环,把 O((l + 1)
m
m) 的计算复杂度降为
O((l + 1)m)。此外,公式(5.27)相比公式(5.26)的另一个优点在于,公式(5.27)中乘法
的数量更少,因为现代计算机中乘法运算的代价要高于加法,因此公式(5.27)的计算
机实现效率更高。图5.19 对这个过程进行了进一步解释。
α(1,0)α(2, 0) + α(1,0)α(2, 1) + α(1, 0)α(2, 2)+
α(1,1)α(2, 0) + α(1,1)α(2, 1) + α(1, 1)α(2, 2)+
α(1,2)α(2, 0) + α(1,2)α(2, 1) + α(1, 2)α(2, 2)
2
P
y
1
=0
2
P
y
2
=0
α(1,y
1
)α(2,y
2
)
=
2
P
y
1
=0
2
P
y
2
=0
2
Q
x=1
(α(1,0) + α(1 , 1) + α(1, 2))·
(α(2,0) + α(2 , 1) + α(2, 2))
=
2
Q
x=1
2
P
y =0
=
l
P
a
1
=0
...
l
P
a
m
=0
m
Q
j=1
f(s
j
|t
a
j
)
=
m
Q
j=1
l
P
i=0
f(s
j
|t
i
)
α(x,y
x
) α(x,y)
图 5.19
l
P
a
1
=0
...
l
P
a
m
=0
m
Q
j=1
f(s
j
|t
a
j
) =
m
Q
j=1
l
P
i=0
f(s
j
|t
i
) 的实例