[1]吴军著.数学之美 第三版[M].北京:人民邮电出版社.2020.
第 1 章 文字和语言 vs 数字和信息
有了文字,前人的生活经验和发生的事件便一代代传了下来。只要一个文明不中断,或者这种文字还有人认识,这些信息就会永远流传下去,比如中国的文明便是如此。
翻译这件事之所以能达成,仅仅是因为不同的文字系统在记录信息上的能力是等价的。进一步讲,文字只是信息的载体,而非信息本身。那么不用文字,而用其他的载体是否可以储存同样意义的信息呢?这个答案是肯定的,这也是现代通信的基础。当然,不同的文明进行交流时,或许会用不同的文字记载同一件事。这就有可能为我们破解无人能懂的语言提供一把钥匙。
今天,我们对 5000 年前埃及的了解远比对 1000 年前的玛雅文明要多得多,这要归功于埃及人通过文字记录了他们生活中最重要的信息。而对于我这个长期从事自然语言处理的学者来讲,这件事有两点指导意义。①信息的冗余是信息安全的保障;②语言的数据,我们称之为语料,尤其是双语或者多语的对照语料对翻译至关重要,它是我们从事机器翻译研究的基础。
这就涉及一个语言学研究方法的问题:到底是语言对,还是语法对。前者坚持从真实的语句文本(称为语料)出发,而后者坚持从规则出发。经过三四十年的争论,最后实践是检验真理的唯一标准,自然语言处理的成就最终宣布了前者的获胜。
他们过去遵循的法则和我们今天探求的研究方法背后有着共同的东西,这就是数学规律。
第 2 章 自然语言处理——从规则到统计
任何一种语言都是一种编码方式,而语言的语法规则是编解码的算法。我们把一个要表达的意思,通过某种语言的一句话表达出来,就是用这种语言的编码方式对头脑中的信息做了一次编码,编码的结果就是一串文字。而如果对方懂得这门语言,他或者她就可以用这门语言的解码方法获得说话人要表达的信息。这就是语言的数学本质。
今天,机器翻译和语音识别已经做得不错,并且有上亿人使用过,但是这个领域之外的大部分人依然错误地以为这两种应用是靠计算机理解了自然语言才实现的。事实上,它们全部靠的是数学,更准确地说是靠统计。
基于统计的自然语言处理方法,在数学模型上和通信是相通的,甚至就是相同的。因此,在数学意义上自然语言处理又和语言的初衷——通信联系在一起了。但是,科学家们用了几十年才认识到这个联系。
第 3 章 统计语言模型
数学的精彩之处就在于简单的模型可以干大事。
在数理统计中,我们之所以敢用对采样数据进行观察的结果来预测概率,是因为有大数定理在背后做支持,它的要求是有足够的观测值。
训练统计语言模型的艺术就在于解决好统计样本不足时的概率估计问题。
如果训练语料与模型应用的领域相脱节,那么模型的效果往往会大大折扣。
第 4 章 谈谈分词
在不少人看来,分词技术知识针对亚洲语言的,而罗马体系的拼音语言没有这个问题,其实不然。也许大家想不到,中文分词的方法也被应用到英语处理,主要是手写体识别中。因为在识别手写体时,单词之间的空格就不很清楚了。中文分词方法可以帮助判别英语单词的边界。
很难讲一个准确率在 97% 的分词器就一定比另一个准确率为 95% 的要好,因为这要看它们选用的所谓正确的人工分词的数据是如何得来的。我们甚至只能讲某个分词器和另一个分词器相比,与人工分词结果的吻合度稍微高一点而已。
在不同的应用中,会有一种颗粒度比另一种更好的情况。
总之,要继续做数据挖掘,不断完善复合词的词典(它的增长速度较快),这也是近年来中文分词工作的重点。
第 5 章 隐马尔可夫模型
自然语言是人类交流信息的工具,语言和通信的联系是天然的。通信的本质就是一个编解码和传输的过程。但是自然语言处理早期的努力都集中在语法、语义和知识表述上,离通信的原理越走越远,而这样离答案也就越来越远。当自然语言处理的问题回归到通信系统中的解码问题时,很多难题都迎刃而解了。
到了 19 世纪,概率论的发展从对(相对静态的)随机变量的研究发展到对随机变量的时间序列$s_{1},s_{2},s_{3},\ldots,s_{t},\ldots$,即随机过程(动态的)研究。在哲学的意义上,这是人类认识的一个飞跃。但是,随机过程要比随机变量复杂的多:①在任何一个时刻$t$,对应的状态$s_{t}$都是随机的;②任意状态$s_{t}$的取值都可能和周围其他的状态相关。
隐马尔可夫模型最初应用于通信领域,继而推广到语音和语言处理中,成为连接自然语言处理和通信的桥梁。同时,隐马尔可夫模型也是机器学习的主要工具之一。和几乎所有的机器学习的模型工具一样,它需要一个训练算法(鲍姆—韦尔奇算法)和使用时的解码算法(维特比算法),掌握了这两类算法,就基本上可以使用隐马尔可夫模型这个工具了。
第 6 章 信息的度量和作用
一条信息的信息量与其不确定性有着直接的关系。比如说,我们要搞清楚意见非常非常不确定的事,或是我们一无所知的事情,就需要了解大量的信息。相反,如果已对某件事了解较多,则不需要太多的信息就能把它搞清楚。所以,从这个角度看,可以认为,信息量就等于不确定性的多少。
对于任意一个随机变量$X$,它的信息熵(Entropy)定义如下:$H(X) = \sum_{x \in X}^{}{P(x)\log_{2}{P(x)}}$。变量的不确定性越大,熵也就越大,要把它搞清楚,所需信息量也就越大。
信息是消除系统不确定性的唯一办法。如果没有信息,任何公式或者数字的游戏都无法排除不确定性。
在数学上可以严格地证明为什么“相关的”信息也能够消除不确定性。为此,需要引入一个条件熵(Conditional Entropy)的概念。假定$X$和$Y$是两个随机变量,$X$是我们需要了解的。假定我们现在知道了$X$的随机分布$P(X)$,那也就知道了$X$的熵:$H(X) = \sum_{x \in X}^{}{P(x)\log_{2}{P(x)}}$,那么它的不确定性就是这么大。现在假定我们还知道$Y$的一些情况,包括它和$X$一起出现的概率(联合概率分布),以及在$Y$取不同值的前提下$X$的概率分布(条件概率分布),则定义在$Y$的条件下的条件熵为:$H\left( X \middle| Y \right) = \sum_{x \in X,y \in Y}^{}{P(x,y)\log_{2}{P(x|y)}}$。同理,可以定义有两个条件的条件熵为:$H\left( X \middle| Y,Z \right) = \sum_{x \in X,y \in Y,z \in Z}^{}{P(x,y,z)\log_{2}{P(x|y,z)}}$。
信息的作用在于消除不确定性,自然语言处理的大量问题就是寻找相关的信息。
香农在信息论中提出了一个“互信息”(Mutual Information)的概念作为两个随机事件“相关性”的量化度量。假定有两个随机事件$X$和$Y$,它们的互信息定义如下:$I(X;Y) = \sum_{x \in X,y \in Y}^{}{P(x,y)\log_{2}\frac{P(x,y)}{P(x)P(y)}}$。这个互信息$I(X;Y)$就是随机事件的不确定性或者说熵$H(X)$,以及在知道随机事件$Y$条件下的不确定性或者说条件熵$H(X|Y)$之间的差异,即$I(X;Y) = H(X) H(X|Y)$。
“相对熵”(Relative Entropy),在有些文献中它被称为“交叉熵”(Kullback-Leibler Divergence)。相对熵也用来衡量相关性,但和变量的互信息不同,它用来衡量两个取值为正数的函数的相似性,它的定义如下:$KL(f(x)|\left| g(x) \right) = \sum_{x \in X}^{}{f(x)\log_{2}\frac{f(x)}{g(x)}}$。结论:①对于两个完全相同的函数,它们的相对熵等于零;②相对熵越大,两个函数差异越大;③对于概率分布或者概率密度函数,如果取值均大于零,相对熵可以度量两个随机分布的差异性。
第 7 章 贾里尼克和现代语言处理
在当今物欲横流的社会,学术界浮躁,年轻人焦虑,少数有着远大志向的年轻人实际上是非常孤独的。
每当弗莱德和我谈起各自少年时的教育,我们都同意这样几个观点:①小学生和中学生其实没有必要花那么多时间读书,而他们的社会经验、生活能力以及在那树立起的志向将帮助他们的一生。②中学阶段花很多时间比同伴多读的课程,上大学以后用很短时间就能读完,因为在大学阶段,人的理解力要强的多。举个例子,在中学需要花500个小时才能学会的内容,在大学可能花100个小时就够了。因此,一个学生在中小学阶段建立起的那一点点优势在大学很快就丧失殆尽。③学习(和教育)是持续一辈子的过程,很多中学成绩优秀的亚裔学生进入名校后表现明显不如那些出于兴趣而读书的美国同伴,因为前者持续学习的动力不足。④书本的内容可以早学,也可以晚学,但是错过了成长阶段却是无法补回来的。(因此,少年班的做法不足取。)现在中国的好学校里,恐怕99%的孩子在读书上花的时间都比我当时要多,更比贾里尼克要多得多,但是这些孩子今天可能有99%在学术上的建树不如我,更不如贾里尼克。这实在是教育的误区。
我一直认为,一个人想要在自己的领域里做到世界一流,他的周围必须有非常多的一流人物。贾里尼克的幸运之处在于年轻时就得到了这些大师的指点,以后在研究境界上比同龄人高出了一筹。
贾里尼克教授在学术上给我最大的帮助就是提高了我在学术上的境界。他告诉我最多的是:什么方法不好。
第 8 章 简单之美——布尔代数和搜索引擎
技术分为术和道两种,具体的做事方法是术,做事的原理和原则是道。很多具体的搜索技术很快会从独门绝技到普及,再到落伍,追求术的人一辈子工作很辛苦。只有掌握了搜索的本质和精髓才能永远游刃有余。
数学的发展实际上是不断地抽象和概括的过程,这些抽象了的方法看似离生活越来越远,但是它们最终能找到适用的地方,布尔代数便是如此。
第 9 章 图论和网络爬虫
有了超链接,我们可以从任何一个网页出发,用图的遍历算法,自动地访问到每一个网页并把它们存起来。完成这个功能的程序叫作网络爬虫(Web Crawlers),有些文献也称之为“机器人”(Robot)。
在网络爬虫中,人们使用一种“哈希表”(Hash Table,也叫作“散列表”)而不是一个记事本记录网页是否下载过的信息。
很多数学方法就是这样,看上去没有什么实际用途,但是随着时间的推移会突然派上大用场。这恐怕是世界上还有很多人毕生研究数学的原因。
第 10 章 PageRank——Google 的民主表决式网页排名技术
今天,任何商业的搜索引擎,十条结果都有七八条是相关的了,而且决定搜索质量最有用的信息是用户的点击数据,相反,一项新的技术为搜索质量带来的提升空间却非常有限,用户很难感觉到差别。这也是后来微软等公司很难在搜索上有所作为的原因。
第 11 章 如何确定网页和查询的相关性
2007年我为Google黑板报写这一节时,技术和算法的重要性依然高于数据,因此确定网页和查询的相关性主要依靠算法。但是今天,由于商业搜索引擎已经有了大量的用户点击数据,因此,对搜索相关性贡献最大的是根据用户对常见搜索点击网页的结果得到的概率模型。如今,影响搜索引擎质量的诸多因素,除了用户的点击数据之外,都可以归纳成下面四大类:①完备的索引;②对网页质量的度量,比如PageRank;③用户偏好;④确定一个网页和某个查询的相关性的方法。
概括地讲,假定一个关键词$w$在$D_{w}$个网页中出现过,那么$D_{w}$越大,$w$的权重越小,反之亦然。在信息检索中,使用最多的权重是“逆文本频率指数”(Inverse Document Frequency,缩写为IDF),它的公式为$\log_{2}\frac{D}{D_{w}}$,其中$D$是全部网页数。
其实,信息论学者们已经发现并指出,所谓IDF的概念就是一个特定条件下关键词的概率分布的交叉熵(Kullback-Leibler Divergence)。这样,关于信息检索相关性的度量,又回到了信息论。
第 12 章 有限状态机和动态规划——地图与本地搜索的核心技术
智能手机的定位和导航功能,其实只有三项关键技术:①利用卫星定位;②地址的识别;③根据用户输入的起点和终点,在地图上规划最短路线或者最快路线。
所有的导航系统都采用了动态规划(Dynamic Programming,DP)的办法,这里面的Programming一词在数学上的含义是“规划”,不是计算机里的“编程”。动态规划的原理其实很简单。以上面的问题为例,当我们要找从北京到广州的最短路线,先不妨倒过来想这个问题:假如已经找到了所要的最短路线(称为路线一),如果它经过郑州,那么从北京到郑州的这条子路线(比如是北京→保定→石家庄→郑州,暂定为子路线一),必然也是所有从北京到郑州的路线中最短的。否则,可以假定还存在从北京到郑州更短的路线(比如北京→济南→徐州→郑州,暂定为子路线二),那么只要用这第二条子路线代替第一条,就可以找到一条从北京到广州全程更短的路线(称为路线二),这就和我们讲的路线一是北京到广州最短的路线相矛盾。其矛盾的根源在于,假设的子路线二或者不存在,或者比子路线一还来的长。
正确的数学模型可以将一个计算量看似很大的问题的计算复杂度大大降低。这便是数学的妙用。
第 13 章 Google AK-47 的设计者——阿米特•辛格博士
我认为,在计算机科学领域,一个好的算法,应该像AK-47冲锋那样:简单、有效、可靠性好而且容易读懂(或者说易操作),而不应该是故弄玄虚。
辛格这种事情的哲学,即先帮助用户解决80%的问题,再慢慢解决剩下的20%问题,是在工业界成功的秘诀之一。许多失败并不是因为人不优秀,而是做事情的方法不对,一开始追求大而全的解决方案,之后长时间不能完成,最后不了了之。
第 14 章 余弦定理和新闻的分类
从这件事我们可以看出美国人做事的一个习惯:美国人总是倾向于用机器(计算机)代替人工来完成任务。虽然在短期内需要做一些额外的工作,但是从长远看可以节省很多时间和成本。
需要特别指出的是,删除虚词,不仅可以提高计算速度,对新闻分类的准确性也大有好处,因为虚词的权重其实是一种噪声,干扰分类的正常进行。这一点与通信中过滤掉低频噪声是同样的原理。通过这件事,我们可以看出自然语言处理和通信的很多道理是相通的。
第 15 章 矩阵运算和文本处理中的两个分类问题
新闻分类乃至各种分类其实是一个聚类问题,关键是计算两篇新闻的相似程度。为了完成这个过程,我们要将新闻变成代表它们内容的实词,然后再变成一组数,具体说是向量,最后求这两个向量的夹角。当这两个向量的夹角很小时,新闻就相关;当两者垂直或者说正交时,新闻则无关。从理论上讲,这种算法非常漂亮。
第 16 章 信息指纹及其应用
任何一段信息(包括文字、语音、视频、图片等),都可以对应一个不太长的随机数,作为区别这段信息和其他信息的指纹(Fingerprint)。只要算法设计得好,任意两段信息的指纹都很难重复,就如同人类的指纹一样。信息指纹在加密、信息压缩和处理中有着广泛的应用。
信息指纹的用途远不止网址的消重,它的孪生兄弟是密码。信息指纹的一个特征是其不可逆性,也就是说,无法根据信息指纹推出原有信息。这种性质,正是网络加密传输所需要的。
加密的可靠性,取决于是否很难人为地找到具有同一指纹的信息,比如一个黑客能否产生出某位用户的cookie。
一般来说,每一秒或者若干秒才有一帧是完整的图像,这些帧称为关键帧。其余帧储存的只是和关键帧相比的差异值。关键帧对于视频的重要性,就如同主题词对于新闻的重要性一样。因此,处理视频图像首先是找到关键帧,接下来就是要用一组信息指纹来表示这些关键帧了。
第 17 章 由电视剧《暗算》所想到的——谈谈密码学的数学原理
当然,学过信息论的人都知道,只要多截获一些情报(即使是加密的),统计一下字母的频率,就可以破解出这种密码。
好的密码必须做到根据已知的明文和密文的对应推断不出新的密文内容。从数学的角度上讲,加密的过程可以看作是一个函数的运算$F$,解密的过程是反函数的运算。明码是自变量,密码是函数值。好的(加密)函数不应该通过几个自变量和函数值就能推出函数。
信息论的提出为密码学的发展带来了新气象。根据信息论,密码的最高境界是敌方在截获密码后,对我方的所知没有任何增加,用信息论的专业术语讲,就是信息量没有增加。一般来讲,当密码之间分布均匀并且统计独立时,提供的信息最少。
首先要声明,世界上没有永远破不了的密码,关键是它能有多长时间的有效期。
我们在介绍信息论中谈到,利用信息可以消除一个系统的不确定性。而利用已经获得的信息情报来消除一个情报系统更多不确定性就是解密。密码系统具体的设计方法属于术的范畴,可以有很多,今后还会不断发展。但是,密码学的最高境界依然是无论敌方获取多少密文,也无法消除己方情报系统的不确定性。为了达到这个目的,就不仅要做到密文之间相互无关,同时密文还是看似完全随机的序列。这个思想,则是学术研究的道。在信息论诞生后,科学家们沿着这个思路设计出很好的密码系统,而公开密钥是目前最常用的加密办法。
第 18 章 闪光的不一定是金子——谈谈搜索引擎反作弊问题和搜索结果的权威性问题
针对搜索引擎的作弊,虽然方法很多,目的只有一个,就是采用不正当手段提高自己网页的排名。
做事情的方法有道和术两种境界,搜索反作弊也是如此。在“术”这个层面的方法大多是看到作弊的例子,分析并清除之,这种方法能解决问题,而且不需要太动脑筋,但是工作量较大,难以从个别现象上升到普遍规律。很多崇尚“人工”的搜索引擎公司喜欢这样的方法。而在“道”这个层面解决反作弊的问题,就是要透过具体的作弊例子,找到作弊的动机和本质。进而从本质上解决问题。
作弊的本质是在网页排名信号中加入了噪声,因此反作弊的关键是去噪声。沿着这个思路可以从根本上提高搜索算法抗作弊的能力,事半功倍。而如果只是根据作弊的具体特征头痛医头,脚痛医脚,则很容易被作弊者牵着鼻子走。
第 19 章 谈谈数学模型的重要性
真正创立了我们今天意义上的天文学,并且计算出诸多天体运行轨迹的是近两千年前古希腊时代的克劳第斯·托勒密。虽然今天我们可能会嘲笑托勒密犯的简单错误,比如太阳是围绕地球旋转的,但是真正了解托勒密贡献的人都会对他肃然起敬。
讲座结束时,我给Google中国和腾讯的工程师们总结过以下几点结论:①一个正确的数学模型应当在形式上是简单的;②一个正确的模型一开始可能还不如一个精雕细琢过的错误模型来的准确,但是,如果我们认定大方向是对的,就应该坚持下去;③大量准确的数据对研发很重要;④正确的模型也可能受噪声干扰,而显得不准确;这时不应该用一种凑合的修正方法加以弥补,而是要找到噪声的根源,这也许能通往重大的发现。
第 20 章 不要把鸡蛋放到一个篮子里——谈谈最大熵模型
“最大熵”这个名词听起来很深奥,但它的原理很简单,我们每天都在用。说白了,就是要保留全部的不确定性,将风险降到最小。
最大熵原理指出,对一个随机事件的概率分布进行预测时,我们的预测应当满足全部已知的条件,而对未知的情况不要做任何主观假设。(不做主观假设这点很重要。)在这种情况下,概率分布最均匀,预测的风险最小。因为这时概率分布的信息熵最大,所以人们把这种模型叫作“最大熵模型”。我们常说,不要把所有的鸡蛋放在一个篮子里,其实就是最大熵原理的一个朴素的说法,因为当我们遇到不确定性时,就要保留各种可能性。
最大熵模型在形式上是最漂亮、最完美的统计模型,在自然语言处理和金融方面有很多有趣的应用。
第 21 章 拼音输入法的数学原理
输入法输入汉字的快慢取决于汉字编码的平均长度,通俗点儿讲,就是用击键次数乘以寻找这个键所需时间。
一个好的输入法不能要求用户读准每个字的发音,就如同一架普通相机不应该要求使用者精通光圈和快门速度的设置。
只要承认概率论,就无法否认语言模型可以保证拼音转汉字(解决一音多字问题)的效果最好。
第 22 章 自然语言处理的教父马库斯和他的优秀弟子们
过去20年里,在机器学习和自然语言处理领域,80%的成果来自于数据量的增加。
马库斯的主张一贯是建立几个世界上最好的专业,而不是专业最齐全的系。我觉得,当今中国的大学,最需要的就是马库斯这样卓有远见的管理者。
第 23 章 布隆过滤器
布隆过滤器背后的数学原理在于两个完全随机的数字相冲突的概率很小,因此,可以在很小的误识别率条件下,用很少的空间储存大量信息。补救误识别的常见办法是再建立一个小的白名单,存储那些可能被别误判的信息。
第 24 章 马尔可夫链的扩展——贝叶斯网络
由于网络的每个弧都有一个可信度,贝叶斯网络也被称作信念网络(Belief Networks)。
可以讲,马尔可夫链是贝叶斯网络的特例,而贝叶斯网络是马尔可夫链的推广。
使用贝叶斯网络必须先确定这个网络的拓扑结构,然后还要知道各个形态之间相关的概率。得到拓扑结构和这些参数的过程分别叫作结构训练和参数训练,统称训练。
第 25 章 条件随机场、文法分析及其他
第 26 章 维比特和他的维比特算法
更重要的是,维比特算法是和长度成正比的。无论是在通信中,还是在语音识别、打字中,输入都是按照流(Stream)的方式进行的,只要处理每个状态的时间比讲话或者打字速度快(这点很容易做到),那么不论输入有多长,解码过程永远是实时的。这便是数学漂亮的地方!
世界上绝大多数科学家最大的满足就是自己的研究成果得到同行的认可,如果能有应用就更是喜出望外了。而能够亲自将这些成就应用到实际中的人少之又少,因为做到这一点对科学家来讲很不容易。
第 27 章 上帝的算法——期望最大值算法
首先要明确一点,就是我们的距离函数足够好,它能保证同一类相对距离较近,而不同类的相对距离较远。我们希望最终的分类结果是:相近的点都被聚集到了一类中,这样同一类中各个点到中心的平均距离$d$较近,而不同类中心之间的平均距离$D$较远。我们希望的迭代过程是每一次迭代时,$d$比以前变小,而$D$变大。
在一般性的问题中,如果有非常多的观测数据(点),可用类似上面的方法,让计算机不断迭代来学习一个模型。首先,根据现有的模型,计算各个观测数据输入到模型中的计算结果,这个过程称为期望值计算过程(Expectation),或者E过程;接下来,重新计算模型参数,以最大化期望值。在上面的例子中,我们最大化$D$和$d$,这个过程成为最大化的过程(Maximization),或许M过程。这一列算法都成为EM算法。
EM算法只需要有一些训练数据,定义一个最大化函数,剩下的事情就交给计算机了。经过若干次迭代,我们需要的模型就训练好了。这实在是太美妙了,这也许是造物主刻意安排的,所以我把它称作上帝的算法。
第 28 章 逻辑回归和搜索广告
逻辑回归模型是指将一个事件出现的概率逐渐适应到一条逻辑曲线(Logistic Curve,其值域在(0,1))上。逻辑曲线是一条S形曲线,特点是一开始变化快,逐渐减慢,最后饱和。
第 29 章 各个击破算法和 Google 云计算的基础
云计算的关键之一是,如何把一个非常大的计算问题,自动分解到许多计算能力不是很强大的计算机上,共同完成。
分治(Divide-and-Conquer)算法是计算机科学中最漂亮的工具之一。它的基本原理是:将一个复杂的问题,分成若干个简单的子问题进行解决。然后,对子问题的结果进行合并,得到原有问题的解。
由此可见,在生活中大量用到的、真正有用的方法往往简单而又朴实。
第 30 章 Google 大脑和人工神经网络
首先,我没有遇到过一两小时给我讲懂的好心人,其次,我遇到了一批在我面前卖弄的人,作为年轻人,总是希望把自己不明白的东西搞懂,于是我决定去旁听一门课。
这么简单的东西有什么用呢?我在给学生们讲课时,大部分学生一开始也有同样的疑惑。但是,就是这样一个简单的模型,用处却很大,因为无论是在计算机科学、通信、生物统计和医学,还是在金融和经济学(包括股市预测)中,大多数与“智能”有点关系的问题,都可以归结为一个在多维空间进行模式分类的问题。而上面这种人工神经网络所擅长的正是模式分类。
说到这里,大家可能要问,计算每个节点数值的函数时候如何选取的?显然,如果允许这些函数随便选取,设计出来的分类器可以非常灵活,但是这样一来,相应的人工神经网络就缺少了通用性,而且这些函数的参数也很难训练。因此,在人工神经网络中,规定神经元函数只能对输入变量(指向它的节点的值)线性组合后的结果进行一次非线性变换。
假设$C$为一个成本函数(Cost Function),它表示根据人工神经网络得到的输出值(分类结果)和实际训练中数据的输出值之间的差距,比如可以定义$C = \sum_{}^{}{(y(w) y)}^{2}$(即欧几里得距离),我们训练的目标就是找到参数$\widehat{W}$,使得$\widehat{W} = {ArgMin}{w}\sum{}^{}{(y(w) y)}^{2}$。现在,训练人工神经网络的问题就变成了一个最优的问题,说的通俗点就是我们中学数学里“找最大(或最小值)”的问题。解决最优化问题的常用方法是梯度下降法(Gradient Descent)。这里就不介绍这个算法的细节了,不过可以打个比方说明其中的道理。我们不妨把寻找最大值的问题看成是爬山,爬到山顶就相当于找到了极大值(当然,下到了谷底就相当于找到了极小值)。那么怎样才能最快爬到山顶呢?梯度下降法讲的是,每次向着最“陡”的方向走一步,这样能保证最快地走到山顶。
了解到人工神经网络和贝叶斯网络的异同,你会发现很多机器学习的数学工具其实是一通百通,并且可以根据实际问题找到最方便的工具。
从20世纪90年代至今,计算能力的提升一半是靠处理器性能的提升,另一半则是靠很多处理器并行工作体现出来的,因此过去训练人工神经网络的办法就必须改变,以适应云计算的要求。
Google大脑并不是一个什么都能思考的大脑,而是一个很能计算的人工神经网络。与其说Google大脑很聪明,不如说它很能算。不过,换个角度来说,随着计算能力的不断提高,计算量大但简单的数学方法有时能够解决很复杂的问题。
第 31 章 区块链的数学基础——椭圆曲线加密原理
钱的诱惑比任何宣传都有用,那些没有从比特币中挣到钱的人于是马上开始学习它背后的技术——区块链技术,随后发行各种各样的“虚拟货币”来圈钱。
很多人问我哪些“虚拟货币”前景如何,坦率地说,我对此不是很关心。但是,和很多人一样,我对其底层技术——区块链却非常看好。为什么呢,因为它有很多其他技术难以实现的用途,比如说能从根本上解决信息安全的问题,支持合约的自动执行。
在完全开放信息的社会里,彻底保护信息安全几乎是天方夜谭。要想保护私有信息,特别是隐私,必须有一套不对称的机制,做到在特定授权的情况下,不需要拥有信息也能使用信息;在不授予访问信息的权限时,也能验证信息。而比特币的意义就在于,它证实了利用区块链能够做到上述两件事。
区块链为它提供了一个新的应用场景,就是用一把密钥对信息加密后,让拿到解密钥匙(公钥)的人只能验证信息的真伪,而看不到信息本身。这就利用信息的不对称性保护了我们的隐私,因为大部分信息的使用者只需要验证信息,不需要拥有信息。比如我们在核实身份时便是如此。
椭圆曲线其实和椭圆没有什么关系,它是具有如下性质的一组曲线:$y^{2} = x^{3} + ax + b$。
在实现区块链加密时,采用了非常简单的椭圆曲线。数学家和计算机科学家能想到通过在一条椭圆曲线上一次次求交点,来发明一种简单而漂亮的加密算法,可谓是匠心独运。当然,区块链的发明人利用这种加密方法,又发明了一整套信息验证机制,也是神来之笔。
第 32 章 大数据的威力——谈谈数据的重要性
数据的重要性不仅体现在科学研究中,而且渗透到了我们社会生活的方方面面。在Google内部,产品经理们都遵循这样一个规则:在没有数据之前,不要给出任何结论。因为日常的很多感觉与数据给出的结论是相反的,如果不用数据说话,我们成功的概率就会小很多。
没有数据支持的决策常常不准确,而且个别成功案例的影响在人们心中会被放大,而风险则被缩小。
股市在某种程度上是一个零和的游戏,证监会官员、交易所雇员的工资和各种奢侈的办公条件,其实都是羊毛出在羊身上,而基金经理开的豪车、住的豪宅都是投资人的钱。因此,如果一个散户投资人能真正做到“用数据说话”,只需奉行一条投资决策,那就是买指数基金。这当然不是我的发明,而是投资领域著名的经济学家威廉·夏普(William F.Sharpe)和伯顿·麦吉尔(Burton G.Malkiel)等人一直倡导的。
除了要求数据量必须足够多,统计还要求采样的数据具有代表性。有些时候不是数据量足够大,统计结果就一定准确。统计所使用的数据必须与想要统计的目标相一致。
今天所有的搜索引擎,不论是服务于全球的Google和Bing,还是在中国的百度,甚至是搜搜和搜狗,对常见的查询,结果都不差。各家搜索引擎的差异仅仅在于那些不常见的查询,而提高这些搜索查询质量实际上靠的是大量的数据。因此,数据成为决定搜索引擎好坏的第一要素,而算法倒在其次了。
如此一来,在搜索行业就形成一种马太效应,即搜索量不足的搜索引擎因为用户点击数据量的不足,搜索质量会越变越差;相反,质量好的搜索引擎会因为数据量大而越变越好。
大数据更重要的是在于它的多维度和完备性,有了这两点才能将原本看似无关的事件联系起来,恢复出对事物全方位完整的描述。
在未来的世界里,人们的生活会越来越离不开数据,很多围绕数据收集和处理的工作机会将不断涌现。而掌握处理和利用数据方法的人也必将成为新时代的成功者。推而广之,无论在什么领域,从事什么样的工作,谁懂得数据的重要性,谁会在工作中善用数据,就更有可能获得成功。
第 33 章 随机性带来的好处——量子密钥分发的数学原理
数据泄露无外乎有两种可能:在数据存储的地方被盗取,或者在数据传输的过程中被截获。要解决这个问题,最好的办法就是对数据进行加密。当然,理论上目前使用的所有加密算法都有可能被破解,只不过是时间问题。那么是否存在一种无法破解的密码呢?其实信息论的发明人香农早就指出了,一次性密码从理论上讲永远是安全的。但是要想在通信中使用这种密码,必须解决一个根本性的问题,就是如何让信息的发送方和接收方同时得到这一次性的密码。如果是由发送方传给接收方,密码的传输本身就有可能泄密,加密也就无从谈起了。近年来非常热门的量子通信,便是试图实现加密密钥的安全传输,确保保密通信不被破解。
量子通信并不是像很多媒体曲解的那样——靠量子纠缠实现通信,而是靠光量子的偏振特征承载信息,靠数学和信息论的基本原理保证它的保密性。在数学上,我们从中看到了不确定性带来的好处,它通过测定误码率来判断在密码分发的过程中是否泄密。这种方法把加密这种看似“阴谋”的事情变成了“阳谋”。在信息论方面,香农关于一次性密码永远是安全的想法,给人们指引了一个方向,循此,人们可以去寻找比现在公开密钥方式更安全的加密方法。
第34章 数学的极限——希尔伯特第十问题和机器智能的极限
今天,当计算机解决了越来越多的智能问题之后,人们对人工智能的态度从怀疑渐渐走向迷信。不了解人工智能背后技术的人开始凭着幻想猜测计算机的能力,即便是一些从业者也是糊里糊涂,完全忘却了计算机的能力有数学上的边界。这一边界,就如同物理学上无法超越的光速极限或绝对零度的极限一样,在最根本的层面上控制了人工智能的能力,这一边界与技术无关,仅取决于数学本身的限制。具体到今天大家使用的计算机,它有着两条不可逾越的边界,分别是由图灵和希尔伯特划定的。
神人自然有超越常人的地方,比如他们会从本源出发思考问题,他们如同站在宇宙之外,把全部问题的边界想得很清楚,而常人则是从具体问题出发,一点点地解决越来越复杂的问题。
大部分人的思维方式都是所谓的脚步累加,一点点进步,很难看清大的格局。
图灵是怎么给计算机划定边界的呢?这就要回溯到20世纪30年代中期,图灵对可计算这件事的思考。图灵思考了三个本源问题:①世界上是否所有的数学问题都有明确的答案;②如果一个问题有答案,能否通过有限步的计算得到答案,反过来,如果一个问题没有答案,能够通过有限步的推演证实这件事;③对于那些可以在有限步计算出来的数学问题,能否有一种机器,让它不断运转,最后当机器停下来的时候,那个数学问题就解决了。
图灵在思考可计算性问题时,读过冯·诺依曼写的一本介绍量子力学的专注《量子力学的数学原理》(Mathematical Foundations of Quantum Mechanics),并从中受到启发,认识到计算对应于确定性的机械运动,而人的意识则可能来自于测不准原理。图灵对于计算所具有的这种确定性的认识很重要,它保证了今天的计算机在同样条件下计算出来的结果是可重复的。当然,关于人的意识,图灵认为是不确定的,不属于计算的范畴。如果真是像图灵想的那样,那么宇宙本身就存在着大量数学问题之外的问题。事实上,与图灵同时代的数学家哥德尔在1930年便证明了数学不可能既是完备的,又是一致的,也就是说,一些命题即使是对的,我们也无法用数学证明它们。这被称为哥德尔不完全性定理,它说明数学的方法不是万能的。
希尔伯特第十问题讲的是:“任意一个(多项式)不定方程,能否通过有限步的运算,判定它是否存在整数解。”今天对这个问题结论的表述,也被成为马蒂亚塞维奇定理。马蒂亚塞维奇严格地证明了,除了极少数特例,在一般情况下,无法通过有限步的运算,判定一个不定方程是否存在整数解。第十问题的解决,对人类在认知上的冲击,远比它在数学上的影响还要大,因为它向世人宣告了很多问题我们无从得知是否有解。如果连是否有解都不知道,就更不可能通过计算来解决它们了。更重要的是,这种无法判定是否有解的问题,要远比有答案的问题多得多。
在计算机科学领域,人们就把能够用图灵机计算的问题成为可计算的问题。
今天,我们所要担心的不是人工智能或计算机有多么强大,更不应觉得它们无所不能,因为它们的边界已经清清楚楚地由数学的边界划定了。我们今天所遇到的问题反而是不知道怎样将一些应用场景转化为计算机能够解决的数学问题。整本《数学之美》,其实讲的都是这件事。
知道边界在哪里不是我们的厄运,而是福气,因为我们可以集中精力在边界内解决问题,而不是把精力耗费在寻找边界之外可能并不存在的答案。
附录 计算复杂度
将解决实际问题的办法变成计算机可以运行的程序,中间的桥梁就是计算机的算法。一个优秀的计算机科学家与平庸的程序员的差别就在于:前者总是不断寻找并且有能力找到好的算法,而后者仅常常满足于勉强解决问题。而在所有的“好”算法中,显然存在一个最优的算法——找到它是从事计算机科学的人应该努力的目标。
寻找一个问题的计算机算法,首先要寻找多项式复杂度的算法。但是,对于那些至今找不到这样的算法而在应用中又无法回避的问题,比如贝叶斯网络的训练算法,我们只好简化问题找近似解了。
第三版后记
世界上最好的学者总是有办法深入浅出地把大道理讲给外行听,而不是故弄玄虚地把简单问题复杂化。