You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

带退出状态的有限HMM中Digamma矩阵的维度与计算疑问

带退出状态的隐马尔可夫模型(HMM)Digamma矩阵计算说明

核心误解修正

你当前的初始化逻辑存在两个问题:

  • Digamma矩阵的时间维度对应观测序列中相邻时刻的转移次数,长度为观测序列长度-1。你的观测序列x长度为3,仅需要2个时间步的Digamma,你初始化了长度为3的数组,最后一个全零矩阵属于无效冗余数据。
  • 转移矩阵形状为[n_states, n_states+1],Digamma每个时间步的矩阵形状和转移矩阵完全一致,你对维度的判断是正确的,"补充额外一列"就是指对应转移到退出状态的最后一列。

正确计算逻辑

Digamma矩阵元素Digamma[t][i][j]表示在给定整个观测序列的条件下,t时刻处于状态i、t+1时刻处于状态j的后验概率,其中j的取值范围是0~n_states,j = n_states对应退出状态。计算分两类场景:

  1. 当j为非退出状态(j < n_states)时,对所有t ∈ [0, T-2](T为观测序列长度),统一用公式计算:
Digamma[t][i][j] = a_pass[i][t] * A[i][j] * B[j][t+1] * b_pass[j][t+1] / c_scale[t+1]

你当前计算出的前两个时间步的前两列数值符合该公式,结果正确。
2. 当j为退出状态(j = n_states)时,仅在最后一个转移步(t = T-2)有非零值,因为只有序列结束时才会触发转移到退出状态的动作,计算公式为:

Digamma[T-2][i][n_states] = gamma[i][T-1] * A[i][n_states]

代入你给出的数值计算:
n_states=2,T=3,最后一个转移步为t=1,退出状态j=2:
Digamma[1][1][2] = gamma[1][2] * A[1][2] = 1.0 * 0.1 = 0.1
其余t < T-2的转移步中,退出状态列的数值均为0,符合你当前的计算结果。


校验规则

调整完成后,所有时间步Digamma的行和加总结果,应对应gamma矩阵所有元素的和,可用于验证计算正确性。

内容的提问来源于stack exchange,提问作者Cookie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 03:06:00