隐马尔可夫模型(HMM)的MATLAB实现——Viterbi算法
维特比算法实际是用动态规划求解隐马尔可夫模型解码问题,即用动态规划求概率最大路径(最优路径)。代码中有示例,来自李航《统计学习方法》 function [Delta,Psi,P,I] = Viterbi(A,B,Pi,O) % 函数功能:利用维特比算法找到观测序列O的最优路径 % % 参考文献:李航《统计学习方法》 % % 思路: % 1,初始化 % delta_1(i) = Pi_i * b_i(o1), i = 1,2,...,N % psi_1(i) = o, i = 1,2,...,N % 2,递推,对于t = 2,3,...,T % delta_t(i) = max_1-from-1-to-N(delta_t-1(j) * a_ji) * b_i(ot), i = 1,2,...,N % psi_t(i) = arg max_1-from-1-to-N(delta_t-1(j) * a_ji), i = 1,2,...,N % 3,终止 % 最优路径概率P* = max_1-from-1-to-N(delta_T(i)) % 最优路径终点i*_T = arg max_1-from-1-to-N(delta_T(i)) % 4,最优路径回溯,对于t = T-1,T-2,...,1 % i*_t = psi_t+1(i*_t+1) % 最优路径I* = (i*_1,i*_2,