隐马尔科夫模型
Hidden Markov Model(HMM)
-
两组变量
-
状态变量:表示第 i i i时刻的系统状态
隐藏的,不可观测的(亦被称为隐变量)
{ y 1 , y 2 , . . . , y n } , y i ∈ γ \{y_1, y_2, ..., y_n\},y_i \in γ {y1,y2,...,yn},yi∈γ
-
取值范围:N个可能取值的离散空间
{ s 1 , s 2 , . . . , s N } \{s_1, s_2, ..., s_N\} {s1,s2,...,sN}
-
-
观测变量:表示第 i i i个时刻的观测值
{ x 1 , x 2 , . . . , x n } \{x_1, x_2, ..., x_n\} {x1,x2,...,xn}
-
取值范围:连续或离散
{ o 1 , o 2 , . . . , o M } \{o_1, o_2, ..., o_M\} {o1,o2,...,oM}
-
-
-
图中箭头表示变量间的依赖关系
马尔可夫链(Markov Chain):系统下一时刻的状态仅由当前状态决定,不依赖于以往的任何状态
-
在任一时刻,观测变量的取值仅依赖于状态变量,即 x t x_t xt由 y t y_t yt确定,与其他状态变量及观测变量的取值无关
-
t t t时刻的状态 y t y_t yt仅依赖于 t − 1 t-1 t−1时刻的状态 y t − 1 y_{t-1} yt−1,与此前 t − 2 t-2 t−2个状态无关
-
基于这种依赖关系,所有变量的联合概率分布为:
P ( x 1 , y 1 , … , x n , y n ) = P ( y 1 ) P ( x 1 ∣ y 1 ) ∏ i = 2 n P ( y i ∣ y i − 1 ) P ( x i ∣ y i ) P\left(x_{1}, y_{1}, \ldots, x_{n}, y_{n}\right)=P\left(y_{1}\right) P\left(x_{1} \mid y_{1}\right) \prod_{i=2}^{n} P\left(y_{i} \mid y_{i-1}\right) P\left(x_{i} \mid y_{i}\right) P(x1,y1,…,xn,yn)=P(y1)P(x1∣y1)i=2∏nP(yi∣yi−1)P(xi∣yi)
-
-
除了结构信息,欲确定一个隐马尔科夫模型还需以下三组参数
-
状态转移概率:模型在各个状态间转换的概率,通常记为矩阵 A = [ a i j ] N × N A=[a_{ij}]_{N×N} A=[aij]N×N
a i j = P ( y t + 1 = s j ∣ y t = s i ) , i ⩽ i , j ⩽ N a_{i j}=P\left(y_{t+1}=s_{j} \mid y_{t}=s_{i}\right), \quad i \leqslant i, j \leqslant N aij=P(yt+1=sj∣yt=si),i⩽i,j⩽N
表示在任意时刻 t t t,若状态为 s i s_i si,则在下一时刻状态为 s j s_j sj的概率 -
输出观测概率:模型根据当前状态获得各个观测值的概率,通常记为矩阵 B = [ b i j ] N × M B=[b_{ij}]_{N×M} B=[bij]N×M
b i j = P ( x t = o j ∣ y t = s i ) , 1 ⩽ i ⩽ N , 1 ⩽ j ⩽ N b_{i j}=P\left(x_{t}=o_{j} \mid y_{t}=s_{i}\right), \quad 1 \leqslant i \leqslant N, 1 \leqslant j \leqslant N bij=P(xt=oj∣yt=si),1⩽i⩽N,1⩽j⩽N
表示在任意时刻 t t t,若状态为 s i s_i si,则观测值 o j o_j oj被获取的概率 -
初始状态概率:模型在初始时刻各状态出现的概率,通常记为 π = ( π 1 , π 2 , . . . , π N ) π=(π_1, π_2, ..., π_N) π=(π1,π2,...,πN)
π i = P ( y 1 = s i ) , 1 ⩽ i ⩽ N \pi_{i}=P\left(y_{1}=s_{i}\right), \quad 1 \leqslant i \leqslant N πi=P(y1=si),1⩽i⩽N
表示模型的初始状态为 s i s_i si的概率
-
-
通过指定状态空间 γ γ γ、观测空间 χ χ χ和上述三组参数,就能确定一个HMM,通常用其参数 λ = [ A , B , π ] λ=[A, B, π] λ=[A,B,π]来指代。给定HMM,它按如下过程产生观测序列 { x 1 , x 2 , . . . , x n } \{x_1, x_2, ..., x_n\} {x1,x2,...,xn}
- 设置 t = 1 t=1 t=1,并根据初始状态概率 π π π选择初始状态 y 1 y_1 y1
- 根据状态 y t y_t yt和输出观测概率 B B B选择观测变量取值 x t x_t xt
- 根据状态 y t y_t yt和状态转移矩阵 A A A转移模型状态,即确定 y t + 1 y_{t+1} yt+1
- 若 t < n t<n t<n,设置 t = t + 1 t=t+1 t=t+1,并转到第2步,否则停止
-
HMM的三个基本问题
-
给定模型 λ = [ A , B , π ] λ=[A, B, π] λ=[A,B,π],如何有效计算其产生观测序列 x = { x 1 , x 2 , . . . , x n } x = \{x_1, x_2, ..., x_n\} x={x1,x2,...,xn}的概率 P ( x ∣ λ ) P(x|λ) P(x∣λ)?换言之,如何评估模型与观测序列之间的匹配程度?
-
给定模型 λ = [ A , B , π ] λ=[A, B, π] λ=[A,B,π]和观测序列 x = { x 1 , x 2 , . . . , x n } x = \{x_1, x_2, ..., x_n\} x={x1,x2,...,xn},如何找到与此观测序列最匹配的状态序列 y = { y 1 , y 2 , . . . , y n } y = \{y_1, y_2, ..., y_n\} y={y1,y2,...,yn}?换言之,如何根据观测序列推断出隐藏的模型状态?
-
给定观测序列 x = { x 1 , x 2 , . . . , x n } x = \{x_1, x_2, ..., x_n\} x={x1,x2,...,xn},如何调整模型参数 λ = [ A , B , π ] λ=[A, B, π] λ=[A,B,π]使得该序列出现的概率 P ( x ∣ λ ) P(x|λ) P(x∣λ)最大?换言之,如何训练模型使其能最好地描述观测数据?
-