返回 经典机器学习 思维导图
中文·English
📊 经典机器学习ID: viterbi

HMM 维特比解码

Viterbi Decoding
🎯核心定义
解码问题是给定 λ=(A,B,π)\lambda = (A, B, \pi) 与观测 OO,求最可能的隐藏状态序列 q=argmaxqP(qO,λ)q^* = \arg\max_q P(q \mid O, \lambda)。维特比算法用动态规划维护 δt(j)\delta_t(j) — 到时刻 t 处于状态 j 且输出前 t 个观测的所有路径中的最大概率,递推
📌核心概述
δt(j)=maxi[δt1(i)aij]bj(ot)\delta_t(j) = \max_i[\delta_{t-1}(i)\, a_{ij}]\, b_j(o_t)
📌核心概述
同时用前驱表 ψt(j)=argmaxiδt1(i)aij\psi_t(j) = \arg\max_i \delta_{t-1}(i) a_{ij} 记录最优路径中 t−1 时刻的状态;初值 δ1(j)=πjbj(o1)\delta_1(j) = \pi_j b_j(o_1),终止取 P=maxjδT(j)P^* = \max_j \delta_T(j),再从 ψT\psi_T 沿表回溯(backtracking)得到整条最优状态序列。复杂度 O(N2T)O(N^2 T),与前向算法同阶。
💡使用场景
词性标注、命名实体识别、语音与手写识别中的最优路径搜索;面试常考维特比与前向算法对比、与贪心/束搜索的区别。
解决的核心痛点
穷举 NTN^T 条路径不可行;维特比与前向算法同样用 DP 缓存,但把“求和”换成“取 max”并保存前驱以重建轨迹,保证全局最优而非贪心逐点最优;代价是每步 O(N2)O(N^2) 比较,且必须保留完整 ψ\psi 表用于回溯(不能像评估那样滚动丢弃)。
🎯5 个高频面试考点 (Exam Points)
1
写出维特比递推 δt(j)=maxi[δt1(i)aij]bj(ot)\delta_t(j) = \max_i[\delta_{t-1}(i)a_{ij}]b_j(o_t) 及回溯过程,复杂度是多少?
2
维特比与前向算法的区别?(求和 vs 取 max、各自输出什么、为什么需要前驱表 ψ\psi)
3
为什么维特比能保证全局最优?与贪心逐点选择、束搜索有何不同?
4
给定具体例子(如 N=2N=2T=3T=3),手推最优状态路径并说明回溯如何工作?
5
维特比与 CRF/MEMM 推理有何联系(推断阶段共用同一 DP,只是势函数不同)?
📖 关联深度指南:📄 probabilistic-models
更新于 2026-08-12
🎯
检验攻克程度:针对「HMM 维特比解码」专属刷题排雷
做单选排雷题、推导选项机制,答错自动收录进专属错题本。
🚀 开始本考点专项刷题
上一个知识点HMM 前向算法 (评估)下一个知识点HMM 参数学习 Baum-Welch

🔗 更多 经典机器学习 知识点卡片

AdaBoost 算法手推Bagging 与随机森林GBDT 负梯度拟合混淆矩阵