《数学之美》读书笔记

曾经看过吴军博士的《大学之路》,对书中的教育理念十分喜欢,这次有机会拜读《数学之美》,读完之后,感觉十分清爽,之前还未曾听说过一本书能将数学,计算机,算法,文化,历史和教育理念结合起来。曾经很多不懂的地方,现在渐渐清晰了很多,读完之后,再看今天的自然语言处理和搜索引擎,大多本是以信息论为基础。

第一章

本书——《数学之美》,力图将复杂的问题,归结为数学模型。

从事科学研究,最重要的是掌握思维方法:

  • 牛顿在《自然哲学的数学原理》中叙述了四条法则:“法则1:除那些真实而已足够说明其现象者外,不必去寻找自然界事务的其他原因。”
  • “从希腊哲学到现代物理学的整个科学史中,不断有人力图把表面上极为复杂的自然现象归结为几个简单的基本概念和关系。这就是整个自然哲学的基本原理。”——爱因斯坦

简单性模块化是软件工程的基石;分布式容错性是互联网的生命。”——WWW的发明者蒂姆·伯纳斯·李

通信

“信”字作为“通信”一词的50%,表明了信息的存储、传输、处理和理解的重要性。

数字、文字和自然语言一样,都是信息的载体,他们之间原本有着天然的联系。语言和数学的产生都是为了同一个目的——记录传播信息。但是,直到半个世界前,香农博士提出信息论,人们才开始把相互学和信息系统自觉地联系起来。然而,信息的产生、传播、接受和反馈,与今天最先进的通信在原理上没有任何差别。

为什么人们可以学会这么多文字?因为概念,在中国的象形文字中,“日”本意是太阳,但它同时又是太阳从升起到落山再到升起的时间周期,也就是我们讲的一天。在古埃及的象形文字中,读音相同的词可能用同一个符号记录。这种概念的聚类,在原理上与今天自然语言处理或者机器学习的聚类有着很大的相似性。

文字表现的具体形式不重要,所承载的信息是重要的。翻译这件事情能够达成,本质的原因是不同的文字系统在记录信息上的能力是等价的。

信息的冗余是信息安全的保障。

语言的数据,我们称之为语料,尤其是双语或者多语的对照语料对翻译至关重要。

自然语言处理:从规则到统计

语言的出现是为了人类之间的通信。字母、笔画、文字和数字实际上是信息编码的不同单位。任何一种语言都是一种编码方式,而语言的语法规则是编解码的算法。

语言的数学本质:我们把一个表达的意思,通过某种语言的一句话表达出来,就是用哪个这种语言的编码方式对头脑中的信息做了一次编码,编码的结果就是一串文字。而如果对方懂得这门语言,他/她就可以用这门语言的解码方法获得说话人要表达的信息。

机器智能

图灵测试(Turing Test):让人和机器交流,如果人无法判断自己交流的对象是人还是机器,就说明这个机器有智能了。

统计语言模型

谈谈分词

词是表达语义的最小单位。

其中 s1,s2,s3,⋯s1,s2,s3,⋯{s_1, s_2, s_3, \cdots} 表示信息源发出的信号,o1,o2,o3,⋯o1,o2,o3,⋯{o_1, o_2, o_3, \cdots} 表示接收器接收到的信号。通信中的解码就是根据接收到的信号 o1,o2,o3,⋯o1,o2,o3,⋯{o_1, o_2, o_3, \cdots} 还原出发送的信号 s1,s2,s3,⋯s1,s2,s3,⋯{s_1, s_2, s_3, \cdots} 。

信息的度量和作用

信息是如何客观、定量地体现出来的?信息用途的背后是否有理论基础?

信息熵

一条信息的信息量与其不确定性有着直接的关系。信息量就等于不确定性的多少。变量的不确定性越大,熵也越大。

H(x)=−∑x∈XP(x)logP(x)H(x)=−∑x∈XP(x)log⁡P(x)

{H(x) = - \sum_{x \in X} P(x) \log P(x)}

信息的作用

信息和消除不确定是相联系的,在英语里,信息和情报都是用一个英语单词(information),情报的作用就是 排除不确定性

一个事物内部会有随机性,也就是不确定性,假定为 UU{U},而从外部消除这个不确定性唯一的方法是引入信息 II{I}, 而需要引入的信息量取决于这个不确定性的大小,即 I>UI>U{I > U} 才行。当 I<UI<U{I 时,这些信息可以消除一部分不确定性,这就是说有新的不确定性 U′=U−IU′=U−I{U' = U - I} 。

互信息

互信息(Mutual Information)的概念作为两个随机事件“相关性”的量化度量。

关于教育

  1. 小学生和中学生其实没有必要花那么事件读书,而他们的社会经验、生活能力以及在那时树立起的志向将帮助他们的一生。
  2. 中学阶段花很多时间比通吧你多读的课程,上大学以后用很短的时间就能读完,因为在大学阶段,人的理解力要强得多。
  3. 学习(和教育)是持续一辈子的过程,而且要出于兴趣。
  4. 书本的内容可以早学,也可以晚学,但是错过了成长阶段是无法补回来的。

简单之美:布尔代数和搜索引擎

技术分为“道”和“术”两种,具体的做事方法是“术”,做事的原理和原则是“道”。

建立一个搜索引擎大致需要做这样几件事情:

  1. 自动下载尽可能多的网页;
  2. 建立快速有效的索引;
  3. 根据相关性对网页进行公平准确的排序;

很多数学方法,其实看上去没有什么用,但是随着时间的推移会突然爬上大用场。这恐怕是世界上还有很多人毕生研究数学的原因。

PageRank:Google的民主表决式网页排名技术

对于一个特定的查询,搜索结果取决于两组信息:关于网页的 质量信息(Quality),以及这个查询与每个网页的 相关信息(Relevance)

在互联网上,如果一个网页呗很多其他网页所链接,说明它受到普遍的承认和信赖,那么它的排名就高。

如何确定网页和查询的相关性

如今,影响搜索索引质量的诸多因素,除了用户的点击数据意外,都可以归结为以下四类:

  1. 完备的索引。
  2. 对网页质量的度量。
  3. 用户偏好。
  4. 确定一个网页和某个查询的相关性的方法。

有限状态机和动态规划

余弦定理和新闻的分类

由于向量中每一个变量都是整数,因此余弦的取值在 00{0} 和 11{1} 之间,也就是说,夹角在 00{0} 度到 9090{90} 度之间。当两条新闻向量夹角的余弦等于 11{1} 时,这两个向量的夹角为零,两条新闻完全相同;当夹角的余弦接近于 11{1} 时,两条新闻相似,从而可以归成一类;夹角的余弦越小,夹角越大,两条新闻越不相关。当两个向量正交时(9090{90} 度),夹角的余弦为零,说明两篇新闻根本没有相同的主题词,它们毫不相关。

Google AK-47的设计者

在计算机科学领域,一个好的算法应该像AK-47冲锋枪那样:简单、有效、可靠性好而且容易读懂(或者说易操作),而不应该是故弄玄虚。

先帮助用户解决 80%80%{80\%} 的问题,再慢慢解决剩下的 20%20%{20\%} 问题。许多失败并不是因为人不优秀,而是做事情的方法不对,一开始追求大而全的解决方案,之后长时间不能完成,最后不了了之。

坚持选择简单方案的原因是容易解释每一步骤和方法背后的道理,这样不仅便于出了问题时查错(Debug),而且容易找到今后改进的目标。如果每一项改进都是有得有失,甚至得失相差无几,那么长期下来,效果也不会有什么明显的提升。即使是机器学习训练出来的模型和参数,也需要有合理的解释。

拼音输入法的数学原理

汉字的输入过程本身就是人和计算机的通信,好的输入法会自觉或者不自觉地遵循通信的数学模型。当然要作出最有效的输入法,应当自觉使用信息论做指导。

个性化语言模型

从理论上讲,只要语言模型足够大,拼音输入法的平均击键次数就可以接近信息论给的极限值。如果把输入法放在云计算上,这是完全可以实现的,而在客户端上(比如个人电脑上)这样做不现实。好在客户端有客户端的优势,可以建立个性化的语言模型。

凸函数的定义:如果一个函数 ff{f},满足条件 f(tx1+(1−t)x2)<tf(x1)+(1−t)f(x2)f(tx1+(1−t)x2)<tf(x1)+(1−t)f(x2){f(t x_1 + (1-t) x_2) ,那么这个函数成为凸函数。

马尔科夫链的扩展:贝叶斯网络

贝叶斯网络在此分类中的应用

贝叶斯网络在词分类中的应用

逻辑回归和搜索广告

搜索广告的发展

基本走过了三个阶段:

  1. 竞价排名:但可能出得起钱的都是为了卖假货来谋取暴利。
  2. 综合出价和点击率(Click Through Rate)等因素决定广告的投放。预估点击率最好的方式就是根据以往的经验来预测。
  3. 后来,随着考虑因素的变多,用一个统一的数学模型来描述不太容易,所以采用了现在的逻辑回归模型。

逻辑回归模型

逻辑回归模型是指讲一个事件出现的概率逐渐适应到一条逻辑曲线(Logistic Curve,其值域在 (0,1)(0,1){(0, 1)} 之间)上。逻辑曲线是一条 SS{S} 型曲线,特点是一开始变化快,逐渐减慢,最后饱和。

f(z)=ezez+1=11+e−zf(z)=ezez+1=11+e−z

{f(z) = \frac{e^z}{e^z + 1} = \frac{1}{1 + e^{-z}}}

逻辑回归的好处是它的变量范围为 −∞−∞{-\infty} 到 ∞∞{\infty},而值域限制在 0−10−1{0-1} 之间。(当然,由于 zz{z} 超出 [−6, 6][−6,6]{[-6,\ 6]} 后函数值基本没有变化,在应用中一般不考虑)。我们知道对应于 [0, 1][0,1]{[0,\ 1]} 之间的函数可以是一个概率函数,这样逻辑回归函数就跟一个概率分布联系起来的。

各个击破算法和Google云计算的基础

各个击破:云计算的关键之一是,如何把一个非常大的计算问题,自动分解到许多计算能力不是很强大的计算机上,共同完成。针对这个问题,Google给出的解决工具是一个叫做 MapReduce 的程序,其根本原理就是十分常见的分支算法(Divide-and-Conquer)。

分治算法的原理

将一个复杂的问题,分成若干个简单的子问题进行解决。然后,对子问题的结果进行合并,得到原有问题的解。

从分治算法到MapReduce

归并排序:假定要对一个长度为 NN{N} 的数组 a1,a2,a3,⋯,aNa1,a2,a3,⋯,aN{a_1, a_2, a_3, \cdots, a_N} 进行排序,如果采用冒泡排序,复杂度是 O(N2)O(N2){O(N^2)},不仅非常慢,而且如果数组过大,也无法在同一台计算机上完成。用分支算法,是将这个大数组分为几份,然后对每一份分别排序,然后最后从头到尾进行合并,得到元素组的排序结果。这个排序算法要求每个子任务完成后,结果都要进行合并。

若要计算两个大的矩阵的乘积,比如 A×BA×B{A \times B},可以把 AA{A} 按行分块,把 BB{B} 按列分块,然后最后合并结果,得到矩阵的乘积。

将一个大任务拆分成小的子任务,并且完成子任务的计算,这个过程叫 Map,将中间结果合并成最终结果,这个过程叫做 Reduce。

大数据的威力:谈谈数据的重要性

与模型一样,数据也同样重要。

由于计算机获取、存储和处理数据的能力快速提升,人们逐渐从大量的数据中发现了很多原本难以找到的规律性。

数据的重要性

数据不仅在科学研究中,而且在生活的方方面面都很重要,它应该成为们日常做决策的依据。

在没有数据之前,不要给出任何结论,因为日常的很多感觉与数据给出的结论是相反的,如果不用数据说话,成功的几率几率就会小很多。

没有数据支持的决定常常不准确,而且个别成功的案例的影响在人们心中会被方法,而风险则被缩小,个别数据与大量数据也有本质的区别,往往大量数据会因为量变而导致质变。

数据的统计和信息技术

其实,概率论和统计学虽然紧密相关,却是相对独立发展的。概率论是研究随机现象数量规律的数学分制。统计学是通过搜索、整理、分析数据等手段,以达到腿短所测对象的本质,甚至预测对未来的一们综合性学科。

切比雪夫不等式:其中,XX{X} 是一个随机变量,E(X)E(X){E(X)} 是该变量的数学期望,nn{n} 是实验次数,ϵϵ{\epsilon} 是误差,σσ{\sigma} 是方差。这个公式的含义是,当样本数足够多时,一个随机变量和它的数学期望值之间的误差可以任意小。

P(|X−E(x)|>ϵ)<σ2nϵ2P(|X−E(x)|>ϵ)<σ2nϵ2

{P(|X - E(x)| > \epsilon)

但是,除了要求数据量必须足够多,统计还要求采样的数据具有代表性。有些时候不是数据量足够大,统计结果就一定准确。统计所使用的数据必须与想要的统计的目标相一致。

如果数据具有代表性,统计量又足够,那么从这些数据中得到统计结果,对我们的工作就有非常大的指导意义了,对产品质量的提升也大有帮助。今天IT行业的竞争,在某种程度上已经是数据的竞争了。

既然数据是非常有用的,如果有更多、更完备且全方位的数据,我们就可能从中挖掘出很多预想不到的惊喜。大数据这个概念就是在这样的背景下应运而生的。

为什么需要大数据

大数据更重要的在于它的多维度和完备性,有了这两点才能将原本看似无关的时间联系起来,回复出队事物全方位完备的描述。

首先,只有当一些随机事件的组合一同出现了很多次以后,才能得到有意义的统计规律;其次,大数据的采集过程是一个自然的过程,有利于消除主观性的偏差;当然,更重要的是,只有多维度的大数据才能让那些原本有联系,但似乎联系又不太紧密的时间反复出现,然后发现新的规律。

附录 计算机复杂度

一个优秀的计算机科学家或者工程师与平庸的程序员的差别就在:前者总是不断寻找并且有能力找到好的算法,而后者仅常常满足于勉强解决问题。而在所有的“好”的算法中,显然存在一个最优的算法——找到它们是从事计算机科学的人应该努力达到的目标。

技能解决实际大问题的方法编程计算机可运行的程序,中间的桥梁就是计算机的算法。

计算量 NN{N} 的一个函数 f(N)f(N){f(N)}。这个函数的边界(上界或下界)可以用数学上的大 OO{O} 概念来闲置。如过两个函数 f(N)f(N){f(N)} 和 g(N)g(N){g(N)} 在大 OO{O} 概念上想通,也就是说:当 NN{N} 趋近于无穷大时,它们的比值只差一个常数,则可以看成是同一个数量级的,即认为复杂度相同。计算复杂度关键看 O()O(){O()} 里面的函数变量的部分,而不是常数因子。

如果一个算法的计算量不超过 NN{N} 的多项式函数,那么称这个算法是多项式函数复杂度的。如果一个问题存在一个多项式复杂度的算法,这个问题称为 PP{P} 问题。这类问题呗认为是计算机可以“有效”解决的。但是,如果一个算法的计算量比 NN{N} 的多项式函数还搞,虽然从理论上讲如果有足够的时间也是可以计算的(图灵机概念下的可计算),但是实际上是做不到的。这是我们称它为非多项式(Non-ploynomial)问题。

NPNP{NP} 问题中发现的被称作 NPC (NP−Complete)NPC(NP−Complete){NPC\ (NP-Complete)} 的特殊的问题类,所有的 NPNP{NP} 问题都可以在多项式时间内规约到 NPCNPC{NPC} 问题。无疑 NPCNPC{NPC}问题是 NPNP{NP} 问题中最难的问题,因为如果任何一个 NPCNPC{NPC} 问题找到了一个多项式算法,那么所有的 NPNP{NP} 问题都可以用这个算法解决了,也即 NP=PNP=P{NP = P} 了。

对于计算复杂度至少是 NP−CompleteNP−Complete{NP-Complete} 甚至更大的问题,我们称为它 NP−HardNP−Hard{NP-Hard} 问题。

数学在计算机科学中的一个重要作用,就是找到计算复杂度尽可能低的解。同时,对那些 NP-Complete 或者 NP-Hard 的问题,找到近似解。

第二版后记

感谢吴军博士的《数学之美》为计算机教育做出的巨大努力!

作者希望让做工程的年轻人看到在信息技术行业做事情的正确方法,希望IT公司的工程主管能够带领部署,提高工程水平,逐渐远离山寨,这样才有可能真正接近世界一流 IT 公司的做事水平,避免大量低水平的重复建设导致的惊人浪费。透过对 IT 规律性的认识,举一反三地总结、学习、认识和自觉运用自己工作中的规律性,这样有助于将自己的境界提升一个层次。

人们要认识到正确的理论和方法,总有一个渐进的过程。任何事物都有它的发展规律,而这些规律都是可以认识的,在信息科学领域也不例外。

用很简单的比喻将所在领域内最深奥的道理介绍清楚,让大众理解。一方面对自己的领域非常精通,同时能用大白话把道理讲清楚,而不是把问题复杂化。

最后,感谢吴军博士为计算机、数学教育做出的巨大努力。

参考

  1. 《数学之美(第二版)》吴军
  2. 数学之美番外篇:平凡而又神奇的贝叶斯方法

《数学之美》读书笔记相关推荐

  1. 读书笔记 | 墨菲定律

    1. 有些事,你现在不做,永远也不会去做. 2. 能轻易实现的梦想都不叫梦想. 3.所有的事都会比你预计的时间长.(做事要有耐心,要经得起前期的枯燥.) 4. 当我们的才华还撑不起梦想时,更要耐下心来 ...

  2. 读书笔记 | 墨菲定律(一)

    1. 有些事,你现在不做,永远也不会去做. 2. 能轻易实现的梦想都不叫梦想. 3.所有的事都会比你预计的时间长.(做事要有耐心,要经得起前期的枯燥.) 4. 当我们的才华还撑不起梦想时,更要耐下心来 ...

  3. 洛克菲勒的38封信pdf下载_《洛克菲勒写给孩子的38封信》读书笔记

    <洛克菲勒写给孩子的38封信>读书笔记 洛克菲勒写给孩子的38封信 第1封信:起点不决定终点 人人生而平等,但这种平等是权利与法律意义上的平等,与经济和文化优势无关 第2封信:运气靠策划 ...

  4. 股神大家了解多少?深度剖析股神巴菲特

    股神巴菲特是金融界里的传奇,大家是否都对股神巴菲特感兴趣呢?大家对股神了解多少?小编最近在QR社区发现了<阿尔法狗与巴菲特>,里面记载了许多股神巴菲特的人生经历,今天小编简单说一说关于股神 ...

  5. 2014巴菲特股东大会及巴菲特创业分享

     沃伦·巴菲特,这位传奇人物.在美国,巴菲特被称为"先知".在中国,他更多的被喻为"股神",巴菲特在11岁时第一次购买股票以来,白手起家缔造了一个千亿规模的 ...

  6. 《成为沃伦·巴菲特》笔记与感想

    本文首发于微信公众帐号: 一界码农(The_hard_the_luckier) 无需授权即可转载: 甚至无需保留以上版权声明-- 沃伦·巴菲特传记的纪录片 http://www.bilibili.co ...

  7. 读书笔记002:托尼.巴赞之快速阅读

    读书笔记002:托尼.巴赞之快速阅读 托尼.巴赞是放射性思维与思维导图的提倡者.读完他的<快速阅读>之后,我们就可以可以快速提高阅读速度,保持并改善理解嗯嗯管理,通过增进了解眼睛和大脑功能 ...

  8. 读书笔记001:托尼.巴赞之开动大脑

    读书笔记001:托尼.巴赞之开动大脑 托尼.巴赞是放射性思维与思维导图的提倡者.读完他的<开动大脑>之后,我们就可以对我们的大脑有更多的了解:大脑可以进行比我们预期多得多的工作:我们可以最 ...

  9. 读书笔记003:托尼.巴赞之思维导图

    读书笔记003:托尼.巴赞之思维导图 托尼.巴赞的<思维导图>一书,详细的介绍了思维发展的新概念--放射性思维:如何利用思维导图实施你的放射性思维,实现你的创造性思维,从而给出一种深刻的智 ...

  10. 产品读书《滚雪球:巴菲特和他的财富人生》

    作者简介 艾丽斯.施罗德,曾经担任世界知名投行摩根士丹利的董事总经理,因为撰写研究报告与巴菲特相识.业务上的往来使得施罗德有更多的机会与巴菲特亲密接触,她不仅是巴菲特别的忘年交,她也是第一个向巴菲特建 ...

最新文章

  1. pandas为dataframe添加新的数据行(rows)、在dataframe后面纵向添加一行数据(数据为列表list形式)、列有不匹配将会使用NA值进行填补
  2. bzoj 2157 旅行
  3. DOM_05之DOM、BOM常用对象
  4. leetcode C++ 45. 跳跃游戏 II 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后
  5. 如何基于Weex实现创新交互体验?手淘开源技术BindingX案例解析
  6. [MyBatisPlus]通用Service接口测试通用Service
  7. Vc中对话框数据交换和验证机制
  8. DXperience GridControl 根据内容动态显示图标
  9. 人大金仓数据库登录、查看数据库
  10. SpringBoot整合Redis_Jedis版(二十)
  11. c语言do while例子,C语言do while循环
  12. 获取及计算可滚动元素高度:区分clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop
  13. NOVA温控器参数笔记(十)(故障代码)
  14. 关于输入法键盘的Enter键
  15. 低功耗设计(low power design)和UPF介绍(含代码示例)
  16. 最新可用的电脑开机密码查看工具
  17. Leetcode 606: 根据二叉树建立字符串
  18. dlib.get_frontal_facedetector UINT8 和float格式互相转换
  19. 王者荣耀测试自己本命英雄软件,王者荣耀中谁是你的本命英雄测试地址 趣推测试王者荣耀中谁是你的本命英雄...
  20. 数学教育与计算机教育的新讲座的心得体会,数学新课程培训心得体会(精选7篇)...

热门文章

  1. js 日语索引 日文排序
  2. 【IoT】产品设计:硬件成本核算,这篇文章就够了
  3. 送书 | 聊聊阳光问政
  4. 信创办公--基于WPS的Word最佳实践系列(利用表格控制排版)
  5. oracle写一个全量刷新,Oracle物化视图定时全量刷新以致归档日志骤增
  6. php 分换算成元,千元换算成元(千元单位换算器)
  7. css实现气泡框效果
  8. tp5 根据身份证号码判断性别 男女
  9. 将C盘里的Users文件夹移动到D盘
  10. html 让360浏览器兼容模式,360浏览器兼容模式怎么设置?360浏览器兼容模式设置方法介绍...