👾 Day 5: 隐马尔可夫模型

1️⃣【技术债与演进动机】The Technical Debt & Evolution
传统序列模型无法处理隐藏状态。HMM 引入不可观测的状态序列,通过观测序列推断隐藏状态。
2️⃣【直觉建立】Visual Intuition
想象通过天气(晴/雨)推断草地干湿状态:天气是隐藏状态,草地干湿是观测,转移概率决定状态变化。
🎬 B 站搜索:隐马尔可夫模型 直观解释
3️⃣【符号解码字典】The Symbol Decoder
$\pi$self.initial_probs (初始状态概率)
$A$self.transition_probs (状态转移矩阵)
$B$self.emission_probs (观测发射矩阵)
$O$observations (观测序列)
$Q$states (隐藏状态序列)
4️⃣【核心推导】The Math
### 三大基本问题 **1. 概率计算问题**(前向算法) $$\alpha_t(i) = P(o_1, o_2, ..., o_t, q_t = S_i | \lambda)$$ 递推公式: $$\alpha_{t+1}(i) = \left[ \sum_{j=1}^{N} \alpha_t(j) a_{ji} \right] b_i(o_{t+1})$$ **2. 学习问题**(Baum-Welch 算法) $$\gamma_t(i) = P(q_t = S_i | O, \lambda)$$ $$\xi_t(i, j) = P(q_t = S_i, q_{t+1} = S_j | O, \lambda)$$ **3. 预测问题**(Viterbi 算法) $$\delta_t(i) = \max_{q_1, ..., q_{t-1}} P(q_1, ..., q_t=i, o_1, ..., o_t | \lambda)$$
5️⃣【工程优化点】The Optimization Bottleneck
前向 - 后向算法需要 $O(N^2 \cdot T)$ 计算,Viterbi 解码需要 $O(N^2 \cdot T)$ 动态规划。
6️⃣【今日靶机】The OJ Mission
🎯 任务:cd exercises/ && python3 day5_task.py
实现 HMM 的前向算法计算观测概率,在中文分词数据集上验证 Viterbi 解码效果。