关于作者
吴军,“得到”App专栏《吴军的谷歌方法论》的主理人。计算机科学家,硅谷投资人,著名自然语言处理专家和搜索专家。曾先后供职于谷歌和腾讯,是谷歌中日韩文搜索算法的主要设计者。吴军还是一位畅销书作家,除了这本《数学之美》以外,他还写过畅销书《文明之光》、《智能时代》、《浪潮之巅》、《硅谷之谜》。
关于本书
对于我们大多数人来说,日常生活中可能不会用到太多数学知识,但这并不代表着数学就不重要。实际上,这个世界属于自然科学范畴的各种知识,它们的底层逻辑几乎都离不开数学。在本书里,吴军从他的亲身经历出发,为我们介绍了数学的实际应用及其重要性,同时也告诉我们,数学之美其实就是一种简单美。
核心内容
在这个信息时代,数学在我们的日常生活中扮演着越来越重要的角色,而且这一角色具有不可替代性,因为数学是帮助人类认识世界、发现客观规律的一个重要工具,离开了数学,很多问题就会面临无法解决的困境。虽然数学实际应用起来可能比较复杂,但其背后所蕴含的思想却总是简单的,所以吴军认为数学之美就是一种简单美。
本期为你解读的书是《数学之美》,作者是“得到”App专栏《吴军的谷歌方法论》的主理人吴军。
我们每个人都是从小就开始学数学,但是除了少数学霸之外,多数人说起数学,恐怕都会觉得太难、太深奥。而且很多时候,似乎我们的工作也不需要那么多复杂的数学知识。或许你还会发出一个疑问:我并不以数学为生,那我真的需要理解数学吗?
不过有些事实我们无法回避,这个世界属于科学范畴的各种知识,它的底层逻辑,几乎都离不开数学。我们现代生活的方方面面,无论是现实的物质世界,还是虚拟的网络社会,都建立在一个用数学知识为基础的复杂结构里。
《数学之美》这本书最大的价值,是告诉我们,数学是以什么方式定义了我们的世界,数学思维的魅力究竟在哪里。你可以不懂那么多复杂的公式,但如果你理解了数学背后的思维方式,有了感知和理解这个世界的能力,就会进入一个新境界。
这里,我再简要介绍一下本书的作者吴军老师,他先后供职于谷歌和腾讯,是谷歌中日韩文搜索算法的主要设计者。他在谷歌期间领导参与了很多研发项目,擅长用数学的方法来解决通信、信息领域的实际问题,是著名的自然语言处理专家和搜索专家。李开复曾经这样评价这本书说,在吴军的笔下,数学不是我们一般联想到的枯燥深奥的符号,而是实实在在源于生活的有趣现象和延伸。这本书,是送给这个社会和年轻人最好的礼物。
好,接下来我就分三个重点,来给你讲讲这本书的主要内容。
第一,数学的用处都有什么?
第二,数学为什么这么有用?
第三,为什么说数学之美就是简单之美?
第一部分
我们先来看看第一个重点:数学的用处都有什么?
我们现在每天都离不开的手机和电脑,其实本质上也就是各种计算机,要想让它们辅助我们的生活工作,就避免不了让它们处理人类的文字和语言,比如语音文字转换、语言翻译等等,那你知道计算机处理人类的文字、语言背后的原理是什么吗?
其实在很早以前,人们就已经试着用数学来解决文字校验的问题了。我们知道,犹太人信仰犹太教,犹太教的经典是《圣经》中的《旧约》,里面记载着犹太人的历史。可是,《圣经》不是由一个人写成的,它的写作过程经历了好几个世纪,所以之后的作者在补充《圣经》时,就会面临一个问题,那就是怎么在抄写的过程中不出现错误?人的马虎总是难以避免,所以这本应该是一个难题。
但是聪明的犹太人发明了一种方法。他们在抄写《圣经》时,会把每一个希伯来字母对应一个数字,这样,每行或者每列文字加起来都对应一个数,这个数就是这一行或这一列的校验码。这样一来,抄完之后只要对比每行每列的校验码正不正确就行了,如果发现校验码有错,那通过行和列的校验码,也可以很快地定位到抄错的地方。这背后的原理,和我们今天的各种校验也是相同的。
那人类的自然语言该怎么处理呢?在这个问题上,人们曾经走过很多弯路。其实最开始的时候,科学家们按照仿生学的思路,坚持认为,要让计算机学会处理自然语言,就必须像人一样,先让它理解自然语言,让它学会语法。但是后来人们发现,语法规则实在太多,根本没有办法穷尽。因为我们日常用的自然语言其实很复杂,不同的语境,不同的上下文,不同的语序,都会产生完全不同的语义。根据计算,就算覆盖我们平时常用语言的20%,都要写几万条语法,这个工作量就已经是天文数字了。而且写到后面,还会有自相矛盾的语法,为了区分,还要注明什么环境下用什么语法,整个过程无比繁琐。所以让计算机学习语法这一条路,在上个世纪70年代就走到了尽头。
就在人们一筹莫展的时候,数学的威力显示了出来。数学的魅力就在于让复杂的问题简单化。美国著名的计算机科学家贾里尼克领导他的实验室,借助数学中的统计学工具,把当时语言识别的成功率从70%提升到90%,同时让语言识别的规模,从几千个单词上升到几万个单词,让语言识别有了实际应用的可能。听到这儿你可能很疑惑,统计学和自然语言好像没什么关系,它怎么处理自然语言呢?其实贾里尼克的思路很简单,他认为,要判断一个句子正不正确,就要看这个句子出现的可能性的大小,这个可能性用概率来衡量。比如,我们假定第一个句子出现的概率是二分之一,第二个句子出现的概率是千分之一,那第一个句子出现的可能性就比第二个句子大得多,那么从概率的角度来说,第一个句子就更有可能是正确的。
所以接下来我们需要做的事,就是判断一个句子出现的可能性有多大。这时就需要用到“马尔科夫假设”,这个假设是说,假定一个句子里每个词出现的概率,只和前一个词有关,就好比“涨停”这个词,最有可能出现在“股票”这个词之后。那么,只要给计算机量足够大的机读文本,也就是专业人士说的语料库,计算机就能算出来,在一个特定词后面出现某个词的概率。这样,只要把一句话里所有词出现的概率相乘,就是这个句子出现的概率。概率最大的句子,就是最有可能正确的句子。按照这个思路,科学家们成功地让计算机拥有了处理自然语言的能力。
你看,一个用几万条复杂语法解决不了的问题,用数学工具就轻松地解决了,而且效果还要好得多。那除了自然语言,我们今天用手机、用电脑,最常做的一个动作之一就是“搜索”。很多人喜欢点网站上的分类标签,看自己特别感兴趣的新闻。那计算机是怎么给这些新闻分类的呢?这背后的原理也就是数学。这就是我们最开始举的那个例子:余弦定理能帮助新闻网站进行新闻分类。
余弦定理大家中学都学过,你可能忘了,我来跟你复习一下啊。它是一个揭示三角形边角关系的重要数学定理,使用余弦定理,就可以仅凭三角形两个边的向量,计算出这两个边的夹角。向量就是有特定长度和方向的量,可以表示为带箭头的线段。
具体该怎么做呢?一篇新闻里会有很多词,像“之乎者也的”这种虚词,对判断新闻的分类没有太大的意义。而像“股票”“利息”这种实词,是判断新闻分类的重点词。科学家精选了一个词汇表,这里面收录着64000个词,每个词都对应一个编号。他们先把大量文字数据输入计算机,算出每个词出现的次数。
一般来说,出现次数越少的词越有搜索价值,比如“爱因斯坦”“数学之美”;而出现次数越多的词,越没有搜索价值,比如“一个”“这里”等等。根据这个标准,把词汇表里的64000个词都算出各自的权重,越特殊的词权重越大。然后,再往计算机里输入要分类的新闻,计算出这64000个词在这篇新闻里的分布,如果某些词没有在这篇新闻里出现,对应的值就是零,如果出现,对应的值就是这个词的权重。这样,这64000个数,就构成了一个64000维的向量,我们就用这个向量来代表这篇新闻,把它叫做这篇新闻的特征向量。
不同类型的新闻,用词上有不同的特点,比如金融类新闻就经常出现“股票”“银行”这些词,所以不难判断,同类新闻的特征向量会有相似性。这样的话,只要算出不同新闻特征向量之间夹角的大小,就可以判断出它们是不是同一类新闻。这时就要用到余弦定理,来把两则新闻的特征向量之间的夹角算出来。科学家可以人工设定一个值,只要两个向量之间的夹角小于这个值,这两则新闻就可以判定成同一类新闻。你看,一个简单的数学定理,通过科学家们的巧妙应用,再次举重若轻地解决了一个难题。
来给你总结一下这部分的内容。科学家们使用了统计学的方法,用概率的大小判断一个句子的正确性,从而让计算机获得了处理自然语言的能力。而在新闻分类领域里,科学家们用到了余弦定理,来判断新闻的特征向量之间的夹角,从而让计算机能够确定新闻的类别。
那咱们来回答一下这个部分的问题“数学的用处都有什么”。吴军在书中说技术分为“道”和“术”两种,做事的原理和原则是“道”,而做事的具体方法就是“术”。我觉得数学真正的作用,就是让我们掌握“道”。因为从历史的发展来看,所有的“术”都会从独门秘籍到普及再到落伍,就像吴军说的只有掌握了“道”的人才能永远游刃有余。
第二部分
说完了数学的作用,可能有人还是觉得不太服气:没错,数学有时候确实有用,但是人类也不是离不开数学,我不懂数学也可以凭经验来认识世界,来解决问题。有这种观点的人可能不在少数,但吴军在书里告诉我们,很多问题光靠经验累积是没办法解决的,必须要有数学的帮助才能得到答案,这是为什么呢?第二个重点我就给你说说:数学为什么这么有用?
和经验相比,数学能帮助我们的,就是能让我们找到一个正确的数学模型。这有多重要呢?吴军说,只有正确的数学模型,才能把一个大问题的计算复杂度降低,让它变得简单。而经验给我们的模型,常常是错的,那由它总结出来的结论,也就是错的。
比如人类从古时候起,就想弄清楚天上星星的运动规律,因为我们身处地球之上,所以古人们最开始很自然地把地球当成了宇宙的中心。其他的星体,不管是太阳、月亮还是金木水火土这几大行星,在古人的眼里都在围绕地球旋转。这种基本认知就是我们今天常说的“地心说”。但是实际上,除了月亮以外,其他所有星体实际上并不是绕着地球转的,所以这些星体的运动规律,在地球上看来就特别复杂。如果你读过《达芬奇密码》这本书就知道,金星大约每四年,会在天上画一个五角星。
这个轨迹就太复杂了,为了给星体找到一个符合观测经验的运动规律,古代科学家们找了很多方法,其中,最有名的来自古罗马天文学家托勒密。托勒密为了完善地心说,设计了一种大圆套小圆的运动方式,极为精确地计算出了所有行星的运动轨迹。不过这个模型相当复杂,他的这套理论一共用到了40到60个圆形,大圆里面套小圆,你想想,就算今天有了计算机的帮助,我们都很难解出40个套在一起的圆方程。
你看行星的轨迹运行得这么复杂,就是因为数学模型找错了的原因。托勒密的模型就算再精密,再符合当时人们的经验判断,也不能说是正确的数学模型。后来,波兰天文学家哥白尼提出了日心说,德国天文学家开普勒在他的基础上,偶然发现,原来行星绕太阳转不需要大圆套小圆,一个椭圆方程就搞定了。他还通过这个数学模型,总结出了行星围绕恒星运转的开普勒三定律,把星体的运动规律解释得清清楚楚。
而且这个正确的数学模型,还在后来成功地帮科学家找到了海王星。当时法国天文学家布瓦尔发现,天王星的运行轨道和椭圆模型算出来的不太一样。后来科学家直接用数学工具,计算出了吸引天王星偏离轨道的海王星。你看这种未观测先发现的成果,是不可能光凭日常经验得到的。有些由经验带来的先入为主的观念,还会严重阻碍人们对世界本来面目的认识过程。
其实,历史对人类在这方面的教训真不少,吴军还说了一个和我们生活息息相关的例子。有二十年以上打字经历的朋友可能都知道,原来在电脑上打字可是一个技术活儿。当时比较流行的输入法有五笔输入法、双拼输入法、还有全拼输入法,等等。可是到了今天,使用双拼和五笔输入法的人越来越少,而使用全拼的人越来越多,这是为什么呢?
这还是要从人们的固有经验说起。人们一开始总以为,最好的汉字输入法就是最简单的输入法,平均打一个字敲击的键盘次数越少,那这个输入法就越好,但历史又一次证明,这种经验上的直觉并不可靠。比如拼音输入法中的双拼和全拼,在双拼输入法中,每个声母和韵母都只用一个键表示,而全拼输入法则要求打出整个拼音。
比如“ao”这个韵母,在双拼中只需要按“k”这个键,而全拼则需要按“a”和“o”两个键。所以双拼敲击键盘的次数会天然地比全拼短,看起来更高效一些。但吴军说,双拼法看似减少了敲击键盘的次数,但输入一点也不快。为什么呢?因为汉语的声母韵母加起来一共有50多个,但是键盘上只有26个字母键,所以很多韵母就需要共享一个字母键,这就会导致,打字的人要从更多的候选汉字里找到自己想打的字;而且双拼的方法不自然,比全拼多出来一道拆分声母和韵母的过程,你需要背下来哪个韵母是哪个按键;最后,很多南方人分不清前后鼻音和卷平舌音,结果就导致翻了好几页都找不到自己想打的字,其实原因是一开始就打错了声母或者韵母。
这一系列问题都证明,追求更简单高效的双拼输入法,实际效率并不高,五笔输入法也是类似的情况。上世纪90年代时,中国出现的输入法种类一度多达上千种,但这些输入法大多和双拼一样,都把发力点放在了减少敲击次数上,都强调自己是最快的。这个方向就走偏了,到了现在,人们几乎全都抛弃了这些输入法,这一批发明人可以说是全军覆没。
与此同时,全拼输入法得到不断改进。所有汉字全拼的平均长度是2.98,只要能很好地利用上下文的相关性,就能把全拼输入法的平均敲击次数控制在3次以内。那该怎么利用上下文的相关性呢?这里又有人绕过弯路。10年前,人们就是通过不断增加词库,甚至把一整句唐诗当成一个词来解决这个问题。但是统计下来发现,帮助不太大。因为汉语里短字词“一音多字”的情况太多,如果词库非常大,打出来的候选词太多,找到自己想要的那个还是很费时间。吴军说,增大词库,这也是根据经验和直觉的应对方法,就和我们刚刚说的,“在大圆里套小圆,在小圆里套更小的圆”思路一样。
那最好的解决办法是什么呢?就是借助语言模型。这和第一个重点里说的,计算机处理自然语言的思路比较像,都是利用统计学的原理,来计算出一长串拼音转化成文字的最有可能选项,方便使用者直接打出一大段文字。和之前凭经验行动的解决方法相比,这就是更好的数学模型。
总结下这部分的内容。在这个重点里,我们讨论了“数学为什么这么有用”这个问题,答案是数学能帮助我们发现仅凭经验无法发现的规律,找到仅凭经验无法总结出来的办法。比如发现行星围绕恒星运转的事实,比如大幅优化全拼输入法,使之成为最好用的输入法等等。可以说没有数学,我们不可能拥有今天的世界观和生活方式。
第三部分
我们说完了数学的用处,和数学有用的原因,接下来让我们一起回归这本书的标题,来看看吴军认为的“数学之美”所以第三个重点就是,为什么说数学之美就是简单美?
数学公式、数学计算、数学推导的过程可能实际应用起来都很复杂,这也是为什么数学这么难学的原因。但是数学应用背后所包含的数学思想,却总是简单的,这种简单之美,就是吴军一直说的数学之美。
计算机的原理其实就是一个例子,计算机的术很复杂,它一般由大量的精密电路搭建而成,但是计算机的道却很简单,它本质上的逻辑来自简单的不能再简单的布尔代数。布尔代数的运算元素只有0和1两个数字,基本的运算也只有三种,第一种是“与”,也就是英文AND,第二种“或”,也就是OR,第三种是“非”,也就是NOT很好理解。就是这么简单的布尔代数,实际上就是数字电路的基础。所有的数学和逻辑运算,比如加、减、乘、除、乘方、开方,等等,全部都能转化成布尔代数的基本运算。正是靠这一点,人们才用以布尔代数原理为基础的一个个电路,搭建起了现代电子计算机。
再比如,我们刚才介绍的几个例子,让计算机处理自然语言,一条路是成千上万的复杂语法,另一条路是让计算机算概率、找规律,前者科学家们努力了几十年但没什么收获,后者轻轻松松就让计算机处理语言文字的能力大幅提高,数学思想再次化繁为简,用简单的思路解决了复杂的问题。还有我们每天都要用到的全拼输入法,在数学的帮助下输入效率大大提高。而双拼和五笔输入法虽然符合人们对于快速输入的直观认识,但是实际应用困难,效率反而不高,缺乏正确的数学方法,最终结果就是被使用者逐渐抛弃。用吴军的话来说,在现实生活中,真正能够通用的工具,在形式上一定是简单的。一架普通的照相机,不应该要求它的使用者必须精通光圈和快门速度的设置。
“简单之美”说着容易,但其实,连谷歌这样的大公司都曾经犯过“大圆套小圆”的错误。吴军说,他刚到谷歌的时候,发现一些早期的算法根本没有系统的模型和理论基础,大部分软件工程师都是靠直觉来解决问题的。这些错误的模型,也许碰巧几次会有效,就像“地心说”一样,不是也用了几千年吗,但是错误的模型一定会渐渐表现出来负面影响。最终不仅会偏离正确的结果,甚至会把简单的事情搞复杂,最终濒临崩溃。
2006年后,谷歌几乎重写了所有项目的程序,保证了工程的正确性。但是在其他公司,甚至美国的一些挂着高科技头衔的二流IT公司,“大圆套小圆”的情况还是很常见。这就像是一个人有了钱,穿金戴银,但是内在的学问和修养还没提高。吴军说他写这本书,也是希望读者可以通过对IT规律的认识,举一反三地总结、学习和运用自己生活中的规律性,提升自己的境界。
总结
这本书的三个重点就说完了,我们来简单回顾一下。
数学到底有什么用?在让计算机处理自然语言时,人们一开始想让计算机学会人类的语法,但后来发现,要写出来的语法不仅数量特别多,而且实际的识别率特别低。后来科学家们在数学统计学工具的帮助下,让计算机计算出句子的出现概率,通过概率的大小来判断正确与否,从而解决了这个难题。在让计算机进行新闻分类时,科学家们也是另辟蹊径,利用新闻中的特征词来构建向量,再使用余弦定理完成了对新闻的分类。数学让我们抓住做事的规律也就是“道”。
那数学为什么这么有用?其实,归根到底是因为数学能帮助我们发现仅凭经验无法发现的规律,找到仅凭经验无法总结出来的办法。比如我们是在数学的帮助下,才发现了行星围绕恒星运转的真正规律。而我们每天使用的全拼输入法,也都是靠着数学的帮助,才让输入效率不断提高。
最后,为什么说数学之美就是简单美?使用数学的方法,“术”可能比较复杂,但是“道”却总是简单的。不管是计算机背后隐含的简单的布尔代数原理,还是使用数学来解决各种问题时体现出的简单思想,都向我们展示出数学之美就是简单美。
看过本书之后,相信你对数学这个古老的学科,又有了进一步的认识。吴军在本书第二版的前言里说,早期的数学远不如今天这么神秘,它和生活的联系特别紧密。但和任何事物一样,数学也在不断地演化,数学家们一方面对自然事实进行总结和归纳,另一方面又不断加上抽象思考,最终让数学变得高深起来。经过几千年这种抽象演化,大家头脑里能想象的数学好像就只剩下数字、符号、公式和定理了。
但吴军通过这本书告诉我们,通过数学的实际应用我们能认识到,事物表面的样子并不一定能反映出真实情况。很多时候,只有在深入了解的基础上,我们才能获得对某件事情的发言权。就好比了解了数学的应用之后,才能摒弃“数学无用论”的观念,才能发现真正的数学之美。
最后,我也要专门为计算机专业的学生或者工程师来介绍一下,为了方便没有相关知识背景的读者阅读,吴军给每个专题都添加上了背景介绍;同时,在一些专题的最后,他还给出了很多“延伸阅读”,这部分是专门给专业的读者来看的。他提到了如何在最热门的技术问题里,比如大数据、深度学习、Google的人工智能中找到数学的解决方法,相关专业的用户也可以延伸阅读。