Duxy's

a digged hole

隐马尔可夫模型

以前一直觉得马尔可夫模型好像挺麻烦,认真研究后发现,其思想也算是非常的简单,在此记录一下。

隐马尔可夫模型的基本假设

  1. 齐次马尔可夫性假设。即隐马尔可夫链的每一个状态只由前一个状态决定,生成了某个状态后,其之前的状态就不再影响后面的状态生成。通俗的来说,它的眼界不宽,只看前面一个的情况。\[P(i_t|i_T,o_T,...,i_1,o_1) = P(i_t|i_{t-1})\]

  2. 观测独立性假设。即隐马尔可夫链的观测只取决于对应状态。\[P(o_t|i_T,o_T,...i_1,o_1) = P(o_t|i_t)\]

隐马尔可夫模型的三要素

其实有了上述假设,隐马尔可夫模型就简单了。隐马尔可夫可看作由三要素决定的。
\[ \lambda = (A, B, \pi) \]
\(A\)是状态转移矩阵,指从t时刻到t+1时刻由状态i到j转移的概率是多少。
\(B\)是观测概率矩阵,是指由状态i生成观测j的概率是多少。
\(\pi\)是初始状态概率,指一开始牌状态i的概率是多少。

隐马尔可夫模型的计算算法

隐马尔可夫模型通常会给出整体的观测序列\(O\)作为即定事实,然后在上面做一些分析。

  • 若给定了三要素,基于隐马尔可夫模型的基本假设,很容易得到一个无后效性的最优子问题,那么在计算第t个时刻状态为i的方法可以使用DP来做。在此有前向算法后向算法两类,通过这两类算法,可以将状态序列中的某一个状态单独取出来,因而它们经常一起使用。
    • 使用前向算法和后向算法可以估计出每一个状态的值,这就是近似算法但是由于前后状态是分别估计的,所以生成的相信序列可能存在转移概率为0的情况。
    • 隐马的假设与DP简直就是天生一对,我们可以使用DP估计出全局概率最高的路径。这就是维特比算法
  • 若三要素是未知的,那么又可以分为两类:
    • 若给定状态序列\(I\),通过统计的方式,可以获得三要素的值。
    • 若没有状态序列\(I\),可以通过Baum-Welch算法,结合EM迭代,估计出三要素。