HMM——求观测序列的概率

 给定模型 \lambda = \left ( \pi ,A,B \right ) 以观测序列O = \left \{o_{1},o_{2} ,...,o_{T} \right \}计算出现的概率P(O | \lambda )

1.暴力求解

        要求给定模型\lambda = \left ( \pi ,A,B \right )下观测序列O = \left \{o_{1},o_{2} ,...,o_{T} \right \}出现的概率,观测状态由隐藏状态生成。故如果我们能把所有的隐藏状态序列都给列出来,再结合生成观测状态概率 (B) 即可求得观测序列出现概率:

P\left ( O|\lambda \right )=\sum_{I}^{}P\left ( O,I|\lambda \right )     

P\left ( O,I|\lambda \right )=P\left ( I|\lambda \right )P\left ( O|I,\lambda \right )

当前状态只和前一状态有关

        P\left ( I|\lambda \right ): 在给定模型下,一个隐藏状态序列出现的概率,则可由初始状态 (π) 、隐藏状态转移概率 (A)  即可求得:

I=\left \{ i_{1}, i_{2},..., i_{T} \right \}  

P\left ( I|\lambda \right )=\pi _{i_{1}}a _{i_{1}i_{2}}a _{i_{2}i_{3}}...a _{i_{T-1}i_{T}}

某个观测只和生成他的状态有关

        P\left ( O|I,\lambda \right ): 对于固定的隐藏序列及模型,结合生成观测状态概率 (B) 即可求得:

P\left ( O|I,\lambda \right )=b_{i_{1}}\left ( o_{i_{1}} \right )b_{i_{2}}\left ( o_{i_{2}} \right )...b_{i_{T}}\left ( o_{i_{T}} \right )

扫描二维码关注公众号,回复: 15145140 查看本文章

        综上所述

 P\left ( O,I|\lambda \right )=P\left ( I|\lambda \right )P\left ( O|I,\lambda \right )=\sum_{i_{1},i_{2},...,i_{T}}^{}\pi _{i_{1}}b_{i_{1}}\left ( o_{i_{1}} \right )a _{i_{1}i_{2}}b_{i_{2}}\left ( o_{i_{2}} \right )a _{i_{2}i_{3}}...a _{i_{T-1}i_{T}}b_{i_{T}}\left ( o_{i_{T}} \right )

        复杂度分析:假设状态数为 N 个,观测状态序列长为 T,则则共有N^{T}种隐藏状态序列,每种序列都需要计算相应概率,故 O\left ( TN^{T} \right )

2.前向算法

        给定 t 时刻的隐藏状态为 i ,观测序列为 Y=\left \{y_{1},y_{2} ,...,y_{t} \right \}的概率叫做前向概率

        \alpha _{i}\left ( t \right )=p\left ( y_{1},y_{2},...,y_{t},q_{t}=i|\lambda \right )

         当t = T 时,\alpha _{i}\left ( T \right )=p\left ( y_{1},y_{2},...,y_{T},q_{T}=i|\lambda \right ),此式子表示在最后一个时刻,观测序列为\left ( y_{1},y_{2},...,y_{T} \right )且最后一个隐藏状态位于 i 号上时的概率。

        假设状态数为 N ,那么:

P\left ( Y|\lambda \right )=\sum_{i}^{N} \alpha _{i}\left ( T \right )

        当前状态只和前一状态有关,故\alpha _{i}\left ( T \right )可由前一时刻的前向概率\alpha _{1-N}\left ( T-1 \right )递推获得,这个看起来就是一个动态规划的问题了。

        在第一个时刻:

\alpha _{i}\left ( 1 \right )=P\left ( y_{1},q_{1}=i|\lambda \right )=\pi _{i}b_{iy_{1}}

        表示在第一个时刻,观测序列为 y_{1} 且 q_{1}=i 的前向概率。

        现在已知第 t 时刻,状态为 j 的前向概率为\alpha _{j}\left ( t \right ),则第 t + 1 时刻,状态为 i 的前向概率为:

        \alpha _{i}\left ( t+1 \right )=\left ( \sum_{j}^{N}\alpha _{j}\left ( t \right )a_{ji} \right )b_{iy_{t+1}}

        有第一时刻的前向概率,根据 t 时刻到 t + 1 时刻的递推公式即可求得\alpha _{i}\left ( T \right ),从而得到:

        P\left ( Y|\lambda \right )=\sum_{i}^{N} \alpha _{i}\left ( T \right )

        计算复杂度分析:每一个时刻有 N 种状态,每种状态可以由前一时刻的 N 中状态求得,一共有 T 个时刻,故为O\left ( TN^{2} \right )

        

猜你喜欢

转载自blog.csdn.net/weixin_43284996/article/details/127322556
HMM