Bootstrap

动态模型系列笔记(一)——隐马尔可夫模型(HMM)

背景介绍

隐马尔可夫模型 (HMM) 是一种概率图模型

我们知道,机器学习模型可以从频率派贝叶斯派两个方向考虑,

  • 频率派发展成形成了统计机器学习,核心是优化问题;
    1. model: 例如,超平面 f ( ω ) = ω T x + b f(\omega)=\omega^Tx+b f(ω)=ωTx+b 或者 回归(regression)等;
    2. strategy: 衡量模型好坏/评估准则 loss function;
    3. algorithm(求解):GD, SGD, 牛顿法, 拟牛顿法等。
  • 贝叶斯派发展成了概率图模型,核心是推断问题(inference)或者求后验概率 p ( z ∣ x ) p(z|x) p(zx), 常常需要用MCMC方法进行积分。(注:通常 x x x表示数据)

在这里插入图片描述

如图,概率图模型最基本的模型可以分为

  • 有向图(贝叶斯网络 Bayesian Newwork)
  • 无向图(马尔可夫随机场 Markov Random Field)

在这些基本的模型上,如果样本之间存在关联,可以认为样本中附带了时序信息(不一定是时间,是一个表示先后的量即可),从而样本之间不独立全同分布的,这种模型就叫做动态模型,隐变量随着时间发生变化,于是观测变量也发生变化。

根据状态变量(隐变量)的特点,可以分为:

  1. 隐马尔可夫模型(HMM),状态变量(隐变量)是离散的;
  2. 卡尔曼滤波(Kalman Filter),状态变量是连续的,线性的;
  3. 粒子滤波(Particle Filter),状态变量是连续,非线性的.

动态模型从横向看是一个时间序列,纵向看是一个混合模型:
请添加图片描述

提纲

下面的内容将分为以下三个部分进行叙述:

  • 一个模型(隐马尔可夫模型)
  • 两个假设
    1. 齐次马尔科夫假设
    2. 观测独立假设
  • 三个问题
    1. Evaluation
    2. Learning
    3. Decoding

隐马尔可夫模型(HMM)

HMM 用概率图表示为:
HMM示意图

符号表示

符号 解释
λ = ( π , A , B ) \lambda=(\pi,A,B) λ=(π,A,B) 一个表示模型的参数
π \pi π 初始时刻的概率分布
A A A 状态转移矩阵
B B B 发射矩阵,观测概率矩阵

更进一步:

  • 观测变量:上图中灰色的圆圈表示观测变量,用符号 O : [ o 1 , o 2 , ⋯   , o t , ⋯   ] O: [o_1, o_2, \cdots , o_t, \cdots] O:[o1,o2,,ot,]表示,其值域为 V = { v 1 , v 2 , ⋯   , v M } V=\{v_1,v_2,\cdots,v_M\} V={ v1,v2,,vM} ;
  • 状态变量 Hidden state:上图中白色圆圈表示状态变量 Hidden state,用符号 i : [ i 1 , i 2 , ⋯   , i t , ⋯   ] i: [i_1, i_2, \cdots , i_t, \cdots] i:[i1,i2,,it,] 表示,其值域为 Q = { q 1 , q 2 , ⋯   , q N } Q=\{q_1,q_2,\cdots,q_N\} Q={ q1,q2,,qN}
  • 状态转移矩阵 A = [ a i j ] A=[a_{ij}] A=[aij],其中 a i j = p ( i t + 1 = q j ∣ i t = q i ) a_{ij}=p(i_{t+1}=q_j|i_t=q_i) aij=p(it+1=qjit=qi);
  • 发射矩阵/观测概率矩阵 B = [ b j ( k ) ] B=[b_j(k)] B=[bj(k)] ,其中 b j ( k ) = p ( o t = v k ∣ i t = q j ) b_j(k)=p(o_t=v_k|i_t=q_j) bj(k)=p(ot=vkit=qj).

两个假设

在 HMM 中,有两个基本假设:

  1. 齐次 Markov假设(当前状态仅与前一状态有关):
    p ( i t + 1 ∣ i t , i t − 1 , ⋯   , i 1 , o t , o t − 1 , ⋯   , o 1 ) = p ( i t + 1 ∣ i t ) (1) p(i_{t+1}|i_t,i_{t-1},\cdots,i_1,o_t,o_{t-1},\cdots,o_1)=p(i_{t+1}|i_t) \tag{1} p(it+1it,it1,,i1,ot,ot1,,o1)=p(it+1it)(1)

  2. 观测独立假设(当前的观测变量只与当前的状态变量有关):
    p ( o t ∣ i t , i t − 1 , ⋯   , i 1 , o t − 1 , ⋯   , o 1 ) = p ( o t ∣ i t ) (2) p(o_t|i_t,i_{t-1},\cdots,i_1,o_{t-1},\cdots,o_1)=p(o_t|i_t) \tag{2} p(otit,it1,,i1,ot1,,o1)=p(otit)(2)

三个问题:

  1. Evaluation:
    在所有参数 λ \lambda λ已知的条件下,观测序列的概率,即 p ( O ∣ λ ) p(O|\lambda) p(Oλ)
    通常采用前向后向算法(Forward-Backward Algorithm)解决。
  2. Learning:
    如何求 λ \lambda λ? 即如何求 λ = a r g m a x λ p ( O ∣ λ ) \lambda=\mathop{argmax}\limits_{\lambda}p(O|\lambda) λ=λargmaxp(Oλ)
    通常采用EM 算法(即Baum-Welch算法,Baum-Welch算法在EM前提出,后来发现它本质就是EM算法)。
  3. Decoding:
    找到一个系列 I I I使 p ( I ∣ O , λ ) p(I|O,\lambda) p(IO,λ)最大,即 I = a r g m a x I p ( I ∣ O , λ ) I=\mathop{argmax}\limits_{I}p(I|O,\lambda) I=Iargmaxp(IO,λ)最大;
    通常使用Vierbi 算法;
    同时这类问题还可以分成两个小问题
    1. 预测问题: p ( i t + 1 ∣ o 1 , o 2 , ⋯   , o t ) p(i_{t+1}|o_1,o_2,\cdots,o_t) p(it+1o1,o2,,ot)<
;