HMM(隐马尔可夫模型)
HMM(隐马尔可夫模型)前言一、基本概念1、两组变量和三组参数两组变量三组参数2、三个基本问题二、概率计算问题1、直接计算法(暴力穷举)2、前向算法3、后向算法三、预测问题四、学习问题总结reference前言隐马尔可夫模型是结构最简单的动态贝叶斯网,这是一种著名的有向图模型,主要用于时序数据建模,在语音识别、自然语言处理等领域有广泛应用。一、基本概念1、两组变量和三组参数两组变量状态变量yiy_
HMM(隐马尔可夫模型)
前言
隐马尔可夫模型是结构最简单的动态贝叶斯网,这是一种著名的有向图模型,主要用于时序数据建模,在语音识别、自然语言处理等领域有广泛应用。
一、基本概念
1、两组变量和三组参数
两组变量
- 状态变量 y i y_i yi:隐藏的马尔可夫随机链生成的状态序列,不可观测
- 观测变量 x i x_i xi:每个状态生成一个观测,由此产生观测的随机序列
两个基本假设:
- 观测独立性假设:
图中的箭头表示了变量间的依赖关系。在任一时刻,观测变量的取值仅依赖于状态变量,即 x t x_t xt由 y t y_t yt确定,与其他状态变量及观测变量的取值无关。‘- 齐次马尔可夫假设:
同时,t时刻的状态 y t y_t yt仅依赖于 t − 1 t-1 t−1时刻的状态 y t − 1 y_{t-1} yt−1,与其余 n − 2 n-2 n−2个状态无关,这就是马尔科夫链,即:系统下一时刻的状态仅由当前状态确定,不依赖于以往的任何状态,基于这种依赖关系所有变量的联合概率分布为:
三组参数
- 状态转移概率:模型在各个状态间转换的概率,通常记为
A
=
[
a
i
j
]
N
×
N
A=[a_{ij}]_{N\times N}
A=[aij]N×N,其中
a i j = P ( y t + 1 = s j ∣ y t = s i ) , 1 ≤ i , j ≤ N , a_{ij}=P(y_{t+1}=s_j|y_t=s_i),1\le i,j\le N, aij=P(yt+1=sj∣yt=si),1≤i,j≤N, - 输出观测概率:模型根据当前状态获得各个观测值的概率,通常记为矩阵
B
=
[
b
i
j
]
N
×
M
B=[b_{ij}]_{N\times M}
B=[bij]N×M
b i j = P ( x t = o j ∣ y t = s i ) , 1 ≤ i ≤ N , 1 ≤ j ≤ M b_{ij}=P(x_t=o_j|y_t=s_i),1\le i \le N,1\le j \le M bij=P(xt=oj∣yt=si),1≤i≤N,1≤j≤M - 初始状态概率:模型在初始时刻各状态出现的概率,通常记为
π
=
(
π
1
,
π
2
,
.
.
.
,
π
n
)
\pi=(\pi_1,\pi_2,...,\pi_n)
π=(π1,π2,...,πn)
π i = P ( y 1 = s i ) , 1 ≤ i ≤ N \pi_{i}=P(y_1=s_i),1\le i\le N πi=P(y1=si),1≤i≤N
通过指定状态空间
Y
\mathcal Y
Y、观测空间
X
\mathcal X
X和上述三个参数,就能确定一个隐马尔可夫模型,通过用其参数
λ
=
[
A
,
B
,
p
i
]
\lambda =[A,B,pi]
λ=[A,B,pi]来指代。给定隐马尔可夫模型
λ
\lambda
λ,它按如下过程产生观测序列
{
x
1
,
x
2
,
.
.
.
,
x
n
}
\{x_1,x_2,...,x_n\}
{x1,x2,...,xn}:
(1)设置
t
=
1
t=1
t=1,并根据初始状态概率
π
\pi
π选择初始状态
y
1
y_1
y1;
(2)根据状态
y
t
y_t
yt和输出观测概率
B
B
B选择观测变量取值
x
t
x_t
xt;
(3)根据状态
y
t
y_t
yt和状态转移矩阵
A
A
A转移模型状态,即确定
y
t
+
1
y_{t+1}
yt+1;
(4)若
t
<
n
t <n
t<n,设置
t
=
t
+
1
t=t+1
t=t+1,并转到第(2)步,否则停止。
其中
y
t
∈
{
s
1
,
s
2
,
.
.
.
,
s
n
}
y_t\in \{s_1,s_2,...,s_n\}
yt∈{s1,s2,...,sn}和
x
t
∈
{
o
1
,
o
2
,
.
.
.
,
o
m
}
x_t\in \{o_1,o_2,...,o_m\}
xt∈{o1,o2,...,om}分别为第
t
t
t时刻的状态和观测值。
2、三个基本问题
-
概率学习问题
-
预测问题(解码问题)
-
学习问题
二、概率计算问题
1、直接计算法(暴力穷举)
列举所有可能的长度为T的状态序列 y = { y 1 , y 2 , . . . , y T } y=\{y_1,y_2,...,y_T \} y={y1,y2,...,yT},求各个状态序列 x x x与观测序列 x = { x 1 , x 2 , . . . , x T } x= \{x_1,x_2,...,x_T \} x={x1,x2,...,xT}的联合概率 P ( x , y ∣ λ ) P(x,y | λ) P(x,y∣λ),然后对所有可能的状态序列求和,从而得到最终的概率 P ( x ∣ λ ) P(x|λ) P(x∣λ);
缺点:计算量非常庞大, O ( T N T ) O(TN^T) O(TNT)阶,不可行
2、前向算法
首先,定义前向概率:
前向概率:给定隐马科夫模型 λ \lambda λ,定义到时刻 t t t为止的观测序列为 o 1 , o 2 , . . . . . . , o t o_1,o_2,......,o_t o1,o2,......,ot且状态为 q i q_i qi的概率为前向概率,记作
α t ( i ) = P ( o 1 , o 2 , . . . . . . , o t , i t = q i ∣ λ ) \alpha_t(i)=P(o_1,o_2,......,o_t,i_t=q_i|\lambda) αt(i)=P(o1,o2,......,ot,it=qi∣λ)
可以递推地求得前向概率 α t ( i ) \alpha_t(i) αt(i)及观测序列概率 P ( 0 ∣ λ ) P(0|\lambda) P(0∣λ)
- 输入:隐马尔科夫模型 λ \lambda λ,观测序列 O O O
- 输出:观测序列概率 P ( O ∣ λ ) P(O|\lambda) P(O∣λ)
- 前向算法:
理解:
计算:每一次计算直接引用上一时刻的计算结果,避免重复计算,计算量是 O ( N 2 T ) O(N^2T) O(N2T)阶。
3、后向算法
首先,定义后向概率:
后向概率:给定隐马科夫模型 λ \lambda λ,定义在时刻 t t t状态为 q i q_i qi的条件下,从 t + 1 t+1 t+1到 T T T的部分观测序列为 o t + 1 , o t + 2 , . . . . . . , o T o_{t+1},o_{t+2},......,o_T ot+1,ot+2,......,oT的概率为后向概率,记作
β t ( i ) = P ( o t + 1 , o t + 2 , . . . . . . , o T ∣ i t = q i , λ ) \beta_t(i)=P(o_{t+1},o_{t+2},......,o_T|i_t=q_i,\lambda) βt(i)=P(ot+1,ot+2,......,oT∣it=qi,λ)
可以递推地求得后向概率 β t ( i ) \beta_t(i) βt(i)及观测序列概率 P ( 0 ∣ λ ) P(0|\lambda) P(0∣λ)
- 输入:隐马尔科夫模型 λ \lambda λ,观测序列 O O O
- 输出:观测序列概率 P ( O ∣ λ ) P(O|\lambda) P(O∣λ)
- 后向算法:
理解:
三、预测问题
1、近似算法
2、维特比算法
用动态规划求概率最大路径(最优路径),这时一条路径对应着一个状态序列。
理解
- 输入:隐马尔科夫模型 λ \lambda λ,观测序列 O O O
- 输出:最优路径 I ∗ = ( i 1 ∗ , i 1 ∗ , . . . i T ∗ ) I^*=(i^*_1,i^*_1,...i^*_T) I∗=(i1∗,i1∗,...iT∗).
- 维特比算法:
例子:
四、学习问题
1、监督学习算法
2、非监督学习算法
reference
[1]周志华-《机器学习》
[2]李航-《统计学习方法》
[3]02 隐马尔可夫模型 - HMM的三个问题 - 概率计算问题
[4]隐马尔科夫模型(HMM)一前向与后向算法
更多推荐
所有评论(0)