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

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

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

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

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

2.信源编码和最短编码

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

3.解码的规则和语法

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

4.聚类

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

5.校验位

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

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

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

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

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

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

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

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

三、统计语言模型

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

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

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

四、谈谈中文分词

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

五、隐含马尔可夫模型

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

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

                                                 s_{1},s_{2},s_{3},...=\underset{all \ s_{1},s_{2},s_{3},...}{Arg\ Max}\ P(s_{1},s_{2},s_{3},...| o_{1},o_{2},o_{3},...)

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

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

六、信息的度量和作用

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

        准确的信息量可以通过:H(x)=-\sum _{x\in X} P(x)*log(x)来表示。

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

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

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

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

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

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

九、图论和网络爬虫

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

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

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

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

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

PageRank_Y = X_1+ X_2+ X_3+ X_4

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

PageRank计算方法:

假定向量  B=(b_1,b_2,...,b_n)^T为第一、第二、...第N个网页排名。

矩阵 A = \begin{bmatrix} a_1 & ... & a_{1n} & ... & a_{1M} \\ ... & & & & ... \\ a_{m1} & ... & a_{mn} & ... & a_{mM} \\ ... & & & & ... \\ a_{M1} & ... & a_{Mn} & ... & a_{MM} \end{bmatrix} 为网页之间链接的数目,其中 a_{mn} 代表第 m 个网页指向第 n 个网页的链接数。A 是已知的,B 是未知的,需要计算。假定 B_i 是第 i 次迭代的结果,那么B_i=A*B_{i-1} 。初始假设,所有网页的排名都是 \frac{1}{N} ,即 B_0 = (\frac{1}{N},\frac{1}{N},...,\frac{1}{N})。通过 B_i 的计算可以得到我们需要的结果,但是计算量非常大,不过可以通过计算证明 B_i 最终会收敛(B_i 无限趋近于B),此时,B = B \times A 。因此,当两次迭代结果 B_i 和  B_i  之间的差异非常小,接近于0时,停止迭代,算法结束。一般只需要10次左右的迭代就收敛了。此外,网页之间的链接相比于互联网的规模非常稀疏,因此需要对小概率事件进行平滑处理。网页的排名是个一维向量,对它的平滑处理只能利用一个小的常数\alpha,此时 B_i = \left [ \frac{\alpha }{N}\cdot I + (1-\alpha)A \right ]\cdot B_{i-1}。N是互联网网页数量,\alpha是一个较小的常数,I 是单位矩阵。

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

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

  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值