标签:
考虑一个简单的例子,我母亲在中国,而我在日本。每天下班以后,母亲会根据天气,有不同的活动。比如天气下雨会选择呆在家里,天气晴朗会出门买菜。有时候,母亲会和我说这天下班以后做了什么,我会根据她做了什么来猜测这天的天气。另外一个有用的信息是前一天的天气状况。通过综合母亲今天下班做了什么以及前一天的天气状况,我们有可能更好的预测今天的天气状况。
在这个例子当中,我们把母亲下班以后做了什么称为一个观测或者观测状态(observation),由字面意思就是我们已知的或者能直接观察到的事件。当天的天气是一个状态,这个是我们不知道的需要猜测的。
其次我们需要介绍什么叫马尔科夫链。马尔科夫链是因俄国数学家安德烈 马尔科夫得名,为状态空间中经过一个状态到另一个状态的随机过程。该过程要求无记忆性,下一状态的概率分布只由当前状态决定,在时间序列中它前面的事件均与它无关。在这个例子当中,我们可以把当天的天气当作一个状态。假设总共有三种天气{晴天,雨天,阴天},那么此事件的状态空间便是{晴天,雨天,阴天},从昨天的晴天到今天的雨天便是从一个状态转换到另一个状态的随机过程。[1]
其次我们假设今天是雨天的概率只由昨天的天气状况决定。之所以这样假设,主要有下面几点考虑 第一,今天的天气状况当然不止由昨天的天气决定,也和前天大前天的天气有一定关系,但是和昨天的天气状况关联最大。其次也是最重要的是为了计算上的简化。如果把前面的状况都考虑进来,当我们处理的事件序列非常长的时候,计算量将非常大。基于此方面考量,类似的简化有朴素贝叶斯中的假设,其假设所有特征相互独立。
我们举一个自然语言方面的例子来说明计算量上的简化,假设S表示某一个有意义的句子,由一连串特定顺序排列的词 w1,w2,...,wn 组成,n 是句子的长度。现在,我们想知道s在文本中出现的可能性,也就是数学上所说的S的概率P(S). 当然,可以把人类有史以来讲过的话统计一下,同时不要忘了统计几百年上千年间可能讲过的话,就知道这句话可能出现的概率了。当然这个无法实现的。因此我们需要一个模型来估算它。既然s= w1,w2,...,wn. 那么把p(S)展开表示:
\[p(s)=p(w_1|w_2,w_3,w_{i-1})\]
利用条件概率的公式,S这个序列出现的概率等于每一词出现的条件概率相乘,于是P(w1,w2,...,wn)可以展开为.
\[p(w_1,w_2,\cdots ,w_n)=p(w_1)\cdot p(w_1|w_2,w_3{})\cdots p(w_n|w_1,w_2\cdots w_{n-1})\]
其中P(w1)表示第一个词w1出现的概率;p(w2|w1)是在已知第一词的前提下,第二个词出现的概率;以此类推,不难发现到了词wn,它的出现概率取决于它前面的所有词。
从计算上来看,第一次的条件概率P(w1)很容易算,第二个词的条件概率P(w2|w1)也不麻烦,第三个词的条件概率P(w3|w1,w2)已经非常难算了,因为它涉及到三个变量w1,w2,w3,每个变量的可能性都是一种语言字典的大小。到了最后一个词wn,条件概率P(wn|w1,w2,...,wn-1)的可能性太多,无法估算了。
这个时候,我们回头看马尔科夫假设,下一状态的概率分布只由当前状态决定。每当遇到这种情况的时候,就假设任意一个词wi出现的概率只同它前面的词wi-1有关,于是这个问题就变得简单了p(S)展开
\[p(w_1,w_2,\cdots ,w_n)=p(w_1)\cdot p(w_1|w_2,{})\cdots p(w_n|w_n_-_1)\]
此公式对应的统计语言模型就是二元模型。
假定文本的每个词wi和前面的N-1个词有关,而与更前面的词无关,这样当前词wi的概率只取决于前面的N-1个词P(wi-n+1,wi-n+2,...wi-1)因此
\[p(w_i|w_1,w_2,\cdots ,w_i_-_1)=p(w_i|w_i_-_n_+_1,w_i_-_n_+_2,\cdots w_i_-_1)\]
公式1.4的这种假设被称为N-1阶马尔科夫假设,对应的语言模型成为N元模型(N-Gram Model). N=2的二元模型就是公式1.3,N=1的一元模型就是一个上下文无关模型,也就是假设当前词的出现的概率与前面的词无关。而在实际当中应用最多的就是N=3的三元模型,更高阶的就很少使用了。[2]
标签:
原文地址:http://www.cnblogs.com/ModifyRong/p/5541656.html