【专栏】数学之美番外篇:平凡而又神奇的贝叶斯方法(7)
根据认知神经科学的认识,很可能我们是先从句子到语义(一个逐层往上(bottom-up)抽象的folding过程),然后从语义根据另一门语言的语法展开为另一门语言(一个逐层往下(top-down)的具体化unfolding过程)。
统计机器翻译
统计机器翻译因为其简单,自动(无需手动添加规则),迅速成为了机器翻译的事实标准。而统计机器翻译的核心算法也是使用的贝叶斯方法。
问题是什么?统计机器翻译的问题可以描述为:给定一个句子e,它的可能的外文翻译f中哪个是最靠谱的。即我们需要计算:P(f|e)。一旦出现条件概率贝叶斯总是挺身而出:
P(f|e) ∝ P(f) * P(e|f)
这个式子的右端很容易解释:那些先验概率较高,并且更可能生成句子e的外文句子f将会胜出。我们只需简单统计(结合上面提到的N-Gram语言模型)就可以统计任意一个外文句子f的出现概率。然而P(e|f)却不是那么好求的,给定一个候选的外文局子f,它生成(或对应)句子e的概率是多大呢?我们需要定义什么叫“对应”,这里需要用到一个分词对齐的平行语料库,有兴趣的可以参考《Foundations of Statistical Natural Language Processing》第13章,这里摘选其中的一个例子:假设e为:John loves Mary。我们需要考察的首选f是:Jean aime Marie(法文)。我们需要求出P(e|f)是多大,为此我们考虑e和f有多少种对齐的可能性,如:
John (Jean) loves (aime) Marie (Mary)
就是其中的一种(最靠谱的)对齐,为什么要对齐,是因为一旦对齐了之后,就可以容易地计算在这个对齐之下的P(e|f)是多大,只需计算:
P(John|Jean) * P(loves|aime) * P(Marie|Mary)
即可。
然后我们遍历所有的对齐方式,并将每种对齐方式之下的翻译概率∑求和。便可以获得整个的P(e|f)是多大。
一点注记:还是那个问题:难道我们人类真的是用这种方式进行翻译的?highly unlikely。这种计算复杂性非常高的东西连三位数乘法都搞不定的我们才不会笨到去使用呢。根据认知神经科学的认识,很可能我们是先从句子到语义(一个逐层往上(bottom-up)抽象的folding过程),然后从语义根据另一门语言的语法展开为另一门语言(一个逐层往下(top-down)的具体化unfolding过程)。如何可计算地实现这个过程,目前仍然是个难题。(我们看到很多地方都有bottom-up/top-down这样一个对称的过程,实际上有人猜测这正是生物神经网络原则上的运作方式,对视觉神经系统的研究尤其证明了这一点,Hawkins在《On Intelligence》里面提出了一种HTM(Hierarchical Temporal Memory)模型正是使用了这个原则。)
(待续;此文的修订版已收录《暗时间》一书,由电子工业出版社2011年8月出版。作者于2009年7月获得南京大学计算机系硕士学位,现在微软亚洲研究院创新工程中心从事软件研发工程师工作。)
网络编辑:谢小跳