1.整体来说,这本书到底在谈些什么?
谈数学知识在计算机中的实际应用,还有精妙的数学方法。
2.作者细部说了什么,怎么说的?
作者细部介绍了现实世界关于信息的问题(现象),进而用数学模型描述,细节上也说明了运用的数学方法。
3. 这本书内容真实吗?说得有道理吗?是全部有道理,还是部分有道理?
真实,有道理。作者在书中介绍的内容都已在实际中运用,不是假设和推理。
4. 这本书跟你有什么关系?这究竟有什么意义?
这本书阐述了看似无用的数学知识,在某些方面发挥了强大的作用,真真实实地向我展示了“数学之美”。对我来说,我更了解了数学在计算机中的实际应用,数学在计算机中很重要,到底重要在哪里?书中提供了一部分有力的答案。
这篇读书笔记应该怎么写?
第一,我要重新整合篇章结构,聚合相同的主题。第二,我要记下在那些美丽的数学方法。
这本书的结构是怎样的?
各章在书中相对时独立的,但是又有着相同的主题——自然语言处理、搜索引擎等。各章的主题都是介绍一个数学方法,它们往往显得“简单”,却又很强大,作者说这就是“数学之美”。我认为,本书的第一个主题是自然语言处理,第二个是搜索引擎,第三个是应用到各个地方的技术,第四个我分为人物专题。
第一部分——自然语言处理
- 自然语言处理的历史——人们最先想到的方法是让计算机像人一样了解自然语言的语法,进而“读懂”自然语言,经过了十几年后,那些基于文法规律的模型却被新出现的基于统计模型轻易地打败了。基于文法规律的模型有什么问题呢?——1.人类自然语言的规则太多,“特例”也很多,要用人工完善这些特例是一件工作量非常大的工作,导致这个模型的进步缓慢。2.一个简单的句子都可以分析出一个复杂的语法树,而复杂句子的语法树甚至在一张纸上也画不下,后期处理的计算量自然非常大。
-
基于统计的模型为什么那么强大?或者说,它为什么又更合理?——要解答这个问题,首先要弄清一个问题——自然语言的本质是什么?自然语言从本质上来说是一种上下文相关的信息,讲到这里,不得不介绍信息传播模型。
信息传输模型.png - 人们简化了语言的单词(一个单词多种意思)和发音(一种发音多种意思),然后用上下文去消除歧义。——计算机是否也能用这种方法消除歧义?如果一个句子没有歧义,那么自然就可以得到它的意思。答案是可以,方法就是上下文相关特性的统计语言模型。统计语言模型之所以强大就是因为它与自然语言的特性更相符,也更适合计算机处理。
- 统计语言模型的原理是什么?简单来说,“一个句子是否合理,就看他的可能性大小如何。”这个概率的计算方法可以搜索“二元文法模型”得到更细致的公式。
- 要想实现二元模型必须想要实现分词,方法也是运用统计语言模型,假设一个句子有几种分词结果,ASDFGGG、DJFJDHDK、FJDKJFJDND,运用统计语言模型的方法就可以计算这种分词方法的可能性,无疑可能性最大的结果是最优的。为了简化运算,需要用到“维特比算法”。
- 这样,我们实现了让机器“理解”一个句子。那么,我们能否做到让机器去理解一段语音,显然答案是可以的。语音识别的过程相当于观测到一段连续信号,然后用它去推测原信号表达的意思。这时候我们就得到了一概率公式,这个公式可以用“隐含马尔科夫模型”近似求解。
- 翻译的二义性怎么解决?——信息熵——信息的作用是什么,信息的作用是消除不确定性,信息熵一方面就是这种不确定性的度量——想要消除或降低一段信息的不确定性就要引入一段新的信息去补充,然而,“美国大选的获胜者”引入“你的年龄”这个信息,并没有能有效降低不确定性。那么如何衡量两段信息的相关程度?——“互信息”“ 互信息(Mutual Information)是信息论里一种有用的信息度量,它可以看成是一个随机变量中包含的关于另一个随机变量的信息量,或者说是一个随机变量由于已知另一个随机变量而减少的不肯定性。”——当我们有足够的信息,我们就可以算出互信息。
第二部分——搜索引擎
- 互联网上有那么多的网页,为什么搜索引擎可以在很短的时间内找到大量的结果?——建立索引,那么索引是如何工作的呢?——我们可以用一个很长的二进制数表示一个关键词是否出现在某篇文本里,比如0001010010111001中的1表示哪些文章出现了这个关键词,而010101001101表示了哪些文章出现了另外的一些关键词,对它们进行简单的布尔运算AND,我们就能得到要找的结果。【问题:为什么不是建立了一个关键词表,然后每篇文章据此生成一个二进制数,然后用关键词相应的二进制数进行匹配?例如——关键词:0101000000 文献:0101010111,有0为0,其余情况为1(布尔运算AND)可以吗?】
- 那么多的网页,要做以上的操作,我至少要先把它们下载回来吧,那么如何保障下载回来的网页没有重复?——图论中的遍历算法,广度优先搜索(BFS)和深度优先搜索(DFS),简单来说,BFS就是先搜索每个节点直接相连的其他节点,DFS就是顺着一个节点的相连的节点走到底,再返回上一层继续相同操作。书中的解释简单易懂,还有图例说明。那么用什么工具去实现这样的操作?——网络爬虫,同时,人们用哈希表记录网页是否下载过。那么哈希表又是怎样记录这些内容?这篇文章的解释很不错。
- 那好,我们能让用户通过搜索得到很多的网页,现在我们要考虑的问题是如何能让搜索最相关的网页和质量最高的网页显示在最前面,毕竟,没有用户会想得到满是广告的搜索结果吧。Google的PageRank算法就是为了解决这个问题而生,它根据其他网页对这个网页的信息,例如其他网页对这个网页的链接,来确定它是否值得依赖,但事情没有那么简单,不同质量的网站理所当然有不同的权重,要计算这个“质量”又要先知道排名,这就变成了一个循环。那么如何解决?——二维矩阵相乘,这个算法最终实现的效果是无论如何取排名的初始值,都能保证结果向真实值收敛。为了解决计算量太大的问题,还要用到一种叫做“稀疏矩阵运算”的技巧。我们得到了哪些网页是比较有价值的结果,但是我们如何确定哪些是用户需要的内容?——TF-IDF(词频-逆文本指数)
- 防作弊问题,作弊方法:重复关键词,引用链接。第一种方法作者说是很好解决的,第二种方法也可以用数学的方法解决。
- 结果的权威度——不同的信息源对不同的信息有不同的权威,
第三部分——各种技术
- 地址分析——有限状态机,有限状态机是一种特殊的有向图,有限状态机只能进行模糊匹配,于是又有了基于概率的有限状态机,
- 全球导航——动态分析,在图论中,一个抽象的图包括一些节点和连接他们的弧,如何考虑每条弧的权重,这个图是加权图,关于这个动态规划,书中有很精彩简单易懂的描述,但以我的理解无法更简洁地复述了,原理是“将寻找全程最短的路线分解为一个个寻找局部路线的小问题。”
- 新闻分类——“计算机的本质上只能做快速运算,为了让计算机能够“算”新闻”(而不是读新闻),就要求我们先把文字的新闻变成一组可计算的数字,然后再设计一个算法来算出任何两篇新闻的相似性。“——具体做法就是算出新闻中每个词的TF-IDF值,然后按照词汇表排成一个向量,我们就可以对这个向量进行运算了,那么如何度量两个向量?——向量的夹角越小,那么我们就认为它们更相似,而长度因为字数的不同并没有太大的意义。——如何计算夹角,那就用到了余弦定理(公式略)。——如何建立新闻类别的特征向量,有两种方法,手工和自动生成。至于自动分类的方法,书本上有介绍,我这里就略过了。很巧妙,但是我的篇幅肯定是放不下的。除余弦定理之外,还可以用矩阵的方法对文本进行分类,但这种方法需要迭代很多次,对每个新闻都要两两计算,但是在数学上有一个十分巧妙的方法——奇异值分解(SVD)。奇异值分解,就是把上面这样的大矩阵,分解为三个小矩阵的相乘。这三个小矩阵都有其物理含义。这种方法能够快速处理超大规模的文本分类,但是结果略显粗陋,如果两种方法一前一后结合使用,既能节省时间,又提高了精确性。
//简书的投稿推荐无疑也用到了文本分析,不过是比较简单的文本分析算法。
- 信息指纹——网页本身太长,储存5000亿个网址就要50TB,而且对字符串的查找又比较慢,所以一种算法——伪随机数产生器算法就产生了,它能把任意长度的整数转化为特定长度的随机数,这样爬虫就能更快地识别一个网页是否下载过。cookie也是一种信息指纹。书中还介绍了几种信息指纹的用法,①判断两个集合是否相同,②判断集合是否基本相同。③判断文本是否相同。
- 视频的反盗版——视频中关键帧才是连续的图像,其他帧储存与关键帧的差异值,用信息指纹处理这些关键帧,再比对是否相同,就知道了是否盗版。
- RSA算法——这个算法用公钥加密信息,而用私钥解码,公钥可以公开,但是只有知道私钥的人才能解码,而且也不能从公钥反推出私钥(理论上可以,但是计算量十分巨大),这个算法几乎可以说建立了互联网安全的基础,2016年图灵奖就颁发给了在互联网加密做出杰出贡献的两位科学家。拓展阅读。
- 拼音输入法的数学原理——我认为还是阅读原文为好。
第四部分——人物专题
- 贾里尼克——作者用一篇文章介绍他,我看到的是——少年普通,拿到MIT的全额奖学金——提出厉害的算法,在大公司IBM领导研究室,取得优秀成果——暮年另一所大学在信息处理领域取得全球领先地位——生活简朴。
- 阿米特·辛格博士——作者这篇文章主要介绍辛格博士做事情的哲学,先用最简单的办法解决80%的问题,剩下的再慢慢解决,这种做法避免了开发大而全的功能导致的工期过长问题,我认为在实际中是更实用的。
- 马库斯与他的弟子们——马库斯推动了统计方法在自然语言处理方面的应用,建立标准语料库。另外介绍了三个他的学生的成绩。
思维导图
读后感
这本书在2月25号从第三章开始看,到28号看完,大约两百七十多页,我看这么快一方面是我跳过了我都不懂的延伸阅读部分,因为读懂那部分必须一些我并没有掌握的知识;另一方面则是作者的讲解非常的透彻,深入浅出,即使对相关知识了解不深,也能读懂作者的内容。我想,我的这篇读书笔记是断然写不好,因为书中最精彩的部分,关于数学的那部分,恰恰是我不能从读书笔记中表达出来的部分。所以我的这篇读书笔记,是有很大的不足的,在于那些缺乏的公式和解释。除了上面我提到的技术,作者还介绍了其他的技术和数学。
其他作者介绍了的技术和数学
- 布隆过滤器
- 贝叶斯网络
- 条件随机场和文法分析
- 维特比算法
- CDMA技术
- 期望最大化算法
- 逻辑回归模型
- 分治算法
- 人工神经网络
- 大数据
- NP问题
对于那些理科专业的学生,特别是数学和计算机,这本书是非常有益的,这本书适合想了解自然语言处理的专业人士,同时,这本书也适合那些并不了解这方面知识的人们,因为作者的描写真的做到了浅白易懂。最后,我建议有兴趣的朋友可以买一本《数学之美》,亲自观察数学的美丽之光。
题外话
欢迎任何想了解这本书的朋友和我交流,也欢迎指出我文章中的错误,良好的互动能帮助我们互相进步,: D