数学之美3

第5章     隐含马尔可夫模型

到目前为止,它一直被认为是解决大多数自然语言处理问题最为快速、有效的方法。

预备知识

下面,我们通过一个通信模型来认识隐马尔科夫模型。下图表示了一个典型的通信系统:

隐含马尔科夫模型

其中s1,s2,s3…表示信息源发出的信号,比如手机发送的信号。o1,o2,o3…是接收器(另一部手机)接收到的信号。通信中的解码就是根据接收到的o1,o2,o3…还原发送信号s1,s2,s3…

在通信中,如何根据接收端的观测信号o1,o2,o3…来推测信号源发送的信息s1,s2,s3…呢?只需要从所有的源信息中找到可能产生出观测信号的那一个信息。用概率论的语言来描述,就是在已知o1,o2,o3…的情况下,求得令条件概率P(s1,s2,s3…|o1,o2,o3…)达到最大值的那个信息串s1s2s3…,即:

s1,s2,s3… =  Arg Max P(s1,s2,s3…|o1,o2,o3…);

其中Arg是参数Argument的缩写,表示能获得最大值的那个信息串。该公式不易求解,可以使用贝叶斯公式将其等价变形为:

P(s1,s2,s3…|o1,o2,o3…)= P(o1,o2,o3…|s1,s2,s3…)* P(s1,s2,s3…)/ P(o1,o2,o3…);

其中,P(o1,o2,o3…|s1,s2,s3…)表示信息s1,s2,s3…在传输后变成接收信号o1,o2,o3…的可能性;而P(s1,s2,s3…)表示s1,s2,s3…本身是一个在接收端合乎情理的信号的可能性;最后,P(o1,o2,o3…)表示在发送端产生信息o1,o2,o3…的可能性。一旦信息o1,o2,o3…产生了,就不会改变,所以,P(o1,o2,o3…)可以看做一个常数。因此上面的公式可以等价变成:

P(o1,o2,o3…|s1,s2,s3…)* P(s1,s2,s3…);

这都是由果索因,语音识别也是听着去猜测说话者要表达的意思,机器翻译也是,自动纠错也是。几乎所有的NLP问题都可以等嘉诚通信的编解码问题。

马尔科夫链

前面都是铺垫,最为后面讲述的材料。要想理解隐马尔科夫模型,我们先了解一下什么事马尔科夫链。

19世纪,概率论的发展对随机变量的研究发展到对随机变量的时间序列s1,s2,s3…st…随机过程的研究。随机过程要比随机变量复杂得多。首先,在任何一个时刻t,对应的状态St都是随机的。其次,任何一个状态St的取值都可能和周围其他的状态相关。这样随机过程就有了两维的不确定性。P(St| S1,S2,S3…,St-1,…).马尔科夫为了简化问题,提出了一种简化的假设,即随机过程中各个状态St的概率分布,只与它前一个状态St-1有关,即:

P(St|S1,S2,S3…,St-1,…)=P(St|St-1);

当然,这种假设未必适合所有的应用,但是至少对以前很多不好解决的问题给出了近似解。符合这个假设的随机过程就是传说中的马尔科夫过程,也称为马尔科夫链。

隐含马尔科夫模型

隐含马尔科夫模型是上述马尔科夫链的一个扩展:任何时刻t的状态St是不可见的。所以观察者设法通过观察到一个状态序列S1,S2,S3…,St…来推测转移概率等参数。但是,隐含马尔科夫模型在每个时刻t会输出一个符号Ot,而且OtSt相关且仅和St相关。这个被称为独立输出假设。隐含马尔科夫模型的结构如下:其中隐含的状态S1S2S3是一个典型的马尔科夫链。因此将这种模型称为隐含马尔科夫模型

隐含马尔科夫模型

基于马尔科夫假设和独立输出假设,我们可以计算出某个特定的状态序列S1,S2,S3…产生输出符号O1,O2,O3…的概率。

P(o1,o2,o3…s1,s2,s3…)= P(St|St-1)*P(Ot|St)            1

又因为Ot仅和St相关,所以:

P(o1,o2,o3…|s1,s2,s3…)=  P(Ot|St)           2   //根据OiSi的相关性得到

P(s1,s2,s3…)=  P(St|St-1)                       3   //由马尔科夫链得到

然后把(2)和(3)代入

P(o1,o2,o3…s1,s2,s3…)P(o1,o2,o3…|s1,s2,s3…)* P(s1,s2,s3…)

中,即可得到公式(1);这就是隐含马尔科夫模型。

许多自然语言的处理问题和通信的解码问题是等价的,完全可以用隐含马尔科夫模型来解决。隐含马尔科夫模型最成功的应用最早是语音识别,还有机器翻译、图像处理、基因序列以及股票投资等。

围绕隐含马尔科夫模型,有三个基本问题:

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

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

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


第二个问题:维特比解码算法

第三个问题:下面将会讨论的模型训练问题

分别对应的解决办法:

 

1. Forward-backward

2. Viterbi

3. Baum-welch

 

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

(无监督训练方法)鲍姆-韦尔奇算法:

两个不同的隐含马尔科夫模型可以产生同样的输出信号,因此,仅仅通过观测到的输出信号来倒退产生他的隐含马尔科夫模型,可能会得到多个合适的模型。但是总会是一个模型Mtheta1 比另一个模型Mtheta2更有可能产生观测到的输出,而这个算法要做的就是找出这个theta(对应为模型的参数)。具体思想如下:

首先找到一组能够产生输出序列O的模型参数(显然他们是一定存在的,因为转移概率P和输出概率Q为均匀分布时,模型可以产生任何输出,当然包括了我们观察到的输出O)现在,有了这样的一个初始模型,我们称之为M0.需要在这个基础上找到一个更好的模型。假定解决了前两个问题,不但可以找出这个模型产生O的概率,而且可以找到这个模型产生O的所有可能路径以及这些路径的概率。这些路径,实际上标志着每个状态经历了多少次,到达了哪些状态,输出了哪些符号,因此可以将他们看作标注的训练数据。从而可以算出对应参数,得到新的模型。称之为一次迭代。


可以证明,这个新模型的概率更大。


不断迭代,就是鲍姆-韦尔奇算法的原理。这个算法的每一次迭代都是不断的估计新的模型参数,使得输出的概率达到最大化,因此这个过程被称为期望值最大化。简称EM过程能找到局部最优点,不能找到全局最优点。是一种无监督的算法。


 

一直怀着很好奇的心情学习了隐含马尔科夫模型,当然现在只是了解了一些基本知识,在这里和大家一起分享下,肯定有许多不足之处,希望能多讨论,多指点。关于隐含马尔科夫的训练方法(鲍姆----韦尔奇算法)这里就不作介绍了。


第六章 信息的度量和作用

1、信息熵:信息的度量 
对于任一个随机变量 X ,它的信息熵定义如下:

H(X)=xXP(x)logP(x)(1.1)

变量的不确定性越大,信息熵越大,所需要的信息量越大。

2、信息的作用:消除不确定性 

信息往往与不确定性挂钩,在没有任何信息的情况下,一个事物内部是笼统的不确定的,当我们得到越来越多的信息的时候,事物才会被确定下来。所以信息量越大我们越能确定一个事物。所以信息是为了消除不一致性的

比如说搜索,我们输入一组关键词会得到许多包含这些关键词的网页,那么这些关键词就是信息,这些信息从上亿的网页中挑选出了一部分,从而消除了部分不确定性。那么我们想继续的消除不确定性得到更精确的搜索结果要怎么办,那就需要得到更多的信息,而不仅仅是对现有的信息玩一些公式数学的游戏,这里更多的信息比如包括网站质量的排名等等。再比如在自然语言处理中,我们通过一元模型来统计词频,或者二元模型乃至更高的模型根据上下文信息来确定某个词语,这都是信息的应用。

当然这里我们说的获取更多的信息指的是相关信息,不然也没什么用。


U=UI(2.1)
其中 U 是不确定性, I 是信息熵, U 是新的不确定性。公式说明,没有信息,任何公式或者数字游戏都无法排除不确定性。

3、条件熵 
条件熵公式:

H(X|Y)=xXyYP(x,y)logP(x|y)(3.1)

公式说明,在了解Y的情况下,关于X的不确定性下降了。语言模型中的意义是,二元语言模型的不确定性小于一元语言的不确定性。

4、互信息:相关性度量 
互信息公式:

I(X;Y)=xXyYlogP(xy)P(x)P(y)(4.1)

I(X;Y)=H(X)H(X|Y)(4.2)

公式4.2表明,互信息的意义表示:X的不确定性在了解了Y之后的下降值。 H(X) 表示X的不确定性, H(X|Y) 表示X在了解了Y之后的不确定值。互信息是一个取值在0到 min(H(X)H(Y)) 之间的函数,当X和Y完全相关时,它的取值是1;当二者完全无关时,它的取值是0。

互信息被广泛用于度量一些语言现象的相关性。例如词语的二义性(或称歧义性)。

5、相对熵 
相对熵也用来衡量相关性,但和变量的互信息不同,它用来衡量两个取值为正数的函数的相关性,其定义如下:

KL(f(x)||g(x))=xXf(x)logf(x)g(x)(5.1)

从公式中得出结论: 
(a.)对于两个完全相同的函数,它们的相对熵为零; 
(b.)相对熵越大,两个函数的差异性越大;反之,相对熵越小,两个函数的差异性越小; 
(c.)对于概率分布或者概率密度函数,如果取值均大于零,相对熵可以度量两个随机分布的差异性。

需要指出的是,相对熵不是对称的,即:

KL(f(x)||g(x))KL(g(x)||f(x))(5.2)

这样使用起来很不方便,为了让其对称,詹森和香农提出一种新的相对熵的计算方法,将公式5.1两边去平均,即: 
JS(f(x)||g(x))=12[KL(f(x)||g(x))+KL(g(x)||f(x))](5.3)

相对熵可以用来衡量两段信息的相似度,如文章相似性。Google的自动问答系统用的就是相对熵来衡量两个答案的相似性。相对熵,衡量的是两个分布函数的相似性,TF-IDF的理论依据就是它。

附件:汉语信息熵和语言模型的复杂度 吴军&&王作英


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值