前向算法


前向算法(Forward Algorithm)是用于隐马尔可夫模型(HMM)的一种动态规划算法,主要用于计算观测序列的概率。以下是其关键点:

1. 定义

前向算法通过计算前向概率 (\alpha_t(i)),即在时间 (t) 处于状态 (i) 并观测到序列 (o_1, o_2, \dots, o_t) 的概率。

2. 步骤

  1. 初始化: [ \alpha_1(i) = \pi_i b_i(o_1) ] 其中,(\pi_i) 是初始状态概率,(b_i(o_1)) 是状态 (i) 生成观测 (o_1) 的概率。

  2. 递推: [ \alpha_{t+1}(j) = \left[ \sum_{i=1}^N \alpha_t(i) a_{ij} \right] b_j(o_{t+1}) ] 其中,(a_{ij}) 是从状态 (i) 转移到状态 (j) 的概率。

  3. 终止: [ P(O|\lambda) = \sum_{i=1}^N \alpha_T(i) ] 这是观测序列 (O) 的总概率。

3. 应用

  • 计算观测序列概率:用于评估模型与观测数据的匹配度。
  • 模型比较:帮助选择最合适的HMM。

4. 优点

  • 高效:通过动态规划避免重复计算。
  • 易于实现:适合大规模HMM。

5. 示例

假设有一个两状态HMM,初始概率 (\pi = [0.6, 0.4]),转移矩阵 (A = [[0.7, 0.3], [0.4, 0.6]]),观测概率 (B = [[0.1, 0.9], [0.5, 0.5]]),观测序列 (O = [o_1, o_2])。

  1. 初始化: [ \alpha_1(1) = 0.6 \times 0.1 = 0.06 ] [ \alpha_1(2) = 0.4 \times 0.5 = 0.20 ]

  2. 递推: [ \alpha_2(1) = (0.06 \times 0.7 + 0.20 \times 0.4) \times 0.1 = 0.0122 ] [ \alpha_2(2) = (0.06 \times 0.3 + 0.20 \times 0.6) \times 0.5 = 0.069 ]

  3. 终止: [ P(O|\lambda) = 0.0122 + 0.069 = 0.0812 ]

前向算法是HMM中的核心工具,广泛应用于序列数据分析。