第10章,隐马尔可夫模型(相关的python开源包是hmmlearn)
本章结构:
隐马尔可夫模型相关内容=⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧概率计算方法=⎩⎪⎨⎪⎧直接计算法(计算量过大)前向算法后向算法学习算法={监督学习方法Bsum−Welch算法预测算法={近似算法维特比算法
上述的三个小括号分别用来解决隐马尔科夫模型的三个问题:
(1)概率计算问题
(2)学习问题
(3)预测问题
书上的例子为:
|盒子|1 | 2 |3|4|
|–|--|–|--|
|红球数| 5 | 3 | 6 |8|
|白球数| 5 | 7 | 4 |2|
状态集合:
Q={盒子1,盒子2,盒子3,盒子4}
观测集合:
V={红,白}
初始概率分布
π=
(0.25,0.25,0.25,0.25)T
状态转移概率分布:
A=⎣⎢⎢⎡00.400100.4000.600.5000.60.5⎦⎥⎥⎤
观测概率:
B=⎣⎢⎢⎡0.50.30.60.80.50.70.40.2⎦⎥⎥⎤
观测概率矩阵第一列的意思就是每个盒子能观察到多少红色球.
#概率计算问题
10.2.1直接计算法
模型
λ=(A,B,π)
"想要的"的观测序列:
O=(o1,o2,⋅⋅⋅,oT)
根据模型判断上述观测序列出现的概率
P(O∣λ)
P(I∣λ)=πi1⋅αi1i2⋅αi2i3⋅⋅⋅αiT−1iT
这里的
πi1指的是你在"初始概率分布
π"序列中的第
i1个状态.
####然后是书上原话(start)#####################
对于固定的状态序列
I=(i1,i2,⋅⋅⋅,iT),观测序列
O=(o1,o2,⋅⋅⋅,oT)的概率是
P(O∣I,λ)=bi1(o1)bi2(o2)⋅⋅⋅biT(oT)
这个说法很拗口,这个"固定的状态序列"是啥意思?
也就是说整个隐马尔科夫转移过程还没发生,自己YY了一个状态转移序列,想知道这种序列发生的可能性.
上面提到的"观测序列"的意思是:我想要的"这个盒子之间跳转来、跳转去的序列I"输入这个模型
λ以后,出来我想要的"球颜色序列O"的概率多大
这里的I:input
这里的O:output
#######然后是书上原话(end)###################
O和I同时出现的联合概率是:
P(O,I∣λ)
=P(O∣I,λ)⋅P(I∣λ)
=πi1bi1(o1)ai1i2⋅bi2(o2)⋅⋅⋅aiT−1iTbiT(oT)
因为目标是
P(O∣λ)
P(O∣λ)=I∑P(O∣I,λ)P(I∣λ)
=i1,i2,⋅⋅⋅,iT∑πi1bi1(o1)ai1i2⋅bi2(o2)⋅⋅⋅aiT−1iTbiT(oT)
上面的东西呢,没啥用(因为计算复杂度太高),但是呢,还是要缕清楚,因为这样就知道这个"概率计算算法"是干嘛的了,也就是说:
给个模型,输入个序列(盒子状态序列),出来想要的序列(球颜色序列)概率是多少.
为了收拾这个烂摊子呢,出来了"前向算法"和"后向算法",注意,这两个算法和神经网络中的前向传输、后向传输没有任何关系.
#概率计算问题(完)