您的位置:首页 > 其它

数学之美读书笔记

2016-07-29 16:38 316 查看

数学之美读书笔记

数学的美妙在于一个好的方法,常常是最简单明了的方法。数学之美从本质上讲解了自然语言处理,搜索等的算法,为什么用这样的算法以及如何用,如何调优。下面的模块不是按章节来总结,而是根据我的个人理解进行了模块化的总结。

 

统计语言模型和分词

前三章主要讲统计语言模型,目前用的比较多的是n-gram,n-pos模型,是今天所有自然语言处理的基础。原理很简单,一个句子是否合理,就看它的可能性大小如何。数学上描述是:

 

假设S 表示某一个有意义的句子,由一连串特定顺序排列的词w1, w2,...,wn组成,这里n是句子的长度。现在,我们想知道S在文本中出现的可能性,也就是数学上所说的S的概率P(S).

 

P(S) = P(w1,w2,...,wn)

 

利用条件概率公式,

 

P(S) = P(w1)*P(w2|w1)*P(w3|w1,w2)  .... * P(wn|w1,w2,...wn-1)

 

实际中,一般用二元语言模型,马尔科夫假设,即任意一个词出现的概率只与他前面一个词有关系,即

 

P(S) = P(w1)* P(w2|w1)* ... * P(wn|wn-1)

 

当数据量大的时候,我们可以用词出现的频率来计算上述概率,因此问题就解决了。但实际工程中,由于语料库不可能达到理论上的全面完整,会出现零概率等问题,这时候引入了一些平滑方法,如图灵平滑方法。

 

谈到分词,最直接想到的方法就是字典匹配,这种方法在复杂性不高的前提下,取得了还算满意的效果,但它毕竟太简单了,遇到稍微复杂的问题,就解决不了。比如“北京-大学生”,而不是“北京大学-生”。统计语言模型成功地消除了这种二义性问题,这是统计语言模型很成功的应用。

 

隐马尔科夫模型

马尔科夫链由状态和状态转移矩阵组成,特点是下一时刻的状态只与当前状态有关。隐马尔科夫模型是马尔科夫链的扩展:任一时刻的状态是不可见的。所以观察者设法通过观察到一个状态序列s1,s2,s3...sT,
来推测转移概率函数。但是隐马尔科夫模型在每个时刻t会输出一个符号Ot,且Ot只跟st相关且仅跟st相关。

 

基于马尔科夫假设和独立输出假设,可以计算出某个特定状态序列s1,s2,s2...产生输出符号o1,o1,o3...的概率。

 

 

 

 

 

隐马尔可夫模型有三个基本问题:

 

1. 给定一个模型,如何计算某个特定的输出序列的概率

2. 给定一个模型和某个特定的输出序列,如何找到最可能产生这个输出的状态序列

3. 给定足够量的观测数据,如何估计隐马尔可夫模型的参数

 

分别对应的解决办法:

 

1. Forward-backward

2. Viterbi

3. Baum-welch

 

这里不对每一个具体的算法做解释了,请查阅相关资料。

 

信息的度量和作用

信息熵表示不确定性。

 

 

 

H(X) >= H(X|Y),说明多了Y的信息之后,不确定性降低了。语言模型中的意义是,二元语言模型的不确定性小于一元语言的不确定性。

 

互信息是两个事件相关性的度量。

 
相对熵,也称为交叉熵,在英语中被称为Kullback Leibler Divergence,也用来衡量相关性。

 
不必关心公式本身,只需要记住下面结论:
1. 对于两个完全相同的函数,相对熵为0
2. 相对熵越大,差异越大;越小,差异越小
3. 对于概率分布或者概率密度函数,如果取值均大于零,相对熵可以度量两个随机分布的差异性
 
相对熵是不对称的,一种新的相对熵计算方法:
 
相对熵可以用来衡量两段信息的相似度,如文章相似性。Google的自动问答系统用的就是相对熵来衡量两个答案的相似性。
 

搜索引擎

搜索引擎的本质是下载,索引和排序。我没做过搜索引擎,做过推荐引擎,不过推荐和搜索的本质上是一样的,也是基于这三种基本服务。

 

互联网可以看成一个图,每个网页是一个节点,网页上的链接看成是边,网络爬虫实际上就是图的遍历算法。工程中,爬虫原理基本上是BFS,当然DFS也混合使用,另外还需要维护一张URL表来记录哪些网站已经下载过了。

 

索引的原理是最简单的布尔运算

 

基于图的pagerank排序算法

 

文本分类

文本距离的度量一般用余弦相似度

奇异值分解SVD可以得到词-词类,词类-文章类,文章类-文章关系矩阵,Google已经实现基于Mapreduce的SVD的分解算法。

信息指纹及应用

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息