数学是在计算机领域的重要性不言而喻。或许大部分的岗位需求不需要特别强的数学能力,但是没有数学的基础,在这条路上也并会走得太长久。《数学之美》是一本基于自然语言处理的经典之作。在读完《算法图解》之后,《数学之美》非常适合作为紧接着读的书。本文所有内容均是通过借鉴与总结《数学之美》。

一、文字与语言 vs. 数字与信息

1. 通信原理和信息传播的模型

无论是原始人还是现代通信原理,他们的信息传播模型是极其相似的。信息的传播者通过发出声音(编码)经过空气传播(信道)到达接收者(解码)获取信息。

2.信源编码和最短编码

随着文明的推进,人类需要记录的信息越来越多。然后就出现了文字,无论是象形文字,楔形文字、拼音文字都属于一种编码,对信息进行编码。而在文明的发展中,古人将最常用的语言使用最短的字符表示,而生僻的事物则用较长的字符表达,这完全符合最短编码的原理。对常用的信息进行浓缩成简单的词汇,以便减少开销。

3.解码的规则和语法

古语到现代语言,是语法使得表达方式和含义变得更加丰富和准确。字母到词(这里作者将汉字的横竖笔画也比作字母)是编码。语法则是语言的编码和解码规则

4.聚类

在文明的发展中,文字越来越多,人类并不能全部都记住,因此”概念“产生。而有的词的概念会有多个,比如日(1 作太阳 2 作时间单位,一天)。这就是概念聚类。

5.校验位

犹太人抄写《圣经》的时候为了避免出现错误,会对每页进行独特的校验方法。这是最早的校验实践。

6.双语对照、语料库和机器翻译

正是因为有罗塞塔石碑上的三种语言,人类才可以对那个时代进行研究。通过对不同语言但是表达相同事件的研究,可以获取历史的信息。语言的数据就是语料,双语或多语的对照语料对翻译至关重要。这是从事机器翻译研究的基础。

7.多义性和利用上下文消除歧义性

由于多义词会在不同情境下存在多义性。所以需要根据具体的情境、上下文进行分析消除歧义性。

二、自然语言处理 - 从规则到统计

由于时代与历史局限性,早期的自然语言处理的研究方向并不明确,属于还在探索的阶段。当时的科学家普遍认为,人类之所以能够完美地处理自然语言,或者不同语言的转换,是因为对语法的了解。尽管这种思想是正确的,但是却是对于人类而言是正确的。为了完成让机器也能如同人类对自然语言的分析,早期科学家认为需要让计算机如同人类一样学习语法,从而通过分析语法,利用规则来完成对自然语言的分析。

随着时间的发展,人们渐渐发现这个方向的研究并没有很大的突破,甚至有些困入其中。直到IBM华生实验室为语音识别而进行了以统计为基础的分析,才得以推动自然语言处理的进步。基于统计的自然语言处理方法,在数学模型上和通信是相通的,甚至就是相同的。因此,在数学意义上自然语言处理又和语言的初衷 - 通信联系在一起了。

三、统计语言模型

自然语言演变成上下文相关的信息表达和传递的方式,为了让计算机能够处理自然语言,需要根据它上下文的特性设计出数学模型 - 统计语言模型。根据词句在语料库中出现的概率进行计算当前检测语句的准确概率。从基本模型到二元模型、再到N-1阶马尔可夫假设。以及考虑空间复杂度和时间复杂度之后,N的取值限制,即是马尔可夫假设的局限性。为了解决这一限制,需要使用长程(距离)依赖性。

设计出来的模型需要参数的支持,但是根据二元模型可能会出现零概率、绝对(1)概率的情况,这就涉及统计可靠性问题。数理统计中,一般通过大数定理来支持较为准确的统计概率。但是实际应用中,统计语言莫模型的零概率问题依然无法避免。因此在训练统计语言模型中使用古德-图灵估计(对于没有看见的事件,我们不能认为它发生的概率就是0,对一小部分不可信的统计数据概率给未看见的事件)。同时过去经常使用低阶语言模型和高阶模型进行线性插值 - 删除差值来达到平滑的目的。但是由于线性插值的效果略低于卡茨退避法,因此现在较少使用了。模型训练中的另一个重要问题是训练数据,或者说语料库的选取。在训练数据和应用数据一致并且训练量足够大的情况下,训练语料的噪音高低也会对模型的效果产生一定的影响。

统计语言模型在形式上非常简单,任何人都很容易理解,但内里的学问却很深。数学的魅力就在于将复杂的问题简单化。

四、谈谈中文分词

对于拼音语言来说,如英语,词之间有明确的分界符,统计和使用语言模型非常直接。而亚洲语种中,如 中、日、韩、泰等语言,词之间没有明确的分界符(韩国有特例)。需要对句子进行分词,才能进一步自然语言处理。这个过程之中,我们可以将其看成一个动态规划的问题,并且利用维特比算法快速找到最佳分词。拓展阅读也对分词的层次、颗粒度进行了介绍。中文分词以统计语言模型为基础,经过几十年的发展和完善,今天基本上可以看作是一个已经解决的问题。

五、隐含马尔可夫模型

通过第四章可以对马尔可夫模型有所了解。而且隐含马尔可夫模型是一个并不复杂的数学模型,目前为止,它一直被认为是解决大多数自然语言处理问题最为快速、有效的方法。它成功解决了复杂的语音识别、机器翻译等问题。

在通信模型中,我们有发送者的信息串S和通过信道后接收者的信息串O,如何根据O来推测S,用概率论的语言,就是在已知O的情况下,求得令条件概率达到最大值的那个信息串,即

通过转换、变换直到最后可以使用隐含马尔可夫模型来估计。

隐含马尔可夫模型最初应用于通信领域,继而推广到语音和语言处理中,成为连接自然语言处理和通信的桥梁。同时它也是机器学习的主要工具之一,如同其他的机器学习的模型工具一样,它需要一个训练算法(鲍姆·韦尔奇算法)和使用时的解码算法(维特比算法),掌握这两类算法,基本上可以使用隐含马尔可夫模型这一工具。

六、信息的度量和作用

对于信息我们只清楚它的抽象概念,但是信息到底有多大,如何度量?信息的作用在于消除不确定性,自然语言处理的大量问题就是找到相关的信息。在这一章节引入了信息熵的概念,它表示了信息量。而信息量又代表了不确定性的多少,代为使用Bit。

准确的信息量可以通过:来表示。

信息熵不仅是对信息的量化度量,而且是整个信息论的基础。它对于通信、数据压缩、自然语言处理都有很强的指导意义。信息熵的物理含义是对一个信息系统不确定性的度量,在这一点上,它和热力学中的熵的概念相同,因为后者是对于一个系统无序的度量。

七、贾里尼克和现代语言处理

呈现了一个大师的平凡和不平凡。

八、简单之美-布尔代数和搜索引擎的索引

简述了布尔代数的诞生与发展,如何成为数字电路的基础,以及在离散数学中发挥无比重要的作用。同时也介绍了搜索引擎的简单原理,了解数学在工程中的作用,以及索引。

布尔代数非常简单,但是对数学和计算机发展的意义重大,它不仅把逻辑和数学合二为一,而且给了我们一个全新的视角看待世界。 开创了今天数字化的时代。

九、图论和网络爬虫

对离散数学中图进行了阐述,并且通过广度优先算法(BFS,把邻居节点探查完,然后对二级邻居探查,直到结束) 和深度优先算法(DFS,随机找个邻居,然后一条路走带黑,再看这条线上漏掉的邻居的邻居们等) 的应用对遍历的概念进行了介绍。在对遍历和图有所了解之后,基于以上的理论介绍了网络爬虫的原理和定义,提及哈希表/散列表的在其中的用途。

在延伸阅读中,对欧拉七桥问题利用离散的图进行了证明,并针对如何构建一个网络爬虫提供了思路。最经典的例子就是搜索引擎和图论的遍历算法。互联网说穿了就是一张图,每个网页都类似节点,超链接可以当作连接网页的弧。有超链接之后,可以从任何一个网页(节点)出发,使用遍历算法,可以自动访问到每一个网页并存起来,完成这个功能的程序叫做网络爬虫。遍历的过程中使用哈希表存储获取的超链接。

十、PageRank - Google的民主表决式网页排名技术

对于用户查询,搜索引擎返回上万条结果,需要把用户最想看到的。对于一个特定查询,搜索结果排名取决于两组信息,网页质量信息(Quality)、查询与每个网页的相关性信息(Relevant)。这一章节主要介绍搜索关键词和网页相关性的方法。

网页排名算法PageRank是谷歌革命性的发明。这一算法简单来说就是民主表决。因为早些时候的种种限制,较好的排序算法也只是用到了指向锚文本的技术,所以使用链接数量作为搜索排序的一个因子绝对是开创性的。利用这一因子设计成民主表决的形式就是PageRank。比如,我们搜索李开复博士,有100人举手说自己是。谁是真的?也许不止一个真的,但是谁又是用户真正想找的那个?如果大家都说在创新工厂的那个是真的,那他就是真的。同理,一个网页被很多其他网页所链接,它的排名就高。实际算法要复杂的多,利用权重区分不同的页面的链接。但是网页Y的排名来自于所有指向Y的其他网页的权重之和,即

这也出现了一个问题,网页X们的权重怎么度量,这是一个鸡和蛋的抽象。破解这个问题的应该是布林,他把这个问题变成一个二维矩阵相乘的问题,使用迭代的方法解决。考虑到计算量,佩奇和布林两人利用稀疏矩阵计算技巧简化计算量。后来出现的并行计算工具MapReduce使得PageRank完全自动化,大大缩短计算时间。

PageRank计算方法:

假定向量  为第一、第二、...第N个网页排名。

矩阵  为网页之间链接的数目,其中  代表第 m 个网页指向第 n 个网页的链接数。A 是已知的,B 是未知的,需要计算。假定  是第 i 次迭代的结果,那么 。初始假设,所有网页的排名都是  ,即 。通过  的计算可以得到我们需要的结果,但是计算量非常大,不过可以通过计算证明  最终会收敛( 无限趋近于B),此时, 。因此,当两次迭代结果  和    之间的差异非常小,接近于0时,停止迭代,算法结束。一般只需要10次左右的迭代就收敛了。此外,网页之间的链接相比于互联网的规模非常稀疏,因此需要对小概率事件进行平滑处理。网页的排名是个一维向量,对它的平滑处理只能利用一个小的常数,此时 。N是互联网网页数量,是一个较小的常数, 是单位矩阵。

网页排名的计算主要是矩阵相乘,此计算很容易分解成许多小任务,在多台计算机上并行。

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

《Beauty of Mathmatics - 数学之美》的简单总结与推荐相关推荐

  1. 【数学之美】第三版推荐序二 摘录

    \quad \quad\quad 万维网的发明人蒂姆⋅\cdot⋅伯纳斯⋅\cdot⋅李谈到设计原理时说过:"简单性和模块化是软件工程的基石:分布式和容错性是互联网的生命."

  2. 数学之美 与 浪潮之巅

    转载自吴军博士的网站:http://jun.wu.googlepages.com/ 两个非常有名系列文章:"数学之美"与"浪潮之巅".不懂计算机的人也可以从中学 ...

  3. 《数学之美》读后感与商榷

    可以说,数学之美,也是化繁为简之美. <数学之美>读后感 曉SHAO 我们每个人都从小就开始学数学,多数人说起数学,恐怕都会觉得太难.太深奥.而且很多时候,似乎我们的工作也不需要那么多复杂 ...

  4. 《数学之美(第一版)》笔记整理 —— 目录

    序 因为想对互联网的新兴技术有一些更好的了解,不断拓展自己的知识面,所以想到了吴军老师的<数学之美>,个人非常推荐大家阅读,可以对各种技术有一个入门的了解.吴军老师的讲法也很生动,对部分章 ...

  5. 《数学之美》——机器学习最佳入门教程

    本文转载至:http://www.cricode.com/3095.html 数学之美系列 目录 作者:吴军, Google研究员:   来源:Google黑板报   快课网整理 数学之美 一 统计语 ...

  6. 数学之美系列五 -- 简单之美:布尔代数和搜索引擎的索引

    数学之美系列五 -- 简单之美:布尔代数和搜索引擎的索引 [建立一个搜索引擎大致需要做这样几件事:自动下载尽可能多的网页:建立快速有效的索引:根据相关性对网页进行公平准确的排序.我们在介绍 Googl ...

  7. 【读书笔记】《数学之美》——一个好方法在形式上总是简单的

    数学之美 作者简介 内容简介 摘抄语录 收获感悟 牛顿曾说"(人们)发觉真理在形式上从来是简单的,而不是复杂和含混的."数学的美妙之处在于它对自然界史诗的总结和归纳,也是抽象思考的 ...

  8. MATLAB | 一起来感受数学之美叭

    前两天去观摩了MATHWORKS官方举办的Mathematics is beautiful数学之美投票比赛,见到了很多非常惊艳的作品,在这里分享给大家让大家一同感受大神们的创造力,接下来由我来做全程解 ...

  9. 贝叶斯定理——数学之美

    1.贝叶斯定理 1.1 定义:描述在已知一些条件下,某事件的发生概率 贝叶斯定理是关于随机事件A和B的条件概率的一则定理. 1.2 公式理解 P(x∣y)=P(x)P(y∣x)P(y)P(x|y) = ...

最新文章

  1. 进程通信之 Binder 机制浅析
  2. 1.6 开发集和测试集的大小-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
  3. 【ASWL】之RAID配置实战
  4. 社交网络登录失败 当尝试用您的社交网络账号进行第三方登录时,发生了一个错误。
  5. 如何在vue-cli3中使用tinymce
  6. 平台策略:从Portlet到OpenSocial小工具再到渐进式Web应用程序:最新技术
  7. 离散结构和离散数学中文书_在离散数学中对场景执行的操作
  8. python剑指offer替换空格_迷人的算法-剑指offer面试题5:替换空格
  9. 使用NGINX作为HTTPS正向代理服务器
  10. ECCV2020 | Cityscapes上83.7 mIoU,通过解耦的主体和边缘监督改进语义分割
  11. BZOJ4358: permu(带撤销并查集 不删除莫队)
  12. Maven私服Nexus搭建
  13. Ubuntu 训练深度学习模型的时候突然重启问题
  14. 禁止搜索引擎收录网站内容的几种方法
  15. EverNote开源协议-Android
  16. Ubuntu20.04LTS环境下载STM32程序
  17. hdu 2121 最小树形图 +虚根
  18. python3自动爬取网页资源并保存为epub电子书
  19. OpenCalib:自动驾驶多传感器开源标定工具箱
  20. 数字化时代-11:从马斯洛需求层次看未来选择做什么样的产品

热门文章

  1. 高度决定视野,角度决定方向!
  2. tf.feature_column详解
  3. C#,sqlite批量操作速度优化(插入1000条2分钟变0.2秒)
  4. Check Point增强安全访问服务边缘,安全连接远程和混合劳动力
  5. php 侧边栏效果,侧边栏效果:如何在跳转后保持侧边栏已有的展开状态
  6. (十四)Tinker 热修复原理及手写实现
  7. C-企业员工管理系统
  8. 使用原生HTML、CSS、JS实现简易聊天框
  9. Vulkan教程 - 06 交换链
  10. 学生HTML个人网页作业作品~个人主页博客网页设计制作(6个页面)~大学生个人网站作业模板~HTML简单个人网页制作...