设我们有一个法语句子 f,要把它翻译成英语句子 e,也即找到一个 e 使得 P(e|f) 最大。由 Bayes 定理,P(e|f) = P(e) * P(f|e) / P(f)。这里 P(f) 固定,故我们要找的就是一个 e 使得 P(e)*P(f|e) 最大。从噪声信道 (noisy channel) 的角度来分析就是,在我们头脑里按照 P(e) 生成了一个英文句子,结果在被我们说出或写出的时候发生了噪声干扰,这个干扰的概率分布是 P(f|e),最后表现出来的就是一个法语句子了。
由此,一个统计机器翻译 (SMT) 系统的任务就分为了三部分:
(1) 估计 P(e),即所谓的语言模型
(2) 估计 P(f|e),即所谓的翻译模型
(3) 用一个合适的算法找到一个 e 使得 P(e) * P(f|e) 最大(至少是尽可能大)
当初在看到这里的时候我十分不解,相信所有人都会有这个问题:为什么不直接估计 P(e|f) 然后直接取最大概率的 e?在很久以后我终于看到一个比较令人信服的解释:如果我们能够把模型估计得足够精确的话,实际上直接计算 P(e|f) 应该是更好的选择,然而由于数据集有限,这个估计不可能精确,所以往往得不到很好的结果。如果是用 P(e)*P(f|e) 来算的话,当然 P(e) 和 P(f|e) 也不会十分精确,但让这两者相乘,我们就可以期望找到一个 P(e) 和 P(f|e) 都不太坏的翻译,也就是说,这个翻译既比较像一个正常人说的英文,又和原来的法语意思比较接近,如果这两者中任何一个比较不靠谱的话,这个乘积就会比较小,从而也就不会被选出来。