《数学之美》 吴军
-
统计语言模型
首先成功利用数学方法解决自然语言处理问题的是语音和语言处理大师贾里尼克 (Fred Jelinek )。当时贾里尼克在 IBM 公司做学术休假 (Sabbatical Leave),领导了一批杰出的科学家利用大型计算机来处理人类语言问题。统计语言模型就是在那个时候提出的。
1990年代末期, 大家才发现通过统计得到的句法规则甚至比语言学家总结的更有说服力.
2005年后, 随着Google基于统计方法的翻译系统全面超过基于规则方法的SysTran翻译系统, 基于规则方法固守的最后一个堡垒被拔掉了.
19世纪末到20世纪初, 俄罗斯的数学家马尔可夫把句子的统计语言概率模型简化为二元模型, 称为马尔科夫假设.
训练统计语言模型的艺术就在于解决好统计样本不足时的概率估计问题, 1953年I.J.Good在他老板Alan Turing的指导下提出了在统计中相信可靠的统计数据, 而对不可信的统计数据打折扣的一种概率估计方法. 同时将折扣出来的那一小部分概率给予未看见的事件. -
谈中文分词
中文分词最早由北京航空航天大学的梁南元教授提出. 20世纪80年代, 哈尔滨工业大学的王晓龙博士把查字典的方法理论化, 发展成最少词数的分词理论. 而这种方法明显的不足是二义性问题.
1990年前后, 当时在清华大学电子工程系工作的郭进博士用统计语言模型成功解决了分词二义性问题, 讲汉语分词的错误率降低了一个数量级. 在郭进博士之后, 值得一提的是清华大学孙茂松教授和香港科技大学吴德凯教授的工作.
Google 的葛显平博士和朱安博士,专门为搜索设计和实现了自己的分词系统。
表面上看, 分词技术只针对亚洲语言, 而罗马体系的拼音语言没有这个问题, 其实不然. 中文分词方法也被应用到英语处理, 主要是手写体识别中, 分词方法可以帮助判别英语单词的边界.
需要指出, 统计语言模型很大程度是依照”大众想法”或”多数句子的用法”, 在特定情况下可能是错的. 例如两难的句子”此处安能居住, 其人好不悲伤.”. ”此处-安能-居住, 其人-好不-悲伤.” 和”此处安-能居住, 其人好-不悲伤.”是两个决然不同的意思.
中文分词现在是一个已经解决了的问题, 提升的空间微乎其微. 只要采用统计语言模型, 效果都差不了哪去.
分词的颗粒度, 在机器翻译中, 颗粒度大翻译效果好. 在网页搜索中, 小的颗粒度搜索效果好. -
隐含马尔科夫模型隐含马尔可夫模型是一个数学模型,到目前为之,它一直被认为是实现快速精确的语音识别系统的最成功的方法。复杂的语音识别问题通过隐含马尔可夫模型能非常简单地被表述、解决,让我不由由衷地感叹数学模型之妙。
隐含马尔可夫模型在处理语言问题早期的成功应用是语音识别。七十年代,当时 IBM 的 Fred Jelinek (贾里尼克) 和卡内基•梅隆大学的 Jim and Janet Baker (贝克夫妇,李开复的师兄师姐) 分别独立地提出用隐含马尔可夫模型来识别语音,语音识别的错误率相比人工智能和模式匹配等方法降低了三倍 (从 30% 到 10%)。 八十年代李开复博士坚持采用隐含马尔可夫模型的框架, 成功地开发了世界上第一个大词汇量连续语音识别系统 Sphinx。 -
怎样度量信息
信息是个很抽象的概念。直到 1948 年,香农提出了“信息熵”(shāng) 的概念,才解决了对信息的量化度量问题。
对于任意一个随机变量 X(比如得冠军的球队),它的熵定义如下:
H(X)≡−∑xP(x)log2[P(x)]
H(X)≡−∑xP(x)log2[P(x)]
不同语言的冗余度差别很大,而汉语在所有语言中冗余度是相对小的。这和人们普遍的认识“汉语是最简洁的语言”是一致的。
-
简单之美:布尔代数和搜索引擎的索引
布尔(George Boole) 是十九世纪英国一位小学数学老师。他生前没有人认为他是数学家。布尔在工作之余,喜欢阅读数学论著、思考数学问题。1854 年“思维规律”(An Investigation
of the Laws of Thought, on which are founded the Mathematical Theories of Logic and Probabilities)一书,第一次向人们展示了如何用数学的方法解决逻辑问题。 布尔代数简单得不能再简单了。运算的元素只有两个 1 (TRUE, 真) 和 0 (FALSE,假)。基本的运算只有“与”(AND)、“或” (OR) 和“非”(NOT) 三种(后来发现,这三种运算都可以转换成“与”“非” AND-NOT一种运算)。
读者也许会问这么简单的理论能解决什么实际问题。布尔同时代的数学家们也有同样的问题。事实上在布尔代数提出后 80 多年里,它确实没有什么像样的应用,直到 1938 年香农在他的硕士论文中指出用布尔代数来实现开关电路,才使得布尔代数成为数字电路的基础。 -
图论和网络爬虫 (Web Crawlers)
离散数学是当代数学的一个重要分支,也是计算机科学的数学基础。它包括数理逻辑、集合论、图论和近世代数四个分支。
如何自动下载互联网所有的网页呢,它要用到图论中的遍历(Traverse) 算法。
图论的起源可追溯到大数学家欧拉(Leonhard Euler)。1736 年欧拉来到德国的哥尼斯堡(Konigsberg,大哲学家康德的故乡,现在是俄罗斯的加里宁格勒),发现当地市民们有一项消遣活动,就是试图将下图中的每座桥恰好走过一遍并回到原出发点,从来没有人成功过。欧拉证明了这件事是不可能的,并写了一篇论文,一般认为这是图论的开始。
图的一种遍历算法称为“广度优先算法”(BFS),它先要尽可能广地访问每个节点所直接连接的其他节点。另种方法叫“深度优先算法”(DFS),它是一条路走到黑。
在搜索引擎中,网页是节点,网页中的超链接可以作为弧。
世界上第一个网络爬虫是由麻省理工学院 (MIT)的学生马休.格雷(Matthew Gray)在 1993 年写成的。他给他的程序起了个名字叫“互联网漫游者”(“www wanderer”)。以后的网络爬虫越写越复杂,但原理是一样的。
当然,我们也要记载哪个网页下载过了,以免重复。在网络爬虫中,我们使用一个称为“哈希表”(Hash Table)的列表而不是一个记事本纪录网页是否下载过的信息。 -
信息论在信息处理中的应用
信息熵正是对不确定性的衡量,因此信息熵可以直接用于衡量统计语言模型的好坏。贾里尼克从信息熵出发,定义了一个称为语言模型复杂度(Perplexity)的概念,直接衡量语言模型的好坏。一个模型的复杂度越小,模型越好。
信息论中仅次于熵的另外两个重要的概念是“互信息”(Mutual Information) 和“相对熵”(Kullback-Leibler Divergence)。
“互信息”是信息熵的引申概念,它是对两个随机事件相关性的度量。在自然语言处理中,经常要度量一些语言现象的相关性。比如在机器翻译中,最难的问题是词义的二义性(歧义性)问题。人们很容易想到要用语法、要分析语句等等。其实,至今为止,没有一种语法能很好解决这个问题,真正实用的方法是使用互信息。看看上下文中哪类相关的词多就可以了。这种方法最初是由吉尔(Gale),丘奇(Church)和雅让斯基(Yarowsky)提出的。
信息论中另外一个重要的概念是“相对熵”,在有些文献中它被称为成“交叉熵”。在英语中是 Kullback-Leibler Divergence,是以它的两个提出者库尔贝克和莱伯勒的名字命名的。相对熵用来衡量两个正函数是否相似,对于两个完全相同的函数,它们的相对熵等于零。在自然语言处理中可以用相对熵来衡量两个常用词(在语法上和语义上)是否同义,或者两篇文章的内容是否相近等等。利用相对熵,我们可以得到信息检索中最重要的一个概念:词频率-逆向文档频率(TF/IDF)。下面要介绍的如何根据相关性对搜索出的网页进行排序,就要用的TF/IDF的概念。另外,在新闻的分类中也要用到相对熵和TF/IDF。
对信息论有兴趣又有一定数学基础的读者,可以阅读斯坦福大学托马斯.科弗 (Thomas Cover) 教授的专著 “信息论基础”(Elements of Information Theory)。科弗教授是当今最权威的信息论专家。 -
贾里尼克的故事和现代语言处理
贾里尼克在康乃尔十年磨一剑,潜心研究信息论,终于悟出了自然语言处理的真谛。1972年,贾里尼克到IBM 华生实验室(IBM T. G. Watson Labs)做学术休假,无意中领导了语音识别实验室,两年后他在康乃尔和IBM之间选择了留在IBM。在那里,贾里尼克组建了阵容空前绝后强大的研究队伍,其中包括他的著名搭档波尔(L. Bahl),著名的语音识别 Dragon 公司的创始人贝克夫妇(Jim Baker & Janet Baker),解决最大熵迭代算法的达拉皮垂(Della Pietra)孪生兄弟,BCJR 算法的另外两个共同提出者库克(J. Cocke)和拉维夫(J. Raviv),以及第一个提出机器翻译统计模型的布朗(Peter Brown)。就连当年资历最浅的小字辈任务拉法特(John Laffety)现在都成了了不起的学者.
在贾里尼克以前,科学家们把语音识别问题当作人工智能问题和模式匹配问题。而贾里尼克把它当成通信问题,并用两个隐含马尔可夫模型(声学模型和语言模型)把语音识别概括得清清楚楚。这个框架结构对至今的语音和语言处理有着深远的影响,它从根本上使得语音识别有实用的可能。贾里尼克本人后来也因此当选美国工程院院士。
贾里尼克和波尔,库克以及拉维夫对人类的另一大贡献是BCJR 算法,这是今天数字通信中应用的最广的两个算法之一(另一个是维特比算法)。有趣的是,这个算法发明了二十年后,才得以广泛应用。IBM 于是把它列为了 IBM 有史以来对人类最大贡献之一,并贴在加州 Amaden 实现室墙上。遗憾的是 BCJR 四个人已经全部离开 IBM,有一次 IBM 的通信部门需要用这个算法,还得从斯坦福大学请一位专家去讲解,这位专家看到 IBM 橱
窗里的成就榜,感慨万分。
贾里尼克和 IBM 一批最杰出的科学家在九十年代初离开了IBM,他们大多数在华尔街取得了巨大的成功。贾里尼克的书生气很浓,于是去约翰霍普金斯大学建立了世界著名的 CLSP 实验室。每年夏天,贾里尼克邀请世界上 20-30 名顶级的科学家和学生到 CLSP 一起工作,使得 CLSP 成为世界上语音和语言处理的中心之一。 -
如何确定网页和查询的相关性
需要根据网页的长度,对关键词的次数进行归一化,也就是用关键词的次数除以网页的总字数。我们把这个商称为“关键词的频率”,或者“单文本词汇频率”(Term Frequency)。
“应删除词”(Stopwords),也就是说在度量相关性是不应考虑它们的频率。在汉语中,应删除词还有“是”、“和”、“中”、“地”、“得”等等几十个。
另一个小的漏洞。在汉语中,“应用”是个很通用的词,而“原子能”是个很专业的词,后者在相关性排名中比前者重要。因此我们需要给汉语中的每一个词给一个权重,这个权重的设定必须满足下面两个条件: -
一个词预测主题能力越强,权重就越大,反之,权重就越小。
-
应删除词的权重应该是零。
概括地讲,假定一个关键词w在Dw个网页中出现过,那么Dw越大,w的权重越小,反之亦然。在信息检索中,使用最多的权重是“逆文本频率指数” (Inverse document frequency 缩写为IDF),它的公式为log(D/Dw)其中D是全部网页数。
TF/IDF (term frequency/inverse document frequency) 的概念被公认为信息检索中最重要的发明。
IDF
的概念最早是剑桥大学的斯巴克-琼斯[注:她有两个姓](Karen Sparck Jones)提出来的。斯巴克-琼斯 1972年在一篇题为关键词特殊性的统计解释和她在文献检索中的应用的论文中提出IDF。遗憾的是,她既没有从理论上解释为什么权重IDF应该是对数函数,倒是后来康乃尔大学的萨尔顿(Salton)多次写文章、写书讨论 TF/IDF 在信息检索中的用途,加上萨尔顿本人的大名(信息检索的世界大奖就是以萨尔顿的名字命名的.
有关网页综合排名大致由相关性和网页排名乘积决定。 -
有限状态机和地址识别
地址的识别和分析是本地搜索必不可少的技术,尽管有许多识别和分析地址的方法,最有效的是有限状态机。
使用有限状态机识别地址,关键要解决两个问题,即通过一些有效的地址建立状态机,以及给定一个有限状态机后,地址字串的匹配算法。当用户输入的地址不太标准或者有错别字时,有限状态机会束手无策,因为它只能进行严格匹配。为了解决这个问题,我们希望有一个能进行模糊匹配、并给出一个字串为正确地址的可能性。为了实现这一目的,科学家们提出了基于概率的有限状态机。这种基于概率的有限状态机和离散的马尔可夫链基本上等效。 -
Google AK47的制造者阿米特.辛格博士
Google 的杰出工程师阿米特.辛格博士(Amit Singhal) 就是为 Google 设计阿卡 47 冲锋枪的人,在公司内部,Google 的排序算法便是以他的名字命名的。
辛格之所以总是能找到那些简单有效的方法,不是靠直觉,更不是撞大运,而是靠他丰富的研究经验。辛格早年从师于搜索大师萨尔顿(Salton)教授,毕业后就职于 AT&T 实验室。在那里,他和两个同事半年就搭起了一个中等规模的搜索引擎,这个引擎索引的网页数量虽然无法和商用的引擎相比,但是准确性却非常好。在 AT&T,他对搜索问题的各个细节进行了仔细的研究,他的那些简单而有效的解决方案,常常是深思熟虑去伪存真的结果。
辛格在 AT&T 时确立了他在学术界的地位,但是,他不是一个满足于做实验写论文的人,于是他离开了实验室来到了当时只有百、十人的 Google。在这里,他得以施展才智,重写了 Google 的排名算法,并且一直在负责改进它。辛格因为舍不得放下两个孩子,很少参加各种会议,但是他仍然被学术界公认为是当今最权威的网络搜索专家。2005 年,辛格作为杰出校友被请回母校康乃尔大学计算机系在 40 年系庆上作报告,获得这一殊荣的还有大名鼎鼎的美国工程院院士,计算机独立磁盘冗余阵列(RAID)的发明人凯茨(Randy Katz) 教授。 -
余弦定理和新闻的分类
余弦定理和新闻的分类似乎是两件八杆子打不着的事,但是它们确有紧密的联系。具体说,新闻的分类很大程度上依靠余弦定理。
我们用TF/IDF组成的向量来代表这篇新闻,如果两篇新闻的特征向量相近,则对应的新闻内容相似,它们应当归在一类,反之亦然。学过向量代数的人都知道,向量实际上是多维空间中有方向的线段。如果两个向量的方向一致,即夹角接近零,那么这两个向量就相近。而要确定两个向量方向是否一致,这就要用到余弦定理计算向量的夹角了。
当两条新闻向量夹角的余弦等于一时,这两条新闻完全重复(用这个办法可以删除重复的网页);当夹角的余弦接近于一时,两条新闻相似,从而可以归成一类;夹角的余弦越小,两条新闻越不相关。 -
信息指纹及其应用
任何一段信息文字,都可以对应一个不太长的随机数,作为区别它和其它信息的指纹(Fingerprint)。只要算法设计的好,任何两段信息的指纹都很难重复,就如同人类的指纹一样。信息指纹在加密、信息压缩和处理中有着广泛的应用。
假定网址的平均长度为一百个字符,那么存贮 200 亿个网址本身至少需要 2 TB,即两千 GB 的容量,考虑到哈希表的存储效率一般只有 50%,实际需要的内存在 4 TB 以上。即使把这些网址放到了计算机的内存中,由于网址长度不固定,以字符串的形式查找的效率会很低。因此,我们如果能够找到一个函数,将这 200 亿个网址随机地映射到 128 二进位即 16 个字节的整数空间,比如将上面那个很长的字符串对应成一个如下的随机数:
893249432984398432980545454543
这样每个网址只需要占用 16 个字节而不是原来的一百个。这就能把存储网址的内存需求量降低到原来的 1/6。这个 16 个字节的随机数,就称做该网址的信息指纹(Fingerprint)。可以证明,只要产生随机数的算法足够好,可以保证几乎不可能有两个字符串的指纹相同,就如同不可能有两个人的指纹相同一样。由于指纹是固定的 128 位整数,因此查找的计算量比字符串比较小得多。网络爬虫在下载网页时,它将访问过的网页的网址都变成一个个信息指纹,存到哈希表中,每当遇到一个新网址时,计算机就计算出它的指纹,然后比较该指纹是否已经在哈希表中,来决定是否下载这个网页。这种整数的查找比原来字符串查找,可以快几倍到几十倍。
产生信息指纹的关键算法是伪随机数产生器算法(prng)。最早的 prng 算法是由计算机之父冯诺伊曼提出来的。他的办法非常简单,就是将一个数的平方掐头去尾,取中间的几位数。比如一个四位的二进制数 1001(相当于十进制的 9),其平方为 01010001 (十进制的 81)掐头去尾剩下中间的四位 0100。当然这种方法产生的数字并不很随机,也就是说两个不同信息很有可能有同一指纹。现在常用的 MersenneTwister 算法要好得多。
信息指纹的用途远不止网址的消重,信息指纹的的孪生兄弟是密码。信息指纹的一个特征是其不可逆性, 也就是说, 无法根据信息指纹推出原有信息,这种性质, 正是网络加密传输所需要的。 -
谈谈数学模型的重要性
在包括哥白尼、伽利略和牛顿在内的所有天文学家中,最佩服的是地心说的提出者托勒密。托勒密的伟大之处是用四十个小圆套大圆的方法,精确地计算出了所有行星运动的轨迹。(托勒密继承了毕达格拉斯的一些思想,他也认为圆是最完美的几何图形。)
纠正地心说错误不是靠在托勒密四十个圆的模型上再多套上几个圆,而是进一步探索真理。哥白尼发现,如果以太阳为中心来描述星体的运行,只需要 8-10 个圆,就能计算出一个行星的运动轨迹,他提出了日心说。很遗憾的事,哥白尼正确的假设并没有得到比托勒密更好的结果,哥白尼的模型的误差比托勒密地要大不少。
开普勒在所有一流的天文学家中,资质较差,一生中犯了无数低级的错误。但是他有两条别人没有的东西,从他的老师第谷手中继承的大量的、在当时最精确的观测数据,以及运气。开普勒很幸运地发现了行星围绕太阳运转的轨道实际是椭圆形的,这样不需要用多个小圆套大圆,而只要用一个椭圆就能将星体运动规律描述清楚了。只是开普勒的知识和水平不足以解释为什么行星的轨道是椭圆形的。最后是伟大的科学家牛顿用万有引力解释了这个问题。
吴军老师和 Google 中国的工程师们一同总结了这么几个结论: -
一个正确的数学模型应当在形式上是简单的。(托勒密的模型显然太复杂。)
-
一个正确的模型在它开始的时候可能还不如一个精雕细琢过的错误的模型来的准确,但是,如果我们认定大方向是对的,就应该坚持下去。(日心说开始并没有地心说准确。)
-
大量准确的数据对研发很重要。
-
正确的模型也可能受噪音干扰,而显得不准确;这时我们不应该用一种凑合的修正方法来弥补它,而是要找到噪音的根源,这也许能通往重大发现。(吸引天王星偏离轨道的海王星的发现)
-
繁与简 自然语言处理的几位精英
柯林斯:追求完美. 柯林斯从师于自然语言处理大师马库斯 (Mitch Marcus), 在作博士期间,柯林斯写了一个后来以他名字命名的自然语言文法分析器(sentence parser),可以将书面语的每一句话准确地进行文法分析。文法分析是很多自然语言应用的基础。柯林斯的博士论文堪称是自然语言处理领域的范文。它像一本优秀的小说,把所有事情的来龙去脉介绍的清清楚楚,对于任何有一点计算机和自然语言处理知识的人,都可以轻而易举地读懂他复杂的方法。
布莱尔:简单才美. 在研究方法上,站在柯林斯对立面的典型是他的师兄艾里克 • 布莱尔 (Eric Brill ) 和雅让斯基,后者我们已经介绍过了,这里就不再重复。与柯林斯从工业界到学术界相反,布莱尔职业路径是从学术界走到工业界。与柯里斯的研究方法相反,布莱尔总是试图寻找简单得不能再简单的方法。布莱尔的成名作是基于变换规则的机器学习方法 (transformation rule based machine learning)。这个方法名称虽然很复杂,其实非常简单。
16-17. 不要把所有的鸡蛋放在一个篮子里-谈谈最大熵模型
我们在投资时常常讲不要把所有的鸡蛋放在一个篮子里,这样可以降低风险。在信息处理中,这个原理同样适用。在数学上,这个原理称为最大熵原理(the maximum entropy principle)。最大熵”这个名词听起来很深奥,但是它的原理很简单,我们每天都在用。说白了,就是要保留全部的不确定性,将风险降到最小。
最大熵原理指出,当我们需要对一个随机事件的概率分布进行预测时,我们的预测应当满足全部已知的条件,而对未知的情况不要做任何主观假设。(不做主观假设这点很重要。)在这种情况下,概率分布最均匀,预测的风险最小。因为这时概率分布的信息熵最大,所以人们称这种模型叫“最大熵模型”。
匈牙利著名数学家、信息论最高奖香农奖得主希萨(Csiszar)证明,对任何一组不自相矛盾的信息,这个最大熵模型不仅存在,而且是唯一的。而且它们都有同一个非常简单的形式 — 指数函数。
最大熵模型在形式上是最漂亮的统计模型,而在实现上是最复杂的模型之一。
最原始的最大熵模型的训练方法是一种称为通用迭代算法 GIS(generalized iterative scaling) 的迭代算法。
GIS 最早是由 Darroch 和 Ratcliff 在七十年代提出的。但是,这两人没有能对这种算法的物理含义进行很好地解释。后来是由数学家希萨(Csiszar)解释清楚的,因此,人们在谈到这个算法时,总是同时引用 Darroch 和 Ratcliff 以及希萨的两篇论文。GIS 算法每次迭代的时间都很长,需要迭代很多次才能收敛,而且不太稳定,即使在 64 位计算机上都会出现溢出。因此,在实际应用中很少有人真正使用 GIS。大家只是通过它来了解最大熵模型的算法。 八十年代,很有天才的孪生兄弟的达拉皮垂(Della Pietra)在 IBM 对 GIS 算法进行了两方面的改进,提出了改进迭代算法 IIS(improved iterative scaling)。这使得最大熵模型的训练时间缩短了一到两个数量级。这样最大熵模型才有可能变得实用。即使如此,在当时也只有 IBM 有条件是用最大熵模型。
最大熵模型快速算法的实现很复杂,到今天为止,世界上能有效实现这些算法的人也不到一
百人。有兴趣实现一个最大熵模型的读者可以阅读吴军的论文。
最大熵模型,可以说是集简与繁于一体,形式简单,实现复杂。值得一提的是,在 Google 的很多产品中,比如机器翻译,都直接或间接地用到了最大熵模型。
-
闪光的不一定是金子 — 谈谈搜索引擎作弊问题(Search Engine Anti-SPAM)
自从有了搜索引擎,就有了针对搜索引擎网页排名的作弊(SPAM)。早期最常见的作弊方法是重复关键词。在有了网页排名(page rank)以后,作弊者发现一个网页被引用的连接越多,排名就可能越靠前,于是就有了专门卖链接和买链接的生意。
在Google 最早发现搜索引擎作弊的是 Matt Cutts。
从广义上讲,只要噪音不是完全随机的、并且前后有相关性,就可以检测到并且消除。(事实上,完全随机不相关的高斯白噪音是很难消除的。) -
矩阵运算和文本处理中的分类问题
分类的关键是计算相关性。我们首先对两个文本计算出它们的内容词,或者说实词的向量,然后求这两个向量的夹角。在文本分类中,另一种办法是利用矩阵运算中的奇异值分解(Singular Value Decomposition,简称 SVD)。首先,我们可以用一个大矩阵A来描述这一百万篇文章和五十万词的关联性。这个矩阵中,每一行对应一篇文章,每一列对应一个词。我们只要对关联矩阵A进行一次奇异值分解,我们就可以同时完成了近义词分类和文章的分类。(同时得到每类文章和每类词的相关性)。最近,Google 中国的张智威博士和几个中国的工程师及实习生已经实现了奇异值分解的并行算法。 -
马尔可夫链的扩展-贝叶斯网络 (Bayesian Networks)
马尔可夫链 (Markov Chain)描述了一种状态序列,其每个状态值取决于前面有限个状态。这种模型,对很多实际问题来讲是一种很粗略的简化。在现实生活中,很多事物相互的关系并不能用一条链来串起来。它们之间的关系可能是交叉的、错综复杂的。
由于网络的每个弧有一个可信度,贝叶斯网络也被称作信念网络 (belief networks)。
和马尔可夫链类似,贝叶斯网络中的每个状态值取决于前面有限个状态。不同的是,贝叶斯网络比马尔可夫链灵活,它不受马尔可夫链的链状结构的约束,因此可以更准确地描述事件之间的相关性。可以讲,马尔可夫链是贝叶斯网络的特例,而贝叶斯网络是马尔可夫链的推广。使用贝叶斯网络必须知道各个状态之间相关的概率。得到这些参数的过程叫做训练。相比马尔可夫链,贝叶斯网络的训练比较复杂,从理论上讲,它是一个 NP-complete 问题,也就是说,对于现在的计算机是不可计算的。但是,对于某些应用,这个训练过程可以简化,并在计算上实现。 值得一提的是 IBM Watson 研究所的茨威格博士 (Geoffrey Zweig) 和西雅图华盛顿大学的比尔默 (Jeff Bilmes) 教授完成了一个通用的贝叶斯网络的工具包,提供给对贝叶斯网络有兴趣的研究者。
贝叶斯网络在图像处理、文字处理、支持决策等方面有很多应用。在文字处理方面,语义相近的词之间的关系可以用一个贝叶斯网络来描述。我们利用贝叶斯网络,可以找出近义词和相关的词,在 Google 搜索和 Google 广告中都有直接的应用。 -
自然语言处理的教父–马库斯
在指导博士生时,马库斯发现语料库在自然语言处理中的重要性。马库斯呕心沥血,花了十几年工夫建立了一系列标准的语料库,提供给全世界的学者使用。这套被称为 LDC 的语料库,是当今全世界自然语言处理的所有学者都使用的工具。
马库斯利用自己的影响力让美国自然科学基金会和 DARPA 出钱立项,联络的多所大学和研究机构,建立的数百个标准的语料库。其中最著名的是 PennTree Bank 的语料库。PennTree Bank 覆盖多种语言(包括中文)。每一种语言,它有几十万到几百万字的有代表性的句子,每个句子都有的词性标注,语法分析树等等。LDC 语料库如今已成为全世界自然语言处理科学家共用的数据库。如今,在自然语言处理方面发表论文,几乎都要提供基于 LDC 语料库的测试结果。 -
布隆过滤器(Bloom Filter)
计计算机软件时,我们经常要判断一个元素是否在一个集合中。一般来讲,计算机中的集合是用哈希表(hash table)来存储的。它的好处是快速准确,缺点是费存储空间。布隆过滤器只需要哈希表 1/8 到 1/4 的大小就能解决同样的问题。
布隆过滤器的好处在于快速,省空间。但是有一定的误识别率。常见的补救办法是在建立一个小的白名单,存储那些可能别误判的邮件地址。 -
由电视剧《暗算》所想到的-谈谈密码学的数学原理
有经验的编码者会把常用的词对应成多个密码,使得破译者很难统计出任何规律。
现代密码学的祖宗应该是香农。冯∙ 诺依曼的贡献在发明计算机和提出博弈论(game theory)。
我们今天用的所谓最可靠的加密方法的数学原理其实很简单,一点也不神秘,无非是找几个大素数做一些乘除和乘方运算就可以了 -
输入一个汉字需要敲多少个键-谈谈香农第一定律
现在所有输入法都是基于词输入。
像王码这类的输入方法理论上讲有效,实际上不实用。原因有两个,第一,很难学;第二,从认知科学的角度上讲,人一心无二用,人们在没有稿子边想边写的情况下不太可能在回忆每个词复杂的编码的同时又不中断思维。所以还是基于拼音的简单输入法占统治地位。
在产品中,我们不可能占有用户太多的内存空间,因此各种输入方法提供给用户的是一个压缩的很厉害的语音模型,而有的输入方法为了减小内存占用,根本没有语言模型。拼音输入法的好坏关键在准确而有效的语言模型。另一方面,由于现有输入方法离信息论给的极限还有很大的差距,汉语输入方法可提升的空间很大。 -
从全球导航到输入法- 谈谈动态规划
全球导航的关键技术只有两个:第一是利用卫星定位;第二根据用户输入的起终点,在地图上规划最短路线或者最快路线。后者的关键算法是计算机科学图论中的动态规划(Dynamic
Programming)的算法。
可以将汉语输入看成一个通信问题,而输入法则是一个将拼音串到汉字串的转换器。每一个拼音可以对应多个汉字,一个拼音串就可以对应图论中的一张图。将上下文的相关性量化,作为从前一个汉字到后一个汉字的距离,那么,寻找给定拼音条件下最合理句子的问题
就变成了一个典型的“最短路径”问题。 -
条件随机场和句法分析
上世纪80年代以后,布朗大学计算机系的计算语言学家尤金.查尼阿克统计出文法规则的概率,在选择文法规则时,坚持一个原则-让被分析的句子的语法树概率达到最大。查尼阿克无形中在数学和句法分析上搭建了一个桥梁,而搭建这个桥梁的第二个人就是马库斯的学生拉纳帕提。
条件随机场的出现大大提高了句子浅层分析的正确率,正确率可达95%,使得句子分析得以应用到很多产品,比如机器翻译上。在隐含马尔科夫模型中, 输出只和状态有关. 而条件随机场中, 观察值可能还和前后状态都有关. 条件随机场是隐含马尔科夫模型的一种扩展. 它和另一种概率图模型—贝叶斯网络相同. 而不同之处在于条件随机场是无向图, 而贝叶斯网络是有向图.
最早采用条件随机场对句子进行浅层分析的是宾夕法尼亚大学的博士生沙飞和他的导师(之一)皮耶尔. 他们继承了拉纳帕提的方法, 只做了句子分析的第一层, 即从词到词组的自动组合.
条件随机场是一个非常灵活的用于预测的统计模型. 它在模式识别,机器学习和生物统计中都有很成功的应用。和最大熵模型一样,条件随机场的形式简单,但是实现复杂。所幸的是,现在有不少开源的软件可供使用。 -
维特比和他的维特比算法
维特比算法是现代数字通信中使用最频繁的算法,同时也是自然语言处理的解码算法。维特比算法是一个特殊但应用最广的动态规划算法。利用动态规划可以解决任何一个图中的最短路径问题。而维特比算法是针对一个特殊的图—篱笆网络的有向图的最短路径问题而提出的。它之所以重要,是因为凡是使用隐含马尔科夫模型描述的问题都可以用它来解码。
CDMA技术—3G移动通信的基础
海蒂拉玛尔被誉为史上最美丽的科学家, 主业演员,副业科学家。
美国的两个主要无线运营商AT&T和Verizon,后者质量好,原因是前者继承过去的TDMA,后者则完全基于CDMA
如果把维特比算作数学家中一员,那么他也许是全世界有史以来第二富有的数学家(第一富有的无疑是文艺复兴技术公司的创始人基姆.塞蒙斯)。 -
再谈文本自动分类问题–期望最大化算法
期望最大化算法(Expectation Maximization Algorithm)算法被称之为上帝的算法.
在文本分类中依然要用TF-IDF向量和余弦距离来进行特征度量。
EM算法只需要有一些训练数据,定义一个最大化函数,剩下的事情就交给计算机,经过若干次迭代,需要的模型就训练好。要注意,对于非凸函数,EM算法不保证全局最优。 -
逻辑回归和搜索广告
搜索广告的发展: 1. 百度的广告竞价;2. Google结合出价和预测被点击;3. 全局进一步优化。
在整合各个特征时提出了逻辑回归模型。 -
各个击破算法和Google云计算的基础
云计算的一个关键问题是如何把一个非常大的计算问题,自动分解到许多计算能力不是很强大的计算机上,共同完成。Google采用的是分治算法(Divide-and-Conquer),或称为各个击破算法。