条件概率和贝叶斯公式:机器翻译

条件概率和贝叶斯公式:机器翻译是怎么工作的?

到目前为止,我们讲的和概率有关的随机试验都是独立的,前后不相关。但是世界上很多随机事件的发生是彼此相关的,比如今天的天气就和昨天的天气有关,在一句话中,某个词是否出现,和上一个词其实也有关。今天我们就来看看,如果前后相关,利用相关性,能够创造什么样的奇迹。

“条件概率”和“本身概率”有什么区别?

我们先来看看汉语中同音词出现的概率,比如汉语拼音tian qi,在不考虑音调时,可以是“天气”,也可以是中药“田七”。如果没有上下文,“天气”出现的可能性恐怕是中药“田七”的上千倍。但是如果我特别强调它前面一个词汇是“中药”,那么后面这个词汇是“田七”的可能性就比“天气”大得多。

可见,在一个特定条件下,某个随机事件发生的概率,和通常它发生的概率有很大区别,这种在某个特定条件下发生的概率,就是条件概率。对于几乎所有的随机事件来讲,条件概率由于条件的存在,它通常不等于本身的概率。

比如说,“天气”这个词在汉语中出现的概率,用P(天气)来表示,可能是千分之一(0.1%),而“田七”的概率P(田七)只有百万分之一(0.0001%),但是如果前面一个词是“中药”,“天气”的概率就降低到十万分之一了,而“田七”的概率则上升到百分之一了。

这时候的概率我们称之为条件概率,“中药”这个词就是后面出现什么词的条件。一般我们把条件概率写成P(天气|中药)的形式。

条件概率在认知上有非常重要的意义。你从上面的例子中可以看出,考虑不考虑条件,两个随机事件发生的概率可以差出很多数量级,原来不可能发生的事情,就极可能会发生,原来以为是大概率的事情,可能根本就不会发生。

很多人学习别人的经验,用到自己身上就不灵了,原因就是没有搞清楚条件。另一方面,有些原来大家认为不可能做成的事情,一旦条件具备,就成为了大概率事件。

条件概率怎么计算?

那么条件概率是怎么计算的呢?为了简单起见,我们这里先不从严格的数学公式讲起,先从经验出发讲一下近似的计算方法,以便于理解。我们先来说说无条件的概率是如何估算的。

我们在前面讲了,当一个随机试验在同等条件下进行很多次时,我们就把它发生的次数,除以试验的总次数,作为近似的概率。在计算语言中词汇出现的概率时也是如此。

比如,我们假定一个词X在非常多的汉语文本,比如一年的人民日报中出现了4000次,而一年人民日报所有的文章有四百万个词。于是,我们就用4000除以总词数400万,得到X的词频是千分之一,我们用f(X)来表示。

当然我们根据前面课程中的讲解,大家知道词频f(X)和实际概率P(X)之间其实是有偏差的,这件事我们下一讲再讨论,今天我们权且认为它们相等,这样问题讲起来比较简单了。

好了,我们假定统计的文本量非常非常大,各种词共出现了10亿次。注意我们这里说的是所有词加起来出现的次数,不是字典中词汇的数量。假如“天气”这个词出现了100万次,概率就是千分之一,“田七”出现了1000次,因此概率是百万分之一。

接下来我们就可以讨论如何计算条件概率了。我们假定“中药”这个词出现了10万次,它后面可能跟随着很多种不同的词,比如“黄芪”、“田七”、“麝香”等等。那么一个词X,在给定前一个词是“中药”的条件下出现的概率是多少呢?应该就是“中药+X”出现的次数,除以中药出现的次数。

比如,“中药田七”四个字出现了1000次,于是中药条件下“田七”的概率就是1000/100000=1%,类似的,如果,“中药天气”这四个字只出现了1次,那就是说,在中药条件下“天气”的概率就是十万分之一。

你可以看出,一个随机事件发生的条件概率,取决于两个因素,一个是这个条件本身出现的次数,在上面的问题中就是“中药”出现的那10万次;另一个是,这个条件和这个随机事件一同出现的次数,在上面的问题中,就是“中药田七”这四个字出现的那1000次。条件概率就是后者加了条件后的“中药田七”对前者“中药”这个词本身的概率比值。在这个例子中,比值就是百分之一。

讲了这么多条件概率的计算,关键要让大家掌握一个公式:P(Y|X)=P(X,Y)/P(X)

【注:一件事Y在条件X下发生的条件概率P(Y|X),等于条件X,和这件事Y一同发生的联合概率P(X,Y),除以条件X的概率P(X)。】

如何把式子变形就是贝叶斯公式?

现在我们把这个式子变形,写成:

P(X,Y)=P(Y|X)*P(X)

(注:可以理解成X和Y一同发生的概率,就是X发生的概率,乘以在X条件下Y发生的概率。)

我们在前面讲过,在数学上的因果关系不像在物理上是单方向的,它可以是条件和结果互为因果。在概率上也有这样一个特点,就是条件和结果可以互换,比如在文本中的两个词X和Y,我们可以说,如果知道前面一个词是“中药”,请问后面一个词是什么?那么前面的词就是后面的词的条件。

我们也可以反过来说,如果知道了后面的词是“田七”,请问前面有可能是什么词?这时上面计算条件概率的算法依然适用,只是把X和Y调一个个儿就可以了,我们可以写成:

P(X|Y)*P(Y)=P(X,Y)

对比这个式子和前面的式子,我们发现它们都等于X和Y的联合概率分布P(X,Y) ,因此两个等式的左边也必然相等。于是,我们就可以得到一个重要的公式P(X|Y)*P(Y)=P(Y|X)*P(X)。

在这个公式中,如果我们知道了其中三个因子,就能求出第四个。通常来讲,两个条件概率P(X)和P(Y)是容易求的。另外两个条件概率,一个是X条件下Y的概率,一个是Y条件下X的概率,常常一个比较容易得到,另一个比较难得到。所以,我们常常从容易得到的条件概率,推导出难得到的概率。这就是著名的贝叶斯公式。

P(X|Y)=P(Y|X)*P(X)/ P(Y)

在这个公式中,我们假定Y条件下X的条件概率比较难得到,我们放在了等式的左边,而X条件下Y的条件概率容易得到,我们放在了等式的右边。

贝叶斯公式有什么用?

数学比较好的同学们可能已经看出来了,这不过是一个小的数学把戏,它真的会很有用吗?

接下来,我们就来看一个例子,看看如何利用条件概率和贝叶斯公式实现计算机自动翻译。

我们假定有一个英语句子Y,想要翻译成中文句子X,那么怎么翻译呢?很多人将它想象成语言学问题,其实这是一个数学问题,或者更准确地说,是一个概率的问题。

假定英语句子Y有很多种翻译方法X1,X2,X3……XN,我们只要挑一种翻译X,使得在已知英语句子Y的条件下,X的概率P(X|Y)超过其它所有可能的句子的条件概率即可。

比如说,这句话有10种翻译方法,它们的条件概率分别是0.1,0.5,0.01,0.02……你会发现第二种翻译方法X2的条件概率是0.5,是最大的,因此就认为Y应该被翻译成X2,或者说X=X2。

你看,这其实又是一个我们之前讲到过的最优化问题了。那么P(X|Y)这个概率该怎么计算呢?

(注:我们无法通过直接统计获得,因为我们前面讲了,你要想直接计算这个概率,就需要恰巧遇到一个英文句子Y,对应一个中文句子X,还在文本中一同出现了很多次。)

这个条件概率的计算,就要用到贝叶斯公式了。我们将它展开成

P(X|Y)=P(Y|X)*P(X)/ P(Y)

这个式子中有三个因子。第一个因子P(Y|X) 是给定中文的句子,对应的英文句子的概率,它可以通过一个马尔可夫模型计算出来,当然你也可以把它想象成通过查字典得到所有相应的汉语词和英语词的对应。这里面的细节我们省略了,有兴趣的同学可以去读读我的《数学之美》一书。

接下来的第二个因子P(X)是所谓的语言模型,它计算的是哪个句子在语法上更合理,这个也可以通过一个马尔可夫模型计算,这里细节我也省略了。第三个因子P(Y)是一个常数,因为你要翻译句子Y,它是个确定的事情,你把它的概率想象成1就可以了(其实不是1)。

于是原来的一个无法直接计算的条件概率,经过贝叶斯公式,变成了三个可以计算的概率。这样,就能够判断给定一个句子,任何翻译出来的中文句子的可能性,然后我们找出最大的那个即可。这便是机器翻译的原理。

要点总结:

首先我们介绍了条件概率的含义,大家可以看出,有没有条件存在,一个随机事件的概率可以相差很大。凡事讲究条件,这是一个重要的知识点。

随后我们介绍了条件概率的计算方法。它的本质是什么呢?概括来讲有两个,首先在数学上条件和结果可以互换,这是它的前提。其次,通过这种互换,可以把一个复杂的问题变成三个简单的问题。这就是贝叶斯公式的本质。利用它,就解决了机器翻译的难题。

在数学上经常要用这样的思路解决问题,看似绕了一个弯,实则是架起了几个桥梁,让本来没有直接通路的两个点,绕几段路能够联通。我们在前面讲到虚数的作用,其实也是绕一个弯之后,把原来不通的道路走通。希望通过这一点,我们能了解远和近的辩证关系。

顺便说一句,在生活中有很多类似机器翻译的问题,看似是智能问题,实际上是数学问题。而学好数学,就是掌握一个工具更好地解决现实问题。我知道这一讲听起来可能有些烧脑,建议你对照文稿再读一遍,我们下一讲再见。

(0)

相关推荐