隐马尔可夫模型三个基本问题以及相应的算法
一、隐马尔可夫模型(Hidden Markov Model, HMM)
隐马尔可夫模型是一种统计模型,它描述由一个隐藏的马尔可夫链随机生成的不可观测的状态序列,再由各个状态生成一个观测而产生观测序列的过程。HMM广泛应用于语音识别、自然语言处理、生物信息学等领域。
二、三个基本问题
1. 概率计算问题(Forward-Backward算法)
给定模型λ=(A,B,π)和观察序列O=(o1,o2,…,oT),计算在模型λ下观察序列O出现的概率P(O|λ)。
解法:前向-后向算法(Forward-Backward algorithm)。前向算法计算从t=1到t=T时,状态为i且观察值为o1,o2,…,ot的概率;后向算法计算从t=T到t=1时,状态为i且观察值为ot+1,ot+2,…,oT的概率。最终将两者相乘得到P(O|λ)。
2. 学习问题(Baum-Welch算法)
给定观察序列O=(o1,o2,…,oT),估计模型参数λ=(A,B,π)。
解法:Baum-Welch算法(EM算法的一种特例)。该算法分为两步:E步计算在当前模型下,每个时刻处于每个状态的概率;M步根据E步计算出的概率,重新估计模型参数。重复以上两步直至收敛。
3. 预测问题(Viterbi算法)奥迪r4报价
给定模型λ=(A,B,π)和观察序列O=(o1,o2,…,oT),到最可能的状态序列Q=(q1,q2,…,qT),使得P(Q|O,λ)最大。
解法:Viterbi算法。该算法利用动态规划的思想,在t=1时初始化,逐步向后递推,到在t=T时概率最大的状态序列Q。具体实现中,使用一个矩阵delta记录当前时刻各个状态的最大概率值,以及一个矩阵psi记录当前时刻各个状态取得最大概率值时对应的前一时刻状态。最终通过回溯到最可能的状态序列Q。
三、相应的算法
一吨柴油等于多少升
1. Forward-Backward算法
输入:HMM模型λ=(A,B,π)和观察序列O=(o1,o2,…,oT)
输出:观察序列O在模型λ下出现的概率P(O|λ)
过程:
丽水二手车1. 初始化:$$\alpha_1(i)=\pi_ib_i(o_1),i=1,2,…,N$$
2. 递推:$$\alpha_t(i)=\left[\sum_{j=1}^N\alpha_{t-1}(j)a_{ji}\right]b_i(o_t),i=1,2,…,N,t=2,3,…,T$$
3. 终止:$$P(O|λ)=\sum_{i=1}^N\alpha_T(i)$$
4. 后向算法同理,只是从后往前递推。初始化:$$\beta_T(i)=1,i=1,2,…,N$$ 递推:$$\beta_t(i)=\sum_{j=1}^Na_{ij}b_j(o_{t+1})\beta_{t+1}(j),i=1,2,…,N,t=T-1,T-2,…,1$$ 终止:无需计算,因为已经在前向算法中计算过了。
2. Baum-Welch算法
输入:观察序列O=(o1,o2,…,oT)
输出:HMM模型λ=(A,B,π)
过程:
初始化模型参数λ=(A,B,π)
太原限行时间新规2021年6月重复以下步骤直至收敛:
E步:
计算前向概率α和后向概率β:
根据α和β计算时刻t处于状态i的概率γ和时刻t处于状态i且时刻t+1处于状态j的概率xi:
M步:
根据γ和xi重新估计模型参数A,B,π。
3. Viterbi算法
输入:HMM模型λ=(A,B,π)和观察序列O=(o1,o2,…,oT)
输出:最可能的状态序列Q=(q1,q2,…,qT)
过程:
保时捷怎么样1. 初始化:$$\delta_1(i)=\pi_ib_i(o_1),i=1,2,…,N$$
$$\psi_1(i)=0,i=1,2,…,N$$
2. 递推:$$\delta_t(i)=\max_{j=1}^N[\delta_{t-1}(j)a_{ji}]b_i(o_t),i=1,2,…,N,t=2,3,…,T$$
高速超速10%不到20%怎么处罚$$\psi_t(i)=argmax_{j=1}^N[\delta_{t-1}(j)a_{ji}],i=1,2,…,N,t=2,3,…,T$$
3. 终止:$$P^*=\max_{i=1}^N\delta_T(i)$$
4. 回溯:从T到1依次求出每个时刻的状态qi:
初始化$${q_T}^*=argmax_{i=1}^N[\delta_T(i)]$$
对于t=T-1,T-2,…,1,$${q_t}^*=\psi_{t+1}({q_{t+1}}^*)$$