1 隐马尔科夫模型定义
隐马尔科夫模型是一个seq2seq模型。例如词性标注。
时间序列 | t1 | t2 | t3 |
---|---|---|---|
状态序列 | 代词 | 动词 | 名词 |
观察序列 | 我 | 爱 | 机器学习 |
能够看到的,例如词语是观察序列。看不到的部分是状态序列,例如词性。
状态集合:
Q
=
{
q
1
,
q
2
,
.
.
.
q
N
}
Q=\{q_1,q_2,...q_N\}
Q={q1,q2,...qN},
∣
Q
∣
=
N
|Q|=N
∣Q∣=N
观察集合:
V
=
{
v
1
,
v
2
,
.
.
.
v
M
}
V=\{v_1,v_2,...v_M\}
V={v1,v2,...vM},
∣
V
∣
=
M
|V|=M
∣V∣=M
强定义:状态是观测不到的,类比于心理活动。观察是可以看到的,类比于面部表情。
状态序列:
I
=
{
i
1
,
i
2
,
.
.
.
i
t
.
.
.
i
T
}
I=\{i_1,i_2,...i_t...i_T\}
I={i1,i2,...it...iT},
i
t
∈
Q
i_t\in Q
it∈Q, (t=1,2,…T)
观察序列:
O
=
{
o
1
,
o
2
,
.
.
.
o
t
,
.
.
.
.
o
T
}
O=\{o_1,o_2,...o_t,....o_T\}
O={o1,o2,...ot,....oT},
o
i
∈
V
o_i\in V
oi∈V, (t=1,2,…T)
- 序列与集合是不同的。序列中的元素是有前后顺序的。
- 总的时刻用T表示
- 强定义:每个时刻的观察只与这个时刻的状态有关系。(心理活动影响了面部表情)
状态转移矩阵:是从一个状态转移到另外一个状态的概率。例如从代词转到动词的概率。 A = [ a i j ] N ∗ N A=[a_{ij}]_{N*N} A=[aij]N∗N,表示从状态i到状态j的转换概率。在t时刻,处于状态 q i q_i qi条件下,在t+1时刻,转移到状态 q j q_j qj的概率 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=qj∣it=qi)
观测概率矩阵: B = [ b j ( k ) ] N ∗ M B=[b_{j}(k)]_{N*M} B=[bj(k)]N∗M。在t时刻处于状态 q j q_j qj下生成观测 v k v_k vk的概率 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=vk∣it=qj)
初始概率向量: π = ( π i ) \pi=(\pi_i) π=(πi),在t=1的时刻,状态处于 q i q_i qi的概率。 π i = P ( i 1 = q i ) \pi_i=P(i_1=q_i) πi=P(i1=qi), π \pi π是一个N维向量。
隐马尔科夫模型: λ = ( A , B , π ) \lambda = (A,B,\pi) λ=(A,B,π)
以上可以成立的假设是:
1 ⻬次⻢尔科夫性假设:在任意时刻t的状态只依赖于t-1时刻的状态。
P
(
i
t
∣
i
t
−
1
,
,
o
t
−
1
,
.
.
.
i
1
,
o
1
)
=
P
(
i
t
∣
i
t
−
1
)
P(i_t|i_{t-1,},o_{t-1},...i_1,o_1)=P(i_t|i_{t-1})
P(it∣it−1,,ot−1,...i1,o1)=P(it∣it−1)
2 观测独立性假设:任意时刻t的观测只与t时刻的状态有关。
P
(
o
t
∣
i
t
,
i
t
−
1
.
.
.
i
1
,
o
t
−
1
,
o
t
−
2
.
.
.
o
1
)
=
P
(
o
t
∣
i
t
)
P(o_t|i_t,i_{t-1}...i_1,o_{t-1},o_{t-2}...o_1)=P(o_t|i_{t})
P(ot∣it,it−1...i1,ot−1,ot−2...o1)=P(ot∣it)
观测序列生成算法
输入:隐马尔科夫模型
λ
=
(
A
,
B
,
π
)
\lambda=(A,B,\pi)
λ=(A,B,π),观测序列长度T
输出:观测序列
O
=
o
1
,
o
2
,
.
.
.
,
o
T
O={o_1,o_2,...,o_T}
O=o1,o2,...,oT
HMM三个问题
1 概率计算,已知
λ
=
(
A
,
B
,
π
)
\lambda=(A,B,\pi)
λ=(A,B,π)和
O
=
o
1
,
o
2
,
.
.
.
,
o
T
O={o_1,o_2,...,o_T}
O=o1,o2,...,oT,计算
P
(
O
∣
λ
)
P(O|\lambda)
P(O∣λ)
在模型已知的情况下,出现观测序列的概率
2 学习:已知
O
=
o
1
,
o
2
,
.
.
.
,
o
T
O={o_1,o_2,...,o_T}
O=o1,o2,...,oT,计算
λ
∗
=
a
r
g
m
a
x
P
(
O
∣
λ
)
\lambda^{*}= argmax P(O|\lambda)
λ∗=argmaxP(O∣λ)
已知观测序列,计算模型,计算得到的模型应该是使得观测序列的概率最大。
3 预测/编码问题:已知
λ
=
(
A
,
B
,
π
)
\lambda=(A,B,\pi)
λ=(A,B,π)和
O
=
o
1
,
o
2
,
.
.
.
,
o
T
O={o_1,o_2,...,o_T}
O=o1,o2,...,oT,计算
I
∗
=
a
r
g
m
a
x
P
(
I
∣
O
λ
)
I^*=argmaxP(I|O\lambda)
I∗=argmaxP(I∣Oλ)
已知模型和观测序列,计算概率最大的状态序列。
2 概率计算算法
2.1 前向概率
给定模型
λ
\lambda
λ,时刻t部分观测序列为
o
1
,
o
2
,
.
.
.
,
o
t
o_1,o_2,...,o_t
o1,o2,...,ot且状态为
q
i
q_i
qi的概率
递推公式:
这一步是简写,用
O
1
t
O^t_1
O1t 表示从1到t时刻的观察序列。
当
i
t
=
q
i
i_t=q_i
it=qi的时候,在
t
−
1
t-1
t−1时刻的状态可能为
q
1
,
q
2
,
.
.
.
q
N
q_1,q_2,...q_N
q1,q2,...qN,那么
P
(
i
t
=
q
i
)
=
P
(
i
t
=
q
i
∣
i
t
−
1
=
q
1
)
+
P
(
i
t
=
q
i
∣
i
t
−
1
=
q
2
)
+
.
.
.
+
P
(
i
t
=
q
i
∣
i
t
−
1
=
q
N
)
P(i_t=q_i)=P(i_t=q_i|i_{t-1}=q_1)+P(i_t=q_i|i_{t-1}=q_2)+...+P(i_t=q_i|i_{t-1}=q_N)
P(it=qi)=P(it=qi∣it−1=q1)+P(it=qi∣it−1=q2)+...+P(it=qi∣it−1=qN),根据加法公式得到这一步递推。
这一步利用的是乘法公式:P(AB)=P(A|B)P(B)
在这里A=
i
t
=
q
i
,
o
t
i_t=q_i,o_t
it=qi,ot,B=
i
t
−
1
=
q
j
,
o
1
t
−
1
i_{t-1}=q_j,o^{t-1}_1
it−1=qj,o1t−1
根据定义
P
(
i
t
−
1
=
q
j
,
o
1
t
−
1
)
=
α
t
−
1
(
j
)
P(i_{t-1}=q_j,o^{t-1}_1)=\alpha_{t-1}(j)
P(it−1=qj,o1t−1)=αt−1(j)
能够省略公式中的
o
1
t
−
1
o^{t-1}_1
o1t−1是因为假设,t时刻的状态只与t-1时刻的状态有关,t时刻的观察只与t时刻的状态有关。所以可以去掉。
这里同样是利用乘法规则做变换。:P(AB)=P(A|B)P(B)
在这里A=
o
t
o_t
ot,B=
i
t
=
q
i
i_{t}=q_i
it=qi
这一步替换是根据A方程和B方程的定义来的。
2.2 概率计算
![](https://i-blog.csdnimg.cn/blog_migrate/fb3b40d79111ad420f2aec2509373945.png)
具体计算过程可以通过前向或者后向计算得到。
3 学习算法
已知
O
=
o
1
,
o
2
,
.
.
.
,
o
T
O={o_1,o_2,...,o_T}
O=o1,o2,...,oT,计算
λ
∗
=
a
r
g
m
a
x
P
(
O
∣
λ
)
\lambda^{*}= argmax P(O|\lambda)
λ∗=argmaxP(O∣λ)
已知观测序列,计算模型,计算得到的模型应该是使得观测序列的概率最大。
EM算法是一个一般算法,涉及两类数据,一类数据已知,一类数据未知的时候,可以用EM。
3.1 EM算法
EM算法中观测变量Y 对应 观测序列
EM算法中隐随机变量Z 对应 状态序列
含有隐变量 的概率模型,⽬标是极⼤化观测变量 关于参数 的对数似然函数,即
m
a
x
θ
L
(
θ
)
max_{\theta}L(\theta)
maxθL(θ)
其中
L
(
θ
)
=
l
o
g
P
(
Y
∣
θ
)
L(\theta)=logP(Y|\theta)
L(θ)=logP(Y∣θ)
=
l
o
g
∑
Z
P
(
Y
,
Z
∣
θ
)
=log\sum_ZP(Y,Z|\theta)
=log∑ZP(Y,Z∣θ)(边缘概率到联合概率)
=
l
o
g
∑
Z
P
(
Y
∣
Z
,
θ
)
P
(
Z
∣
θ
)
=log\sum_ZP(Y|Z,\theta)P(Z|\theta)
=log∑ZP(Y∣Z,θ)P(Z∣θ) (乘法规则)
对数似然函数𝐿 (𝜃)与第𝑖次迭代后的对数似然函数
L
(
θ
(
i
)
)
L(\theta^{(i)})
L(θ(i))的差 :
根据Jensen不等式
将上面的式子做以下变形,
得到: L ( θ ) > = B ( θ , θ ( i ) ) L(\theta)>=B(\theta,\theta^{(i)}) L(θ)>=B(θ,θ(i)), B ( θ , θ ( i ) ) B(\theta,\theta^{(i)}) B(θ,θ(i))是一个下界函数。如果不断找到下界函数的最大值,就近似找到了上界函数的最大值。
![](https://i-blog.csdnimg.cn/blog_migrate/86812dafb9c9ea3c0b7cdb790a13e009.png)
记 Q = a r g m a x θ ( ∑ Z P ( Z ∣ Y , θ ( i ) ) l o g P ( Y , Z ∣ θ ) ) Q=arg max_{\theta}(\sum_ZP(Z|Y,\theta^{(i)})logP(Y,Z|\theta)) Q=argmaxθ(∑ZP(Z∣Y,θ(i))logP(Y,Z∣θ))
3.2EM在HMM
对于HMM而言
θ
\theta
θ就是(A,B,π)
Z就是状态序列I
Y就是观测序列O
隐马尔科夫模型是含有隐变量的概率模型: P ( O ∣ λ ) = ∑ P ( O ∣ I , λ ) P ( I ∣ λ ) P(O|\lambda)=\sum P(O|I,\lambda)P(I|\lambda) P(O∣λ)=∑P(O∣I,λ)P(I∣λ)
完全数据 ( O , I ) = ( o 1 , o 2 . . . o T , i 1 , i 2 , . . . i T ) (O,I)=(o_1,o_2...o_T,i_1,i_2,...i_T) (O,I)=(o1,o2...oT,i1,i2,...iT)
完全数据的对数似然函数 l o g P ( O , I ∣ λ ) logP(O,I|\lambda) logP(O,I∣λ)
Q
(
λ
,
λ
−
)
Q(\lambda,\lambda^-)
Q(λ,λ−)函数
使用Baum-Welch算法完成学习过程。
4 预测算法
已知
λ
=
(
A
,
B
,
π
)
\lambda=(A,B,\pi)
λ=(A,B,π)和
O
=
o
1
,
o
2
,
.
.
.
,
o
T
O={o_1,o_2,...,o_T}
O=o1,o2,...,oT,计算
I
∗
=
a
r
g
m
a
x
P
(
I
∣
O
λ
)
I^*=argmaxP(I|O\lambda)
I∗=argmaxP(I∣Oλ)
已知模型和观测序列,计算概率最大的状态序列。
在时刻𝑡状态为𝑖的所有单个路径(𝑖1, 𝑖2, ⋯ , 𝑖𝑡)中概率最⼤值
得到递推公式:
这是一个动态规划的过程。在求得 δ T ( i ) \delta_{T}(i) δT(i)取得最大概率的i,经过倒推获得整个I序列。