HMM问题一:求观测序列的概率
首先我们回顾下HMM模型的问题一。这个问题是这样的。我们已知HMM模型的参数 λ = ( A , B , Π ) \lambda = (A, B, \Pi) λ=(A,B,Π)。其中A是隐藏状态转移概率的矩阵,B是观测状态生成概率的矩阵, Π是隐藏状态的初始概率分布。同时我们也已经得到了观测序列 O = { o 1 , o 2 , . . . o T } O =\{o_1,o_2,...o_T\} O={ o1,o2,...oT},现在我们要求观测序列O在模型λ下出现的条件概率P(O|λ)。
暴力求解
乍一看,这个问题很简单。因为我们知道所有的隐藏状态之间的转移概率和所有从隐藏状态到观测状态生成概率,那么我们是可以暴力求解的。
我们可以列举出所有可能出现的长度为T的隐藏序列 I = { i 1 , i 2 , . . . , i T } I = \{i_1,i_2,...,i_T\} I={ i1,i2,...,iT},分布求出这些隐藏序列与观测序列 O = { o 1 , o 2 , . . . o T } O =\{o_1,o_2,...o_T\} O={ o1,o2,...oT}的联合概率分布P(O,I|λ),这样我们就可以很容易的求出边缘分布P(O|λ)了。
具体暴力求解的方法是这样的:首先,任意一个隐藏序列 I = { i 1 , i 2 , . . . , i T } I = \{i_1,i_2,...,i_T\} I={
i1,i2,...,iT}出现的概率是:
P ( I ∣ λ ) = π i 1 a i 1 i 2 a i 2 i 3 . . . a i T − 1      i T P(I|\lambda) = \pi_{i_1} a_{i_1i_2} a_{i_2i_3}... a_{i_{T-1}\;\;i_T} P(I∣λ)=πi1ai1i2ai2i3...aiT−1iT
对于固定的状态序列 I = { i 1 , i 2 , . . . , i T } I = \{i_1,i_2,...,i_T\} I={
i1,i2,...,iT},我们要求的观察序列 O = { o 1 , o 2 , . . . o T } O =\{o_1,o_2,...o_T\} O={
o1,o2,...oT}出现的概率是:
P ( O ∣ I , λ ) = b i 1 ( o 1 ) b i 2 ( o 2 ) . . . b i T ( o T ) P(O|I, \lambda) = b_{i_1}(o_1)b_{i_2}(o_2)...b_{i_T}(o_T) P(O∣I,λ)=bi1(o1)bi2(o2)...biT(oT)
则O和I联合出现的概率是:
P ( O , I ∣ λ ) = P ( I ∣ λ ) P ( O ∣ I , λ ) = π i 1 b i 1 ( o 1 ) a i 1 i 2 b i 2 ( o 2 ) . . . a i T − 1      i T b i T ( o T ) P(O,I|\lambda) = P(I|\lambda)P(O|I, \lambda) = \pi_{i_1}b_{i_1}(o_1)a_{i_1i_2}b_{i_2}(o_2)...a_{i_{T-1}\;\;i_T}b_{i_T}(o_T) P(O,I∣λ)=P(I∣λ)P(O∣I,λ)=πi1bi1(o1)ai1i2bi2(o2)...aiT−1iTbiT(oT)
然后求边缘概率分布,即可得到观测序列O在模型λ下出现的条件概率P(O|λ):
P ( O ∣ λ ) = ∑ I P ( O , I ∣ λ ) = ∑ i 1 , i 2 , . . . i T π i 1 b i 1 ( o 1 ) a i 1 i 2 b i 2 ( o 2 ) . . . a i T − 1      i T b i T ( o T ) P(O|\lambda) = \sum\limits_{I}P(O,I|\lambda) = \sum\limits_{i_1,i_2,...i_T}\pi_{i_1}b_{i_1}(o_1)a_{i_1i_2}b_{i_2}(o_2)...a_{i_{T-1}\;\;i_T}b_{i_T}(o_T) P(O∣λ)=I∑P(O,I∣λ)=i1,i2,...iT∑πi1bi1(o1)ai1i2bi2(o2)...aiT−1iTbiT(