让 AI 分清 HMM 的求和与最大值:最佳路径为何不是观测的全部概率

前天 3阅读

让AI解释隐马尔可夫模型时,“最可能”很容易把两件事混在一起:一串观测整体有多可能,以及哪条隐藏路径最可能产生它。前者要把路径概率加起来,后者只取一条最大路径。两步小例足够把差异算清。

让 AI 分清 HMM 的求和与最大值:最佳路径为何不是观测的全部概率

AI模型生成的概念插图:多条路径共同汇集,另有一条路径被突出;节点数量与连线不对应正文的精确HMM,也不是运行截图。

把模型与观测都固定下来

隐藏状态只有A、B,初始概率分别为0.6、0.4。从A出发转到A、B的概率为0.7、0.3;从B出发则为0.2、0.8。观测符号只有x、y,在A状态下出现x、y的概率为0.8、0.2,在B状态下为0.3、0.7。初始分布和每一行条件分布都加到1。

现在已经观察到连续两个符号x、y。需要枚举的隐藏路径是AA、AB、BA、BB,共四条。每条的联合概率依次乘:首状态概率、该状态发出x的概率、转移概率、末状态发出y的概率。不要把第二个发射概率仍取成x。

四条路径有同一个观测

AA得到0.6×0.8×0.7×0.2=0.0672;AB得到0.6×0.8×0.3×0.7=0.1008;BA得到0.4×0.3×0.2×0.2=0.0048;BB得到0.4×0.3×0.8×0.7=0.0672。最大的联合概率属于AB,为0.1008。

观测xy的概率则是四项总和0.24。0.1008不是xy的完整概率,因为其他三条隐藏路径也会产生xy。若已经给定观察结果xy,AB的后验概率是0.1008/0.24=0.42,而不是0.1008。这样便有三个不同对象:观测概率、最佳路径联合概率、最佳路径条件概率。

用两个递推独立对账

看到第一个x后,前向量为[0.48,0.12]。第二步到A的前向量是(0.48×0.7+0.12×0.2)×0.2=0.072;到B则是(0.48×0.3+0.12×0.8)×0.7=0.168。末尾相加仍为0.24,和逐路枚举一致。

Viterbi把上述汇入同一状态的求和换成最大值。到A得到max(0.336,0.024)×0.2=0.0672,到B得到max(0.144,0.096)×0.7=0.1008。还要记下赢家来自哪个前状态,末尾选择B并回溯到A,才恢复完整路径AB;只有最大分数还不够交付路径。

让AI同时提供四路径清单、两步前向量、两步最大路径分数和回溯指针。人工先检查每条路径的四个因子,再检查末尾是求和还是取最大。只要要求它明确回答的是哪一种概率,就能避免把0.24和0.1008当成实现不一致。

逐时刻挑选后验概率最大的状态,又是另一种目标,不能直接称为最优整条路径。本文没有执行那种逐点解码。这类HMM可利用状态结构做精确动态规划,本例没有束宽剪枝。长序列计算需采用缩放或对数域避免连乘下溢;在对数域,前向的求和应对应log-sum-exp,不能也直接换成max。模型参数是否符合真实数据,以及状态A、B有什么实际意义,仍是另外的建模与验证问题。

资料核对日期:2026年10月2日。算例为原创教学设定,已用独立Python计算复核,不代表真实模型训练或性能测试。

参考资料

hmmlearn:HMM教程

Mark Stamp:A Revealing Introduction to Hidden Markov Models,第4.1节

文章版权声明:除非注明,否则均为云鹊BLOG原创文章,转载或复制请以超链接形式并注明出处。