前言
早在大一的时候就听说过这本书,同一时间听说的还有一本叫《代码之美》。我是很少买书的,这算是第一本,当然除了买上课要用到的教材。当时买这本书籍的同时也买了另外一本,那本书是讲网络安全的。买这两本书的初衷为了减少自己无聊时候玩手机的时间。所以故意买了一些讲解比较通俗的又同我的专业有关的书籍。
我是在今年夏天的时候买的这本书籍,今天把这本书看完了。首先我来介绍一下写这本书的作者,写这本书籍的作者是中国人,清华毕业,后来又在美国的一所大学取得了博士学位。在Google干过,后来又去了腾讯,现在不知道他身在何处。
这本书是从IT行业来讲解数学上的知识的,用到最多的是概率论和统计学,还有线性代数。现在忽然想写写读后感发现竟然不知道如何来说我的感受了。其实在阅读期间,每读完一些章节的时候自己的感触和感受也都挺多的。这样吧,我就再去翻看一下目录,之后来讲述讲述哪些章节让我感触深刻,或者是一句话,或者是一种技术。
题献
我首先来说说题献。数学之美的题献是这样的,如下:
本书谨献给我的家人。
愿科学之精神在国民中得到普及,愿中国年轻的一代涌现出更多杰出的专业人才。
其实我是很喜欢题献的,我觉得是作者对他人的感谢,以及作者自己写书的希望。我还记得在读Thinking In Java的时候的题献是这样的,献给那些正在努力创造更伟大的下一代计算机语言的人们。每次读到这样有鼓舞力量的语言,我的内心都很激动。
文字和信息
这是全书的第一章,介绍了语言和文字的发展过程,之后又引出了数字和信息的概念,并且说出了这些概念的发展。从这一点我明白到了一件事情,有的事情真的不是我们发明的,而是随着我们的发展,有些东西是自然而然的出现的,或者说是我们认知到了,也可是说是我们发现的,但事物的本质一直就在那里,没有任何变化,我想表达的这一点,我也表达不太清楚。也可能是我理解错误了,但我又想读书吗,一千个人有一千个看法。
图论和网络爬虫
对这一章印象深刻是因为图论和爬虫这两件事情。首先我最近在刷一些算法上的题,我在算法导论中也看到过图,所以我对应该是比较熟悉的。而后是爬虫,在15年那会我就听说过爬虫,但是具体干什么也不太清楚。后来随着这词越来越火,我看过一次关于爬虫的技术教程,教我们在腾讯某个新闻网站上下载一些新闻内容,具体的操作是使用Python这门语言进行的。这次看了爬虫,没想到竟然和图论有关,这一点让我有点吃惊也有些开心。我原来以为图就是能求一求最短路径了、最小生成树这些,没想到竟然也有这么高端的应用了。其实也谈不上高端,只是我个人比较感兴趣。作者介绍了说,网页中的链接就像是图中的边,网页就像是节点,当然网页的内容也就是说的节点中带的有用的信息了。之后作者又介绍了对于特定的信息,该如何进行爬取,是使用BFS还是使用DFS。这是一个没有标准答案的问题,却揭示BFS和DFS的不同性质,而这种性质却能用在不同的场景中。这一点作为一个学生来说,BFS和DFS都是用来遍历图的,只要学会一种就可以了,这种思想是不对的。
余弦定理和新闻分类
关于这一章我还发了说说,我把说说的内容贴过来。余弦和卡列尼娜。幸福的家庭都是相似的,不幸的家庭各有各的不幸。这句话是卡列尼娜开篇的一句话,全书也是围绕着这句话展开讲诉的。余弦就是中学课本中的cos,描述着三角形三边长度与余弦值的数学公式。相似和余弦角度。用过淘宝这个软件的朋友可能会有过这样的体验,通常在购物车的最下方会有一个猜你喜欢的提示,你买过的东西或是加入购物车的东西和猜你喜欢中提示的东西是相似的。余弦的角度由0到90度,如果把其中两条边当作是向量,余弦的值就可以通过向量的内积除以向量的模得到。如果把你买的东西进行量化就是一个向量,把其他人买的东西进行量化就是一堆向量,之后就去这一堆人中找于你最相似的人,余弦的角度越小代表越相似,最后把于你最相似的人买的东西放在了你的猜你喜欢中。与你购物车一样的那些购物车往往都是相似的,与你购物车不一样的那些购物车各有各的不同。这并不是发明,因为人本来如此,物以类聚,人以群分。当时对这个问题思考了很久,主要的原因是自己觉得余弦这个数学概念是容易明白的,其次是自己之前也写过一个关于分类相关的问题。透过这个问题我在想,后数据时代会是什么样子,也就是我四五十岁后这世界会变成什么样子。
暗算和RSA
读到这里的时候,我对RSA的加密方法感到震惊,加密方法是及其简单的,第一步是找两个很大的质数P和Q,然后计算他们的乘积N = P x Q,M = (P - 1) x (Q - 1);第二步是找一个整数E,使得M和E互质;第三步找一个整数D,使得E x D除以M余1,即E x D mod M = 1。经过这三个步骤加密系统就设计完好了,其中E是公匙,D是密匙。比如要对x这个数字进行加密则进行这样的运算X^E mod N = Y,其中Y就是密文,解密运算是Y^D mod N = X。我惊叹如此简单的操作,在现代这么发达的社会中,破解这样的密码则需要几十年的时间,就算你使用成千上万的服务器一起来计算,这一点让我感叹数学的伟大。后来因为作者提到了这部电视剧暗算,我就去把电视剧看完了,电视剧中规中矩,讲了很多,演员的表演也不错。
谈谈数学模型的重要性
这一章中作者没有去聊计算机的事情,而是聊了天文学中的故事。我觉得这并不是在聊事务的表面,而是想告诉我们解决问题的方法。对于作者谈到的解决那种很大规模的问题,比如地心说和日心说这样的问题,我感觉到是庞大的。我就谈谈我在解决编程问题时候经过,刚开始编程的时候大致就是去背,背这个字对中国学生来说应该是最熟悉的,现在想来背是最笨的方法,背的原因也就是不明白,才会有死记硬背这个词。后来编程解决问题的过程就成了找相似,看到这个题目我去想是跟我哪个背过得相似,相似的话就去套,如果不相似就再去找相似,真的找不出来就去查看答案,接着背。这样的学习持续了很长时间,后来我才开始思考。比如看到一个题目,我不在先打开电脑,写个helloworld后,再去思考,而是一开始就开始在那思考,当把问题想明白后再去编码实现。我之前也会去思考但并不是这样的,而是一边写代码一边思考,大多数的时候代码都白白写了,因为问题没想明白之前,代码也得修修改改。当去思考一个要解决的问题,我常常会去演绎,比如举出一些例子,但我的思维总会漏掉一些例子,这也就是思考不全面。继而就是从演绎的这些例子中去总结一个规律,我觉得这个是蛮难得,因为这个是一瞬间的事情,你看的到也就看的到了,而你看不到那也就看不到了。这样讲是有些天赋的意思,但思考这回事,真的同智商是有关系的。我记得在我幼儿园的时候,父亲曾经给我出过一道益智题,当然是很难得,题目我记得不太情况了,是根据文字来描述数学问题,从而去文字的规律中找出解题的答案,我记得答案是当年的年份,好像是2003。那个问题我想了很久,也讲给很多同学说,大家都觉得太难了,然而我却一直在思考,直到有一天想出了答案,就去父亲那边核对是否正确,得到了肯定的答复。后来我就觉得自己不是太笨的人,而现在去看这个问题,我觉得解题的关键是坚持!我坚信自己能解答出来,并且不放弃一直去思考,关于这样的经历我还是有过,是在初中的时候去解决一个关于三角形的问题,那会我每天都在思考,洗脸时候闭上眼睛那个题的过程就在大脑中演绎着。后来这种经历就越来越少了,因为要面对考试这件事情,我们没有太多时间去考虑为什么这样,而仅仅知道就是这样就可以了。至今我那些考取研究生的同学也是这样,我们常常讨论着讨论着就会得出这样的结论,考试的答案是怎么我们就怎么,其实得出这样的结论的时候也反应出出题人对概念本质的理解也是片面的,所以才会出一个颇具争议的题目。在后来章节的介绍中,作者列举了两种思考类型,第一种是比较繁复的,这种感觉就像是打补丁,说的通俗点就有点治标不治本的感觉,因为他找不到本质,只能就这现实情况去解决,其中他也列举出了这样的伟人,说的是在自然语言处理方面的顶尖人物:柯林斯。当然说这位伟人的时候就不能用找不到问题的本质了,因为柯林斯也具有数学模型抽象的功力,他把问题变得复杂的原因是因为他追求完美,每个细节都会考虑到。第二种是比较简单的,作者也认为这是他的追求,就是通常复杂的问题的解法是简单的也是大家轻易可以明白的,这就是大家常说的简单哲学吧。我回想起小时候以及我现在去解决问题通过是复杂的,因为我很难看到问题的本质。我记得小学时候在解决一个矩形边长的问题,我解决完后,把题目拿给老师看,后来我父亲也看到了我的解法,他可能只用1个式子就写完了,而我的解法却写了4到5行。后来老师评价我说,这说明他的确去思考问题了,只是他的思考是复杂的,当父亲给我说了他的解法时我也是能明白的。所以我也想在此告诫自己,思考的重要性,以及希望我同之前一样,不要放弃去思考。相信自己,并且付诸行动。
大数据的威力
也是很早就听过大数据了,具体记不得是什么时候了。关于数据,2014年那会学数据库,第一次听到它形式化的定义,是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的的原始素材。有幸那年在老师的带领下,做了一个进销存的项目,其中关于数据库的是由我来负责的,主要的工作是写写SQL语句。那会透着那些查询,我慢慢的熟悉了业务流程,感觉数据真是蛮强大,这个点该如何解释呢,就我当时的认识,最直观的感受就是,数据真的可以描述这个世界。在作者的文章中他刚开始的时候也描述了数据,说现在互联网上的一切信息都可以用数据来表达。后来作者谈到了大数据,作者之前也聊过这个话题,是在聊分布式计算的时候聊到的。他接着列举了那些机器学习的框架在以前的应用,以及现在的应用。作者从他的工作上,给出了如果有了大数据,关于搜索的事情可以变得更出色。其实我觉得把大数据的发生说成是由分布式来推进的,这点对于我来说受益匪浅。大数据的大其实就是说计算复杂,也就是计算量超级大,作者用了PB级别量来说明这个量到底有多大。然而分布式就解决了这样的问题,分布式的原理其实就是大伙一起干,比如遇到一个问题,并不是说由一台计算机去完成,而是有成千上万台计算机一起完成,这也就是媒体上常常提到的云计算。其实这个问题的本质其实是分而治之,分治是算法领域的一个重要的思想。有一次我同一个同学解释什么是大数据,我就对他说,你别觉得大数据多么高端,遥不可及的,其实就是用了统计学里的知识来分析数据罢了。现在觉得我这么说是不完整的,因为我没有提到分布式这个概念。今年在学校的时候有一位老师让我帮忙写一个分类算法,是关于图书推荐的算法。当时我查阅了相关资料,发现其实就是用到了上面提到的余弦的事情,然而那个斜率的算法也不用你去写,我用了Python中scipy这个库,就直接带有了斜率计算的公式。后来老师让我在hadoop平台上写出来,这样才能实现分布式。后来由于其他事情我也没有去完成在hadoop平台上的代码。作者聊到google现在的医疗团队正在使用大数据来解决癌症的事情,读到这里我也是蛮激动的,如果真能实现,那将会是一件多么有意义的事情!
总结
有一次自己喝醉了酒,想起了《数学之美》这本书,去各大社交平台搜索了吴军作者,在微博平台上搜索到了他。我就着醉意表达了我对他的敬佩。读完这本书后,我知道了自己在数学上的不足之处,以及在解决问题时候的思维的差异。在以后的道路上我会努力让自己变得更好。
