HMM之前向算法

HMM,隐马尔科夫模型。在5nlp上面讲的详细。

网址http://www.52nlp.cn/hmm-learn-best-practices-one-introduction

可以有这么一个有趣的联想。一对恋人中,女生有时候喜欢打男朋友,每天十二点可能发作一次。最奇怪是生气时候打,开心时候也打,有时候无缘无故平静还是打。晕。

(假设想当天十二点的心情需要参照前天十二点的心情。)能看到的就是妹子外在行动——打人,或者不打人。看不到的,就是隐含的变量:妹子的心情: 生气,平静,或者高兴。


那么对于这个事情可以这么建模。

隐马尔科夫模型M :

观测集合 V 为 {打人, 不打人}

状态集合 Q 为 {开心, 平静 , 生气}

状态转移矩阵 A   P( 今天心情 | 昨天心情)的矩阵 

混淆矩阵B    P( 当天天的表现| 当天的心情)的矩阵


对于评估问题,就是由给定的模型M(指定了某个妹子),观测到最近妹子打你的序列是O(打,不打,打,打,不打) 由上面模型需要计算观测序列出现的概率P(O | M)。

如果直接计算计算量太大了。

解决这种问题要用到前向算法。

前向算法需要关注的是,前向概率的定义(52nlp称之为局部概率)和 算法初值t = 1时候前向概率的计算。

前向概率在李航老师《统计学习方法》中的定义为:

给定隐马尔科夫模型 M  ,定义到时刻 t 部分观测序列为o_1, o_2, ……o_t,且状态为 q_i 的概率为前向概率,记作

a_t (i) = P( o_1, o_2,  ……o_t, i_t = q_t | M)

举个例子,求 t = 3 ,状态为 q_2的前向概率。

现在 t = 3 就是在t = 3 时看到观测序列为(打,不打,打), 并且现在 t = 3 时候妹子心情状态为平静的概率。


怎么求?看昨天情况呗。 昨天打没打你和今天打没打你无关,但是妹子昨天的心情会影响到妹子今天的心情。所以需要结合昨天妹子表现分别计算 昨天妹子生气,平静,高兴情况下是今天心情平静的概率。然后,和在这种平静情况下妹子打人的概率乘一乘,要求的前向概率就出来了。


目前有个大的问题就是,最初的那个观测(打)之前没有观测,怎求这个观测中的前向概率?看看512nlp的博客就会发现,小菜一碟的。

现在这个事情发生了,就这么认为:P(state | t = 1) = P(state),因此,t = 1 时的前向概率等于当前状态的初始概率乘以相关的混淆概率。


现在,将 t = 1 时候的观测为(打)时候的各种前向概率计算出来。

    利用昨天t = 1时候的前向概率信息,将t = 2 时候观测为(打,不打)时候前向概率计算出来。

    利用昨天t = 2时候的前向概率信息,将t = 3 时候观测为(打,不打,打)时候前向概率计算出来。

    …………

    利用昨天t = 4时候的前向概率信息,将t = 5 时候观测为(打,不打,打,打,不打)时候前向概率计算出来。

    再将t = 5 ,各种前向概率进行汇总,则求出我们想要的结果————指定妹子,观测到最近妹子打你的序列是(打,不打,打,打,不打) 由上面模型需要计算观测序列出现的概率P(O | M)。

          



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值