Hidden Markov Models Forward算法

        Hidden Markov Models中的问题一,给定一个隐马尔科夫模型高效计算某一输出观察序列的概率。这是一个评估的问题。例如:HMMs最经典的例子隐藏的天气状态和观察的海藻湿度状态的例子,给定几个隐马尔科夫模型(春季、夏季、秋季、冬季模型),通过计算不同模型下指定观察序列的概率,推断这个观察序列是在哪个季节。天气状态N={sunny, cloudy, rainy},海藻的湿度状态M={dry, dryish, damp, soggy}。假设连续3天海藻湿度的观察结果是(dry, damp, soggy),这三天每一天都可能是sunny, cloudy, rainy。这样在隐马尔科夫模型下的观察序列的概率P(dry, damp, soggy)=P(dry, damp, soggy| sunny, clody, rainy)+P(dry, damp, soggy| sunny, sunny, sunny)+...+P(dry,rainy, rainy, rainy),即找到每一种隐藏状态组合下的观察序列的概率,这里隐藏状态组合有种。穷举是不可行的,这时需要Forward算法来进行计算。

        Forward算法本质就是计算每一个状态的局部观察序列的概率,将这些局部观察概率最终汇总为整个观察序列的概率。

        下面3张图分别是在时刻状态分别为Sunny, Cloudy, Rainy的局部观察序列(Dry, Damp)的概率。

图1  图2

图3


        下面3张图分别是在时刻状态分别为Sunny, Cloudy, Rainy的观察序列(Dry, Damp, Soggy)的概率。将这些概率相加,就是P(O)的概率了。

图4 图5

图6

        

Forward Algorithm步骤:

        1. 初始化:当t=1时,没有任何前置的状态,所以

        2. 递归:

        3. 最终:

这就是整个计算过程。


举例:

O: (dry, damp, soggy)

: P(sunny)=0.63, P(Cloudy)=0.17, P(Rainy)=0.20

A状态转移矩阵

 SunnyCloudyRainy
Sunny0.50.3750.125
Cloudy0.250.1250.625
Rainy0.250.3750.375
B混淆矩阵

 DryDryishDampSoggy
Sunny0.600.200.150.05
Cloudy0.250.250.250.25
Rainy0.050.100.350.50

Step 1:初始化 t=1

=P(sunny)*P(dry|sunny)=0.63*0.60=0.378;

=P(cloudy)*P(dry|cloudy)=0.17*0.25=0.0425;
=P(rainy)*P(dry|rainy)=0.20*0.05=0.01;

Step 2:递归

t=2:

=(0.378*0.5+0.0425*0.25+0.01*0.25)*P(damp|sunny)

                =0.202125*0.15=0.0303875;

=(0.378*0.375+0.0425*0.125+0.01*0.375)*P(damp|cloudy)

                =0.1508125*0.25=0.037703125;

=(0.378*0.125+0.0425*0.625+0.01*0.375)*P(damp|rainy)

               =0.0775625*0.35=0.027146875;

t=3:

=(0.0303875*0.5+0.037703125*0.25+0.027146875*0.25)*P(soggy|sunny)

                =0.03140625*0.05=0.0015703125

=(0.0303875*0.375+0.037703125*0.125+0.027146875*0.375)*P(soggy|cloudy)

                =0.02628828125*0.25=0.00657207031

=(0.0303875*0.125+0.037703125*0.625+0.027146875*0.375)*P(soggy|rainy)

               =0.03754296875*0.5=0.01877148437


Step 3:最终

P(O)==0.02691386718=2.691386718%


建议大家可以看看Reference中的链接,这里面有个Java Applet的例子,我的图片都是引用了这个例子的。


Reference: Hidden Markov Models Forward Algorithm



评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值