数学之美阅读笔记(1)

大一的时候就开始看吴军博士第一版的《数学之美》,苦于那时年少无知不懂事,加上自身数学知识的体系不健全,翻着翻着也就没有了后文。现在读了研究僧,也许是换了个视野,看到书的开头“中国教育最失败的就是学生从上课的第一天到考试结束,都不知道学的东西能干什么。”,果然是大实话,私以为学习的原动力在于内心的诉求,当有应用的需求时,学习起来就会更带劲。趁着在校时光,安安静静读读书写写字,所以决定将这本书的精髓地方整理整理形成笔记,健忘症发作时就可以随手看看电子版。

1.统计语言模型

基于统计语言的数学模型是自然语言处理(NLP)的基础,贾里尼克的出发点是:一个句子是否合理,看它出现的可能性大小。假定S表示一个有意义的句子,且由一连串顺序排列的词组成(英文中有空格隔开,中文则需要进行分词),出现的可能性则是计算P(S),若直接使用频数统计S在所有语料库中出现的概率,则肯定行不通,利用条件概率展开P(S):

这里写图片描述

从计算来看,计算前几个条件概率还十分容易,但到了后面根本无法进行估算。俄国的马尔科夫提出了一种偷懒的方法,即假设任意一个词出现的概率只和它前面的那个词有关。这样P(S)就变得十分简单:

这里写图片描述

这就是统计语言模型中的二元模型(Bigram Model),如果假设一个词由前面的N-1个词决定,则成为N元模型。接下来计算则变得十分美妙:

数学之美阅读笔记(1)_第1张图片

2.谈谈分词

对于一些亚洲语言(例如中、日、韩),词之间没有明确的界限,因此需要对句子先进行分词,才能做进一步的自然语言处理。最简单的分词方法就是查字典将句子从左到右扫描,遇到字典中有的词就标识出来,遇到复合词就找最长的词匹配

基于统计的语言模型则是保证完成分词后,使用上面的隐含马尔科夫计算模型句子出现的可能性,即先生成所有的分词方式,再选择使得句子出现可能最大的分词方式。这样采用穷举法消耗较大,可以将其转化为一个动态规划法,快速找到句子的最佳分词方式。一般来讲,汉语分词的颗粒度大小和应用场景有关,在机器翻译中,颗粒度应该大一些,而在语音识别和网页搜索中,颗粒度应该小一些

3.信息的度量与作用

信息论的创始人香农提出了“信息熵”(Information Entropy)的概念,解决了信息的度量问题。一条信息的信息量与其不确定性有着直接的关系,可以认为:信息量等于不确定性的多少,信息熵的定义如下(信息熵用H表示,单位是比特 ),至于香农为何这样定义,大家可以科普,十分美妙。

这里写图片描述

信息和消除不确定性是直接相关的,通过引入信息是消除系统不确定性的唯一方法。写到这里,不得不感叹一句,生活的哲理居然可以用数学来证明。在面临选择时,我们不也是找信息渠道尽可能减小自己对未来设想的不确定性吗,真是神奇。

为啥引入新的信息后,系统的不确定性会降低了?现在假设X和Y两个随机变量,知这是定义X在Y条件下的条件熵为(即Y是新的信息):

这里写图片描述

可以证明H(X)>=H(X|Y),即引入信息Y后,X的信息熵减小了,同时当X与Y相互独立时上式等号成立。在度量两个随机变量的相关性上,香农提出了互信息的概念,假定有两个随机事件X和Y,它们的互信息定义如下:

这里写图片描述

同时满足:

这里写图片描述

相对熵则用于衡量两个取值为正的函数的相似性,它的定义如下:

这里写图片描述

为了让其对称,香农又提出一种新的计算方法:即1/2(KL(f(X)||g(x))+KL(g(X)||f(x)))。

4.贾里尼克八卦录

1.大学阶段,人的理解能力要强很多。
2.成绩优异比不上因为兴趣的持续后动力。

5.布尔代数与搜索引擎

技术分为两种,原理称之为道,实现方法称之为术。建立一个搜索引擎,大致需要做三件事情:1.自动下载尽可能多的网页;2.建立快速有效的索引;3.根据相关性对网页进行公平排序。因此搜索产品都可以提炼成:下载、索引和排序,这就是搜索引擎的道。

对于文献检索或搜索引擎,通常是用户先输入一个关键词,接着来查找哪些文献或网页包含这个关键词,包含则为1,不包含则为0,在布尔代数的世界里,万物都是可以量子化的。这样我们就可以建立一张简单的索引表,用一个很长的二进制串来表示一个关键字是否出现在每篇文献中。即:每一行对应一个关键字,每一列对应一篇文献,常见的搜索引擎会对所有的词都进行索引。为了排名方便,索引中可能还需要一些附加信息,因此整个索引表就十分之大,通常都是通过分布式的方式储存到不同的服务器上

数学之美阅读笔记(1)_第2张图片

6.图论和网络爬虫

图的遍历策略通常分为两种:1.深度优先(DFS),2.广度优先(BFS)。深度优先指的是一条路走到黑,先浪迹天涯,没钱了再回头;广度优先则是先把窝边草吃完,再开辟更远的芳草。不管哪种方式,都应该浪过的地方记录下来,以免漏网之鱼或者再回到记忆之处。

互联网虽然复杂,但事实上就是一张大网,换句话说每个页面当做一个节点,把页面中的超链接看做为弧,就是一个巨大的图。使用图的遍历算法,自动访问大网中的每一个页面并保存下来,这样的程序就是我们所说的“网络爬虫”(Web Crawlers),正如上面所说的要记录风流往事,在网络爬虫中,我们使用一种“散列表”来记录网页是否已经下载(URL)的信息。基本上网络爬虫使用的是BFS

7.PageRank算法

今天的搜索引擎对于上述中的关键字布尔运算,都会返回成千上万条结果,那如何对这些网页进行排序,将高质量的网页排在前面而不是那些莆田系呢?一般排名取决于两个因素:网页的质量网页的相关性(当然百度多了个money),PageRank就是衡量网页的质量一种经典方法。

PageRank算法的核心思想是:被用户访问越多的网页质量可能越高。下面用一个通俗的例子来解释这一原理,上面已经提到,可以将互联网看做一张大网,假设现在我们的网络拓扑图如下所示:

数学之美阅读笔记(1)_第3张图片

最简单的是,我们假设停留在一个页面时,跳转到其链接到的页面的概率相同,例如从网页A跳转到B、C、D的概率各为1/3,这样我们可以根据网络的拓扑结构,定义出上图的转移矩阵:(例如图中的第一行就表示从四个网页各自跳转到网页A的概率)

数学之美阅读笔记(1)_第4张图片

然后,设初始时每个页面的rank值为1/N,这里就是1/4。按A-D顺序将页面rank为向量v:

数学之美阅读笔记(1)_第5张图片

因此用M的第一行乘以v的第一列,所得结果就是页面A最新rank的合理估计,同理,M*v的结果就分别代表A、B、C、D新rank值:

数学之美阅读笔记(1)_第6张图片

然后用M再乘以这个新的rank向量,又会产生一个更新的rank向量。迭代这个过程,可以证明v最终会收敛,即v约等于Mv,此时计算停止。最终的v就是各个页面的pagerank值。例如上面的向量经过几步迭代后,大约收敛在(1/4, 1/4, 1/5, 1/4),这就是A、B、C、D最后的pagerank。当然这只是最简单的情形,在实际应用中还需要考虑很多的特殊情形,譬如:Dead Ends、平滑处理、反作弊等。pagerank算法被评选为数据挖掘十大经典算法,用惯了Google,就再也不相信Baidu了…【待续】

你可能感兴趣的:(学习)