通过实例学习理解HMM建模
例子1-什么是马尔科夫过程
Markov process-马尔科夫过程
这个定义来自于【2】的翻译,一个马尔科夫过程被定义为一个随机过程,这个随机过程的当前状态出现的概率,只依赖于前一个状态(State),而与更早的状态无关。上述概念广义上也被称为一阶马尔科夫过程,顾名思义,广义上也有二阶和高阶的。另外从定义来看整个马尔科夫过程研究的核心就是状态(State),即状态的出现概率,和不同状态的转移概率。
Observable-State Markov Process-显式马尔科夫过程
还是来自【2】的例子,利用容器来比喻两个状态
这两个状态抽象的转移概率定义如下:
对上面的转换概率理解如下:假设前一个时刻是
m
−
1
m-1
m−1,当前时刻为
m
m
m,状态
S
1
S1
S1的自旋概率
p
(
s
1
,
m
∣
s
1
,
m
−
1
)
=
0.8
p(s_{1,m}|s_{1,m-1})=0.8
p(s1,m∣s1,m−1)=0.8,状态
S
1
S1
S1切换到状态
S
2
S2
S2的概率
p
(
s
2
,
m
∣
s
1
,
m
−
1
)
=
0.2
p(s_{2,m}|s_{1,m-1})=0.2
p(s2,m∣s1,m−1)=0.2,状态
S
1
S1
S1的转换概率之和是
1
1
1。同理状态
S
2
S2
S2的自旋概率
p
(
s
2
,
m
∣
s
2
,
m
−
1
)
=
0.6
p(s_{2,m}|s_{2,m-1})=0.6
p(s2,m∣s2,m−1)=0.6,状态
S
2
S2
S2切换到状态
S
1
S1
S1的概率
p
(
s
1
,
m
∣
s
2
,
m
−
1
)
=
0.2
p(s_{1,m}|s_{2,m-1})=0.2
p(s1,m∣s2,m−1)=0.2,状态
S
2
S2
S2的转换概率之和是
1
1
1。再回到前图中黑白球出现的顺序(包括即将掉出来的白球)为:
黑
−
黑
白
黑
白
黑
白
黑
黑
白
白
黑
白
黑
−
白
黑-黑白黑白黑白黑黑白白黑白黑-白
黑−黑白黑白黑白黑黑白白黑白黑−白。第一个‘-’前的黑表示开始状态是从
S
1
S1
S1开始的,那么在一阶马尔科夫的假设前提下,两两转换事件不相关,所以可以认为是独立分布,利用联合概率分布的常识,这串颜色黑白球出现的概率为:
P
=
p
(
s
1
,
m
∣
s
1
,
m
−
1
)
∗
p
(
s
2
,
m
∣
s
1
,
m
−
1
)
∗
.
.
.
.
∗
p
(
s
1
,
m
∣
s
2
,
m
−
1
)
∗
p
(
s
2
,
m
∣
s
1
,
m
−
1
)
P=p(s_{1,m}|s_{1,m-1})*p(s_{2,m}|s_{1,m-1})*....*p(s_{1,m}|s_{2,m-1})*p(s_{2,m}|s_{1,m-1})
P=p(s1,m∣s1,m−1)∗p(s2,m∣s1,m−1)∗....∗p(s1,m∣s2,m−1)∗p(s2,m∣s1,m−1)
Hidden-State Markov Process-隐式马尔科夫过程
在上图的基础上,如果状态
s
t
a
t
e
state
state内部也是一个随机过程,无法得到确定的结果,如下图:
相对于显示,隐式随机过程增加了,即所谓的双内嵌式随机过程。同样的这次小球出现的顺序为:
白
−
黑
白
白
白
黑
白
黑
黑
白
白
黑
白
白
−
白
白-黑白白白黑白黑黑白白黑白白-白
白−黑白白白黑白黑黑白白黑白白−白
但第一个白球是从状态2出来的,还是状态1出来的就不知道了,如果要求解上面黑白球出现的概率,两种情况都得考虑,首先以状态1为起始点并且自旋在状态1的路径下的黑白球出现概率概率可以表示为:
P
=
P
w
∣
s
t
a
t
e
1
∗
p
(
s
1
,
m
∣
s
1
,
m
−
1
)
∗
P
b
∣
s
t
a
t
e
1
∗
.
.
.
.
.
P=P_{w|state1}*p(s_{1,m}|s_{1,m-1})*P_{b|state1}*.....
P=Pw∣state1∗p(s1,m∣s1,m−1)∗Pb∣state1∗.....
很显然上述过程穷举的话,是
2
n
,
2
=
s
t
a
t
e
s
n
u
m
b
e
r
,
n
=
o
u
t
p
u
t
n
u
m
b
e
r
2^n, 2=states\ number\ \ , \ n=output\ number
2n,2=states number , n=output number中组合的概率之和。而单条路径下的分布过程也比显式的多了一倍。
小结
通过对比可以看出隐藏状态是不能直接观测的,只能利用一个随机过程来建模。
例子2-Markov Chains 马尔科夫链
马尔科夫链其实就是对马尔科夫过程的一种抽象,具体的说即带有状态转移概率弧线的马尔科夫过程像一个链式手环而已。
ergodic Markov chains-遍历型
遍历型就是两两状态之间都存在转换通道(概率),还是利用来自【2】的图:
随着状态的增多,这种链式结果的转换概率弧线将是多到很难数的过来的地步,那么实际中什么情况下采用呢,假设天气预报,或者语言模型,都是不错的建模过程,如【3】所列举的遍历型链式结构:
left–right Markov chains-左右型(因果型)
铺垫了这么多,其实left–right Markov chains的结构才是语音识别中最常用的形式,如下图【2】:
细节不展开,主要为了直观的感受一下这个模型。左右因果型的马尔科夫链,时间状态转移路线可以用trellis网格表示,对于理解概率的转移路径和前后向算法更加直观:
怎么理解HMM
上面这个trellis图应该是将HMM析构的最好的一张图了,或者更加形象的来说用下图:
没错,就像打地鼠游戏一样,每次从哪个洞口出来,出来的肥鼠还是瘦鼠,都是未知的。看似很迷惘,但仔细的看trellis网格,还是有规律可循的。
HMM的基本元素
下文提到的HMM都是左右型的train。在语音识别中,HMM一般定义为6个模型参数的合集【1】: M = { S , O , A , B , π , F } M= \{S,O,A,B,\pi,F\} M={S,O,A,B,π,F}
S-模型中状态的有限集合
假设有N个状态,可以定义为 S = { S i ∣ i = 1 , 2 , . . , N } S=\{S_i|i=1,2,..,N\} S={Si∣i=1,2,..,N},而且在某一个时刻 t t t,模型一定处于上述集合中的一个状态,定义为 s t ∈ ( S 1 , . . . S N ) s_t\in(S_1,...S_N) st∈(S1,...SN)。这个模型说明HMM属于一个有限状态机。
O-模型输出的观测值符号信合
或者说 O O O是每个状态对应的可能的观察值数目。假设有 M M M个观察值为 O 1 , . . . O M O_1,...O_M O1,...OM,定义为 o t ∈ ( O 1 , . . . O M ) o_t\in(O_1,...O_M) ot∈(O1,...OM)
A-状态转移概率矩阵
所有概率转移因子
a
i
j
a_{ij}
aij构成一个集合:
A
=
[
a
11
⋯
a
1
N
⋮
⋱
⋮
a
N
1
⋯
a
N
N
]
A=\begin{bmatrix} a_{11} & \cdots & a_{1N} \\ \vdots & \ddots & \vdots \\ a_{N1} & \cdots & a_{NN} \end{bmatrix}
A=⎣⎢⎡a11⋮aN1⋯⋱⋯a1N⋮aNN⎦⎥⎤
对于左右型的HMM,
a
i
j
=
0
,
j
>
i
a_{ij}=0, j>i
aij=0,j>i,所以上述矩阵就变成上三角矩阵
A
=
[
a
11
⋯
⋯
a
1
N
0
a
22
⋯
a
2
N
⋮
⋯
⋱
⋮
0
⋯
0
a
N
N
]
A=\begin{bmatrix} a_{11} & \cdots & \cdots& a_{1N} \\ 0 & a_{22} & \cdots& a_{2N} \\ \vdots & \cdots& \ddots & \vdots \\ 0 & \cdots& 0 & a_{NN} \end{bmatrix}
A=⎣⎢⎢⎢⎡a110⋮0⋯a22⋯⋯⋯⋯⋱0a1Na2N⋮aNN⎦⎥⎥⎥⎤进一步如果是一阶HMM,矩阵中每行只有两个元素为非零值
A
=
[
a
11
a
12
⋯
0
0
a
22
a
23
0
⋮
⋯
⋱
⋮
0
⋯
0
a
N
N
]
A=\begin{bmatrix} a_{11} &a_{12} & \cdots& 0 \\ 0 & a_{22} & a_{23}& 0 \\ \vdots & \cdots& \ddots & \vdots \\ 0 & \cdots& 0 & a_{NN} \end{bmatrix}
A=⎣⎢⎢⎢⎡a110⋮0a12a22⋯⋯⋯a23⋱000⋮aNN⎦⎥⎥⎥⎤
B-输出观测值概率的集合
B = b i j ( k ) B={b_{ij}(k)} B=bij(k),其中 b i j b_{ij} bij是从状态 S i S_i Si到状态 S j S_j Sj转移时观测值符号 k k k的输出概率,如果是语音建模的话就是,每一个Gaussian的输出概率。而根据B的分布可以将HMM分为离散型和连续型: 离 散 型 H M M : ∑ k b i j ( k ) = 1 连 续 型 H M M : ∫ − ∞ ∞ b i j ( k ) d k = 1 离散型 HMM:\sum_k b_{ij}(k)=1\\ 连续型 HMM:\int_{-\infty}^{\infty}b_{ij}(k) dk=1 离散型HMM:k∑bij(k)=1连续型HMM:∫−∞∞bij(k)dk=1
π \pi π-系统初始化状态概率的集合
π = { π i } \pi=\{\pi_i\} π={πi}, π i \pi_i πi表示初始状态是 s i s_i si的概率,即 π i = P [ S 1 = s i ] , ( 1 ≤ i ≤ N ) ∑ π j = 1 \pi_i=P[S_1=s_i], (1\leq i\leq N) \\ \sum \pi_j =1 πi=P[S1=si],(1≤i≤N)∑πj=1在语音处理中,初始选取开始于某个状态 S 1 = s i S_1=s_i S1=si的概率。
F-系统终了状态的集合
这是专门为语音识别的模型定义的,广义模型里一般不定义终了集合
如何看待这些集合
HMM可以理解为由 π , A \pi, A π,A组成的马尔科夫链,负责产生状态序列;而由 B B B所描述的观察值序列,T为观察值的时间长度。对于孤立词识别的情况,需要为每个词建立一个HMM模型。首先要训练模型,然后令量化(特征提取)的语音信号 o 1 , o 2 , . . . o T o_1,o_2,...o_T o1,o2,...oT经过模型生成输出概率,输出概率最大的HMM对应的孤立词就是我们要得到的识别结果。
参考
1.语音信号处理,第三版,赵力 等,机械工业出版社
2.Advanced Digital Signal Processing and Noise Reduction, Fourth Edition by Saeed V. Vaseghi
3.Chapter A Hidden Markov Models from Speech and Language Processing by Jurafsky