隐马尔可夫模型是一种重要的概率图模型。作为一种著名的有向图模型,HMM广泛应用于语音识别和序列预测等领域。
前提假设与模型表示
两个假设:
齐次马尔可夫假设:假设隐藏的马尔科夫链在任意时刻t的状态只依赖于其前一时刻的状态,与其他时刻的状态及观测无关,也与时刻t无关。
状态独立假设:某一时刻的观测变量只和自己的隐变量相关。
模型表示: λ = ( π , A , B ) \lambda=(\pi,A,B) λ=(π,A,B)。 π \pi π时初始概率分布, A A A时状态转移矩阵, B B B时发射矩阵。
模型求解
重要定理:隐状态已知的情况下,观测变量之间都是相互独立的。
假设隐状态序列为
q
1
,
q
2
,
.
.
,
q
n
q_1,q_2,..,q_n
q1,q2,..,qn,观测变量序列
y
1
,
y
2
,
.
.
.
,
y
n
y_1,y_2,...,y_n
y1,y2,...,yn.
齐次马尔可夫假设公式化表示:
P
(
q
t
∣
q
t
−
1
,
.
.
.
,
q
1
)
=
P
(
q
t
∣
q
t
−
1
)
P(q_t|q_{t-1},...,q_1)=P(q_t|q_{t-1})
P(qt∣qt−1,...,q1)=P(qt∣qt−1),这个概率称为transition probability,并且必须时离散的。这个概率用
A
k
×
k
A_{k\times k}
Ak×k
状态独立假设公式化表示:
P
(
y
t
∣
q
t
)
P(y_t|q_t)
P(yt∣qt),这个概率称为transition probability,这个离散的。这个概率用
B
k
×
l
B_{k\times l}
Bk×l
假设给定一个隐马尔可夫模型
观测变量
y
1
,
y
2
,
y
3
y_1,y_2,y_3
y1,y2,y3发生的概率推导如下:
由上面的推导我们可以看出,
P
(
y
n
∣
q
n
)
P(y_n|q_n)
P(yn∣qn)概率可以从B矩阵得到,
P
(
q
n
∣
q
n
−
1
)
P(q_n|q_{n-1})
P(qn∣qn−1)概率可以从A矩阵得知。上述公式唯一缺少的概率就是
P
(
q
1
)
P(q_1)
P(q1),其他的概率我们都能从概率矩阵A和概率矩阵B得到。
我们用
∏
\prod
∏表示
P
(
q
1
)
P(q_1)
P(q1)。因而最后模型的表示就是
λ
=
(
π
,
A
,
B
)
\lambda=(\pi,A,B)
λ=(π,A,B)。这也就是模型的由来。上述的推导过程也非常简单,只需用贝叶斯定理一直求解下去就能得到。
HMM的三个问题
Evaluation:P(o|λ),求概率,可用前向算法或后向算法求解
Learning:求参数
λ
=
a
r
g
m
a
x
P
(
q
∣
λ
)
\lambda=argmaxP(q|\lambda)
λ=argmaxP(q∣λ),通过EM求解
Decoding:预测
P
(
y
i
+
1
∣
q
1
,
.
.
.
,
q
t
)
,
P(y_{i+1}|q_1,...,q_t),
P(yi+1∣q1,...,qt),
Evaluation
用一个例子引入:
假设有五十个人都单独的说单词cat,利用MLE求解得到
λ
c
a
t
\lambda_{cat}
λcat的估计是
λ
c
a
t
=
a
r
g
m
a
x
l
o
g
P
(
y
1
,
.
.
.
,
y
50
∣
λ
)
\lambda_{cat}=argmax logP(y_1,...,y_{50}|\lambda)
λcat=argmaxlogP(y1,...,y50∣λ)
再有五十个人都单独的说单词dog,利用MLE求解得到
λ
d
o
g
\lambda_{dog}
λdog的估计是
λ
d
o
g
=
a
r
g
m
a
x
l
o
g
P
(
y
1
,
.
.
.
,
y
50
∣
λ
)
\lambda_{dog}=argmax logP(y_1,...,y_{50}|\lambda)
λdog=argmaxlogP(y1,...,y50∣λ)
。。。
现在新来了一个人,让他说一个词,我们用上面求解的λ估计他说的到底是什么词 P ( Y ∣ λ ) P(Y|\lambda) P(Y∣λ)
利用我们刚刚求解的公式进行求解:
可以看到这个概率非常难算,总共T个sum,每个sum还有k个变换。
解决办法:前向算法或者后向算法。
以前向算法为例,引入一个参数
q
t
q_t
qt,在计算过程中再用积分积掉这个参数就OK了。
定义:
α
i
(
t
)
=
P
(
y
1
,
.
.
.
,
y
t
,
q
t
=
i
∣
λ
)
\alpha_i(t)=P(y_1,...,y_t,q_t=i|\lambda)
αi(t)=P(y1,...,yt,qt=i∣λ)
递归的计算下去,最后得到:
最后求得
P
(
y
1
,
.
.
.
,
y
t
)
=
∑
j
=
1
k
α
j
(
T
)
P(y_1,...,y_t)=\sum_{j=1}^k\alpha_j(T)
P(y1,...,yt)=∑j=1kαj(T)
如果是后向算法,引入 β i ( t ) = P ( t + 1 , . . . , y T ∣ q t = i , λ ) \beta_i(t)=P(t+1,...,y_T|q_t=i,\lambda) βi(t)=P(t+1,...,yT∣qt=i,λ)。过程略。。
Learning
利用EM进行求解。
EM公式:
这里定义 X:观测变量,Z:隐变量,θ:参数
那么EM公式可以改写为:
未完待续。。。。。。