course_day5.html 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>5 - 隐马尔可夫模型</title>
  7. <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css">
  8. <style>
  9. body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; line-height: 1.6; max-width: 800px; margin: 0 auto; padding: 20px; background: #1a1a2e; color: #eaeaea; }
  10. h1 { color: #e94560; border-bottom: 2px solid #e94560; padding-bottom: 10px; }
  11. h2 { color: #0f3460; background: #16213e; padding: 10px; border-left: 4px solid #e94560; margin-top: 30px; }
  12. .module { background: #0f3460; padding: 15px; margin: 20px 0; border-radius: 5px; }
  13. .module-title { color: #e94560; font-weight: bold; margin-bottom: 10px; }
  14. code { background: #1a1a2e; padding: 2px 6px; border-radius: 3px; color: #f0f6f6; }
  15. pre { background: #1a1a2e; padding: 15px; border-radius: 5px; overflow-x: auto; }
  16. .symbol-map { background: #16213e; padding: 10px; margin: 5px 0; border-left: 3px solid #0f3460; }
  17. .warning { background: #e94560; color: #fff; padding: 10px; border-radius: 5px; margin: 10px 0; }
  18. .youtube { background: #ff0000; color: #fff; padding: 10px; border-radius: 5px; display: inline-block; margin: 10px 0; }
  19. </style>
  20. </head>
  21. <body>
  22. <h1>👾 Day 5: 隐马尔可夫模型</h1>
  23. <div class="module">
  24. <div class="module-title">1️⃣【技术债与演进动机】The Technical Debt & Evolution</div>
  25. 传统序列模型无法处理隐藏状态。HMM 引入不可观测的状态序列,通过观测序列推断隐藏状态。
  26. </div>
  27. <div class="module">
  28. <div class="module-title">2️⃣【直觉建立】Visual Intuition</div>
  29. 想象通过天气(晴/雨)推断草地干湿状态:天气是隐藏状态,草地干湿是观测,转移概率决定状态变化。
  30. <div class="youtube">🎬 B 站搜索:<code>隐马尔可夫模型 直观解释</code></div>
  31. </div>
  32. <div class="module">
  33. <div class="module-title">3️⃣【符号解码字典】The Symbol Decoder</div>
  34. <div class="symbol-map"><strong>$\pi$</strong> → <code>self.initial_probs</code> (初始状态概率)</div>
  35. <div class="symbol-map"><strong>$A$</strong> → <code>self.transition_probs</code> (状态转移矩阵)</div>
  36. <div class="symbol-map"><strong>$B$</strong> → <code>self.emission_probs</code> (观测发射矩阵)</div>
  37. <div class="symbol-map"><strong>$O$</strong> → <code>observations</code> (观测序列)</div>
  38. <div class="symbol-map"><strong>$Q$</strong> → <code>states</code> (隐藏状态序列)</div>
  39. </div>
  40. <div class="module">
  41. <div class="module-title">4️⃣【核心推导】The Math</div>
  42. ### 三大基本问题
  43. **1. 概率计算问题**(前向算法)
  44. $$\alpha_t(i) = P(o_1, o_2, ..., o_t, q_t = S_i | \lambda)$$
  45. 递推公式:
  46. $$\alpha_{t+1}(i) = \left[ \sum_{j=1}^{N} \alpha_t(j) a_{ji} \right] b_i(o_{t+1})$$
  47. **2. 学习问题**(Baum-Welch 算法)
  48. $$\gamma_t(i) = P(q_t = S_i | O, \lambda)$$
  49. $$\xi_t(i, j) = P(q_t = S_i, q_{t+1} = S_j | O, \lambda)$$
  50. **3. 预测问题**(Viterbi 算法)
  51. $$\delta_t(i) = \max_{q_1, ..., q_{t-1}} P(q_1, ..., q_t=i, o_1, ..., o_t | \lambda)$$
  52. </div>
  53. <div class="module">
  54. <div class="module-title">5️⃣【工程优化点】The Optimization Bottleneck</div>
  55. 前向 - 后向算法需要 $O(N^2 \cdot T)$ 计算,Viterbi 解码需要 $O(N^2 \cdot T)$ 动态规划。
  56. </div>
  57. <div class="module">
  58. <div class="module-title">6️⃣【今日靶机】The OJ Mission</div>
  59. <div class="warning">🎯 任务:<code>cd exercises/ && python3 day5_task.py</code></div>
  60. 实现 HMM 的前向算法计算观测概率,在中文分词数据集上验证 Viterbi 解码效果。
  61. </div>
  62. <script src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js"></script>
  63. <script src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/auto-render.min.js"></script>
  64. <script>
  65. renderMathInElement(document.body, {
  66. delimiters: [
  67. {left: '$$', right: '$$', display: true},
  68. {left: '$', right: '$', display: false}
  69. ],
  70. throwOnError: false
  71. });
  72. </script>
  73. </body>
  74. </html>