《数学之美》是吴军继《浪潮之巅》后的又一力作,是他2006年起在google黑板报上一系列文章的合集,主要讲解了各种各样的数学模型,包括自然语言处理的算法,搜索领域的相关技术以及google云计算的一些主要算法。
为了让非计算机专业的读者也能看懂,吴军再次展示了其强大的表达能力和专业素养:马尔科夫链,贝叶斯网络,最大熵模型和维比特算法等从他口中讲出,就变成了一个个引人入胜的精彩故事。如果读者以前对一些抽象的数学概念和模型退而止步,不是因为数学不够美,只是因为以前的教材被阉割过,一上来就是公式和推导,而没有详细的介绍每一种数学思想或者模型产生的背景,能够解决的问题,以及各种流派的发展方向和各派掌门人之间的恩怨情仇。当然,为了兼顾计算机专业的读者,很多章节都从数学模型和公式上做了进一步的推导和阐述。
全书1-7章主要介绍了如何用统计模型来处理自然语言。按照以前计算机课程《编译原理》,对语言的处理主要分为特征词寻找,语法分析和语义分析等几步。计算机编程语言一般都可以归为上下文无关文法,可用传统的语义分析来完美解释。但这种传统的语义分析方法对自然语言的处理遇到了以下的两个难题
- 自然语言规则的多样性。大部分计算机编程语言的语法可以用有限的几十条BNF范式表达清楚,而自然语言本身太复杂,又处在一个不断变化的过程中,即使写几万条文法规则,也只能覆盖20%左右的真实句子。而且,这众多的文法中很有可能是互相矛盾的
- 即使能把自然语言的所有文法规则都表达出来,因为自然语言的上下文相关性,计算量过大,远远超出了计算机能处理的范围
当用文法规则分析自然语言的方法停滞不前之时,统计模型横空出世。统计模型完全是从概率的角度来分析某一句话的意思。假设有一句话S由N个词w1,w2,……,wn组成,那么S在文章中出现的概率是
P(S) =P(w1,w2,……,wn) =P(w1)*P(w2|w1)*P(w3|w1,w2)*……*P(wn|w1,w2,…,wn-1)
加上马尔科夫假设,即每个词出现的概率只和它前一个词出现的概率有关,于是上式简化成
P(S) = P(w1,w2,……,wn) =P(w1)*P(w2|w1)*P(w3|w2)*……*P(wn|wn-1)
其中,条件概率P(wn|wn-1)可以通过联合概率P(wn-1,wn)和边缘概率P(wn-1)相除得到。只要样本阅读材料的数量足够大,根据大数定理,是能够用样本阅读材料中(wn-1,wn)联合出现的频率和文本中(wn-1)单独出现的频率来替代P(wn-1,wn)和P(wn-1)。这种模型一下把自然语言识别的成功率提高了好几个数量级,而且非常的简单有效!
作为Google的前Sr. Director, 吴军当然不会忘记介绍搜索引擎相关的模型。搜索引擎的建立主要分为网页收集,建立索引,PageRank和网页相关性检查四个步骤。
完成第一步收集网页工作的程序是“网络爬虫”。网络爬虫遇到的主要问题是如何有效的遍历整个互联网的网页。这里有基于广度优先和深度优先的不同搜索策略,同时又要用Hash表来记住已保存的网页以避免重复保存以节省存储空间。
PageRank是指搜索得到的所有网页应该以什么样的顺序显示给用户。这里的主要思想是把网页之间的链接指向描述成一个矩阵A,同时向量B表示搜索结果网页的排序。 假设最初每个网页的权重一样都是1/N,即B = (1/N,1/N,……),经过有限次的迭代 Bi = A*Bi-1,B会最终收敛而得到最后的排名。Google的创始人Page也因为这个算法在30岁的时候当选美国工程院院士。
网页相关性则是指被查询句子和网页的关联度。假设被查询句子S =w1,w2,……,wn, 而每个词在网页N中出现的频率(TermFrequency) 为TFi, 那么S和网页N的关联度为 TF1 + TF2 + TF3 + 。。。。。。+TFn。结合PageRank,一个查询的结果等于网页相关性结果和PageRank结果的乘积。
除了一般的文本搜索,地图的搜索也是一个非常有意思的话题,其背后用到的数学知识则是有限状态机和动态规划。有限状态机主要用于地址的分析,而动态规划则用于找到两个地址之间的最短路径。比如要找到北京到广州的最短距离,因为计算量太大, 不能把整个图上的所有从北京到广州的路径先遍历一遍再返回最短的一个。这个问题要反过来考虑,如果最短路径中包括郑州,那么最短路径中北京到郑州的路径一定是所有北京到郑州的路径中最短的。如果不是的话,容易证明出该北京到广州的路径一定不是最短的。这样,可以在北京和广州之间划一条线L1,假设L1上有10个城市,先算出北京到这10个城市的距离,北京到广州的最短路径中一定包含这10条路径中的一个。接着在L1和广州之间再划一条线L2,计算出L1上10个城市到L2上10个城市的最短距离。这样一直划线到广州。假如北京到广州之间要经历15个城市(有15条线),那么如上方法的计算量是10*10*15,而用穷举法的话是10的15次方,计算量差别在万亿以上。这实际上是把一个全局最优的问题转换成了一个寻找局部最优的算法,如下图所示。
自动分类是书中另一个重要话题。Google新闻每天从不同的网站抓成百万的新闻,靠人工是无法及时分类的,那么,如何对新闻自动分类?主要的想法是把每篇新闻中的关键词提起出来,把每个关键词出现的频率记为Bi,用向量B = (B1,B2,B3,……, Bn)来表示每一篇新闻 (Bi是第i个关键词在新闻中的词频)。向量A和B的夹角就表示两篇新闻A和B的相似性,夹角越小,相似性越高。
先通过训练的方式给出每种新闻的“标准”向量,比如体育新闻的向量或者政治新闻的向量,然后把从互联网上抓到的新闻和事先训练好的“标准”向量做比较,依靠夹角大小来自动确定新闻的归类。
文中还谈到了当今最牛的对冲基金--文艺复兴公司,其每年高达34%的回报都来自于最大熵模型。最大熵模型指出,需要对一个随机事件的概率做出预测的时候,我们的预测应该满足全部已知的条件,而对未知情况不做如何的主观预测。这种情况下概率分布最均匀,风险最小,信息熵最大,又称为最大熵模型。股票市场需要考虑的因素多达几十上百种,最大熵方法恰好能找到一种满足所有条件的模型,难怪达拉皮垂兄弟等科学家能赚的盆满钵满,真是书中自有黄金屋!