隐含马尔科夫模型(数学之美)

来源:互联网 发布:c罗身体数据 编辑:程序博客网 时间:2024/06/16 18:33

背景

在自然语言的处理或者语音识别方面,我们可以跟编码解码进行类比,比如说从汉语到英语的翻译,说话者讲的是汉语,从汉语到英语的翻译过程可以理解为编码。翻译成英文的效果根据上文中统计语言模型提到的概率来评价,概率越大,翻译的效果越好。所以只要找到条件概率最大即为翻译后的结果。公式表示如下:

s1,s2,s3,...=Maxall s1,s2,s3...P(s1,s2,s3...|o1,o2,o3...)

利用贝叶斯公式:
Maxall s1,s2,s3...P(s1,s2,s3...|o1,o2,o3...)=Maxall s1,s2,s3...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,...的可能性。
因为一般来说P(o1,o2,o3,...)的可能性是固定的,所以上面的式子可以简化为:
Maxall s1,s2,s3...P(o1,o2,o3,...|s1,s2,s3,...)P(s1,s2,s3,...)

隐含马尔科夫模型

针对上面提出的公式,其实可以使用隐含马尔科夫模型来估计。

马尔科夫链

举个例子来说,长江水面高度的监控其实是一件很重要的事情,长江水面的高度可能跟前些天的水面高度以及是否下雨等天气相关。所以要预测长江水面高度是一件很复杂的事情。马尔科夫为了简化问题,提出了一种假设—-假设当前的状态只与它的前一个状态相关,即P(st|s1,s2,s3,...st1)=P(st|st1).
这个假设就是马尔科夫假设。而符合这个假设的随机过程称为马尔科夫过程,也称为马尔科夫链

举例

这里写图片描述
如上图所示,表示一个简单的离散马尔科夫链。其中四个长方形表示四个状态,每条边表示状态转换,边上的权值表示转换概率。从上图可知从p1到p2的转换概率为1,即P(st+1=p2|st=p1)=1。p2到p3的概率为0.7,即P(st+1=p3|st=p2)=0.7

综述(计算转移概率)

因为马尔科夫链中每个状态只与前一个状态相关,所以我们在看到一个马尔科夫链时,可以根据统计的方式来计算概率,比如说P(st+1|st),如果计算这个概率我们只需要统计st出现的次数nt,以及从st转换到st+1的次数nt,t+1,最终的结果为

P(st+1|st)=ntnt,t+1

隐含马尔科夫模型

隐含马尔科夫模型是马尔科夫模型的拓展,即任意时刻的状态是不可观测的。所以我们无法直接观测一个马尔科夫链,以及根据根据马尔科夫链计算后续的转移概率。但是隐含马尔科夫模型在任意时刻会输出一个状态ot,且这个状态只与st相关,这个被称为独立输出假设。具体如下图所示:
这里写图片描述
基于马尔科夫假设和独立输出假设,可以计算出某个特定的状态序列s1,s2,s3...产生输出状态o1,o2,o3...的概率:

P(s1,s2,s3...,o1,o2,o3...)=tP(st|st1)P(ot|st)

最后

在一开始提出的式子Maxall s1,s2,s3...P(o1,o2,o3,...|s1,s2,s3,...)P(s1,s2,s3,...)中,根据上面的介绍可得:

P(o1,o2,o3,...|s1,s2,s3,...)=tP(ot|st)

P(s1,s2,s3,...)=tP(st|st1)

最后至于最大值的求解可以使用维特比算法。

阅读全文
1 0
原创粉丝点击