一、总体计划
我们想自动分析人类已存在的句子翻译语料,同时建立通用的翻译规则。然后用这些规则来自动翻译新的内容!
我知道这本手册有点厚,但如果你花一天时间搞定它,你也会和其他人一样,了解统计机器翻译的绝大多数内容。
这本教程的基本内容是基于 Brown 等人于 1993 年通过期刊 Computational Linguistics 发表的文章 The Mathematics of Statistical Machine Translation。在这篇优秀的文章之上,我能做的仅仅是增加一些新的视角,然后,可能的话,为读者(你们什么都没做错)提供一些同情。
在整个教程中,重要的术语都会用 粗体 进行标注!(译者注:原文使用下划线进行标注)
二、基本的概率知识
我们认为,一个英语句子 e 可以被翻译成任意的一个法语句子 f。只不过一些翻译比另一些更好。这里是一些基本的符号,我们用这些符号来正式地表示“更好”:
P(e) — 先验概率(priori probability)。句子 e 发生的几率。比如,如果 e 是英语句子 “I like snakes”,那么 P(e) 就是某个人在某时刻可能说出 “I like snakes” 而不是说出其他句子的几率。
P(f|e) — 条件概率(conditional probability)。给定句子 e,句子 f 的几率。比如,如果 e 是英语句子 “ I like snakes“,如果 f 是法语句子 “maisson bleue”,那么 P(f|e) 就是翻译器把句子 e 翻译成句子 f 的几率。在这个例子中,完全不可能。
P(e, f) — 联合概率(joint probability)。e 和 f 同时发生的几率。如果 e 和 f 互不影响,我们可以写成 P(e,f) = P(e) * P(f)。比如,如果 e 代表 “the first roll of the die comes up 5”,如果 f 代表 “the second roll of the die comes up 3”,那么P(e,f) = P(e) ∗ P(f) = 1/6 * 1/6 = 1/36。如果 e 和 f 互相影响,则 P(e,f) = P(e) ∗ P(f|e)。意思是:“e 发生的几率”乘以“e 发生且 f 同时发生的几率”。如果 e 和 f 是互译的两串文本,那它们之间肯定是一定程度上相互影响的。
练习题:P(e,f) = P(f) ∗ ?
以上所有概率的值的范围都是 0 到 1 的闭区间。0.5 的概率意味着“有一半的几率”。
三、和与乘积
我们用以下方式来表示从 1 到 n 的整数之和:
我们用以下方式来表示从 1 到 n 的整数之乘积:
如果在求和过程中有因子,但它不依赖求和的元素,我们就可以把它放在外面:
练习题:
有时我们会对所有的句子 e 进行求和,以下是一些有用的概率公式:
最后一个公式你可以这样读:“假设 f 是被一些其他事件影响的,那么对于每一个会影响 f 的事件 e,我们计算 e 发生的几率和 e 发生且 f 同时发生的几率。为了覆盖所有影响 f 的事件 e,我们把所有的几率加起来。”
四、统计机器翻译(Statistical Machine Translation)
对于一个法语句子 f,我们寻找一个英语句子 e,这个句子 e 的 P(e|f) 值是最大的(即最有可能的翻译)。有时我们这样写:
argmax 可以这样读:“在所有的英语句子中,句子 e 的 P(e|f) 值是最大的”。如果你想用电脑程序的角度去思考它,你可以想象有这样一个程序,它接受一组句子 e 和 f,返回概率 P(e|f) 的值,稍后我们会看到这样的程序。
或者,你也可以想象这样一个程序,它接受一个句子 f 作为输入,返回所有可能的句子 ei 以及它的 P(e|f) 值。这样的程序会需要更长的运行时间,即使你把英语句子的长度控制在一定范围。
五、噪声信道(The Noisy Channel)
记住贝叶斯公式(Bayes Rule),这非常重要!
练习题:通过第二节提供的练习题,来证明这个公式
通过贝叶斯公式,我们可以重写刚刚关于寻找最有可能的翻译的表达式:
练习题:P(f) 去哪了?
这个公式的意思是,最有可能的翻译,是以下两个值的乘积的最大值:1. 某人说出句子 e 的几率,2. 如果他说出了句子 e,他会把句子 e 翻译成句子 f 的几率。
噪声信道的原理大概是这样:我们想象某人的脑海里有句子 e,但是在它被正式说出来之前,它被“噪声”影响,从而变成了句子 f。为了恢复到最有可能的句子 e,我们推断:1. 人们会用英语说哪些句子,2. 英语是如何转换成法语的。这俩有时被称为源模型(souce modeling)和信道模型(channel modeling)。人们用噪声信道来隐喻很多的工程问题,比如电话传播中的真实噪声。
如果你想从电脑程序的角度去思考 P(e),你可以想象有一个程序,它接受一个任意的英语句子 e,返回一个概率 P(e)。我们很快就会见到这样的程序。
或者,你也可以认为有一个程序,它返回一个很长的列表,包含了所有的英语句子 ei 和它们的 P(ei)。
对于 P(e|f),想象另一个程序,它接受一组句子 e 和 f,返回 P(e|f)。
同理,也可以是一个程序,它接受一个句子 e,返回所有可能的句子 fi,以及对应的 P(e|fi)。
以上最后的两个程序和第四节中的程序很类似,除了 P(f|e) 和 P(e|f) 不一样。
你可以把源(souce)和信道(channel)放在一起,像这样:
对于同一个法语句子 f,有很多的方法可以产生。每一个方法对应着一个对源句子 e 的不同选择。注意,两个部分由右箭头连接,这被称为生成模型(generative model)因为这个理论(theory)是关于法语句子 f 是如何被生成的。这个理论的意思是,首先一个英语句子 e 被生成,然后它被转换成了法语句子。这理论有点古怪。
六、贝叶斯推理
即使箭头是向右指向的,我们其实会用这套理论来把法语翻译回英语。
把句子 f 当成一个犯罪现场。我们想推理这犯罪现场是怎么来的。我们的生成模型差不多是这样一个东西:某人 e 决定去犯罪,然后他真的犯罪了。所以我们推理这两点:1. 哪些人可能会决定去犯罪(这里的 P(e) 可以认为是动机和人的性格),2. 他们可能会怎样实施犯罪(这里的 P(f|e) 可以认为是交通工具和武器),通常这两点会冲突,某人可能有很好的动机但却没有实施的条件,某人可能很轻易的实施犯罪但却没有动机。
或者说,把句子 f 当成一组医学症状。很多的疾病都可能有这些症状。如果我们来建立生成模型,我们就可以推理出任意疾病 e 发生的概率和疾病 e 会显示出症状 f 的概率。这又是 P(e) 和 P(f|e) 了。它们可能冲突:一些疾病很常见但可能没有症状 f,一些疾病很罕见但可能总是有症状 f。这问题是不是很艰难?
由于生物学家大概知道疾病是如何产生症状的,也就是 P(f|e) ,所以建立这样的电脑模型是可能的。但要建立一个模型,通过症状推理得出疾病就没有那么容易,也就是 P(e|f)。并且,我们可能有一些关于 P(e) 的孤立信息,比如医院的早期记录。
作者:卢瑞
链接:https://www.jianshu.com/p/a7a2d910305f
共同學(xué)習(xí),寫(xiě)下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章
100積分直接送
付費(fèi)專(zhuān)欄免費(fèi)學(xué)
大額優(yōu)惠券免費(fèi)領(lǐng)