闲言碎语
以前一直在看和复现 cv 方向的论文,最近有需求所以去接触了一些 DL-EEG(深度学习-脑电图)的论文和模型,由于这一方向基本没有开源代码,所以从基础学起方便以后自己搭建模型;
而 GMM-HMM 是一个语音识别系统常用的的模型,对于 EEG 这样的时序数据也同样适用,所以今天就看一下 GMM-HMM 模型;
课件地址:
链接: https://pan.baidu.com/s/1T-oApPtrDADrdRr6-BsXtw
提取码: 5q8y
什么是马尔可夫性?
在马尔可夫性的定义中,在已知“现在”的条件下,“将来”与“过去”无关,这种特性就叫强马尔可夫性,具有这种性质的马尔可夫过程叫强马尔可夫过程;
在数学上定义为:
设 X ( t ) , t ∈ T X(t),t\in T X(t),t∈T 是一个随机过程, E E E 为其状态空间,若对任意 t 1 < t 2 < … < t n < t t_1<t_2<…<t_n<t t1<t2<…<tn<t,有任意的 x 1 , x 2 , … , x n , x ∈ E x_1,x_2,…,x_n,x\in E x1,x2,…,xn,x∈E,随机变量 X ( t ) X(t) X(t) 在已知变量 X ( t 1 ) = x 1 , … , X ( t n ) = x n X(t_1)=x_1,…,X(t_n)=x_n X(t1)=x1,…,X(tn)=xn 之下的条件分布函数就至于 X ( t n ) = x n X(t_n)=x_n X(tn)=xn 有关,即条件分布式满足等式:
F ( x , t ∣ x n , x n − 1 , … , x 2 , x 1 , t n , t n − 1 , … , t 2 , t 1 ) = F ( x , t ∣ x n , t n ) F(x,t|x_n,x_{n-1},…,x_2,x_1,t_n,t_{n-1},…,t_2,t_1)=F(x,t|x_n,t_n) F(x,t∣xn,xn−1,…,x2,x1,tn,tn−1,…,t2,t1)=F(x,t∣xn,tn)
即
P { X ( t ) ≤ x ∣ X ( t 1 ) = x 1 , … , X ( t n ) = x n } = P { X ( t ) ≤ x ∣ X ( t n ) = x n } P\lbrace X(t)\le x|X(t_1)=x_1,…,X(t_n)=x_n\rbrace=P\lbrace X(t)\le x|X(t_n)=x_n\rbrace P{X(t)≤x∣X(t1)=x1,…,X(tn)=xn}=P{X(t)≤x∣X(tn)=xn}
一个简单的例子
举一个简单的股票市场的例子(来自徐亦达老师,附上链接 https://github.com/roboticcam):
我们称在
t
t
t 时刻观测到的值/事件记为
y
t
∈
{
Y
1
,
Y
2
,
…
,
Y
L
}
y_t\in\lbrace Y_1,Y_2,…,Y_L\rbrace
yt∈{Y1,Y2,…,YL} ,这
L
L
L 个值分别代表了
L
L
L 种可能事件(图中为 up,down,unchanged 三种可能事件,即
L
=
3
L=3
L=3);
同时这个过程中也有一些隐藏的离散的状态量 q t ∈ { Q 1 , Q 2 , … , Q K } q_t\in\lbrace Q_1,Q_2,…,Q_K\rbrace qt∈{Q1,Q2,…,QK},被称为隐状态,这 K K K 个值分别代表了 K K K 种可能隐状态(图中为Bull,Bear,Even 三种无法直接观测的隐状态,即 K = 3 K=3 K=3);
以下图的时序数据为例:
根据马尔可夫性则有:
P ( q t ∣ q 1 , . . . , q t − 1 , y 1 , . . . , y t − 1 ) = P ( q t ∣ q t − 1 ) P(q_t|q_1, . . . , q_{t-1}, y_1, . . . , y_{t-1}) = P(q_t|q_{t-1}) P(qt∣q1,...,qt−1,y1,...,yt−1)=P(qt∣qt−1)
P ( y t ∣ q 1 , . . . , q t − 1 , q t , y 1 , . . . , y t − 1 ) = P ( y t ∣ q t ) P(y_t|q_1, . . . , q_{t-1},q_t, y_1, . . . , y_{t-1}) = P(y_t|q_{t}) P(yt∣q1,...,qt−1,qt,y1,...,yt−1)=P(yt∣qt)
其中:
- 称 P ( q t ∣ q t − 1 ) P(q_t|q_{t-1}) P(qt∣qt−1) 为转换概率(transition probability),即从隐状态 q t − 1 q_{t-1} qt−1 到 q t q_t qt 的概率;
- 称 P ( y t ∣ q t ) P(y_t|q_{t}) P(yt∣qt) 为输出概率(emission probability),即在隐状态 q t q_{t} qt 下观测到 y t y_t yt 的概率;
为了方便计算,我们将这些概率记为矩阵的形式:
A = { a 0 , 0 a 0 , 1 a 0 , 2 a 1 , 0 a 1 , 1 a 1 , 2 a 2 , 0 a 2 , 1 a 2 , 2 } A= \left\{ \begin{matrix} a_{0,0} & a_{0,1} & a_{0,2}\\ a_{1,0} & a_{1,1} & a_{1,2}\\ a_{2,0} & a_{2,1} & a_{2,2}\\ \end{matrix} \right\} A=⎩⎨⎧a0,0a1,0a2,0a0,1a1,1a2,1a0,2a1,2a2,2⎭⎬⎫
B = { b 0 , 0 b 0 , 1 b 0 , 2 b 1 , 0 b 1 , 1 b 1 , 2 b 2 , 0 b 2 , 1 b 2 , 2 } B= \left\{ \begin{matrix} b_{0,0} & b_{0,1} & b_{0,2}\\ b_{1,0} & b_{1,1} & b_{1,2}\\ b_{2,0} & b_{2,1} & b_{2,2}\\ \end{matrix} \right\} B=⎩⎨⎧b0,0b1,0b2,0b0,1b1,1b2,1b0,2b1,2b2,2⎭⎬⎫
其中:
- A A A 的大小为 K × K K×K K×K, B B B 的大小为 K × L K×L K×L;
- a i , j a_{i,j} ai,j 表示从 Q i Q_i Qi 转移到 Q j Q_j Qj 的概率, b i , j b_{i,j} bi,j 表示在 Q i Q_i Qi 下观测到 Y j Y_j Yj 的概率;
由第一张图我们可以分别写出这些概率,例如:
- 从隐状态 EVEN 到 BULL 的概率为 0.4,可以写作 P ( q t = B U L L ∣ q t − 1 = E V E N ) = 0.4 P(q_t=BULL|q_{t-1}=EVEN)=0.4 P(qt=BULL∣qt−1=EVEN)=0.4,即 a 3 , 1 = 0.4 a_{3,1}=0.4 a3,1=0.4;
- 在隐状态 BEAR 下观测到 DOWN 的概率为 0.6,可以写作 P ( y t = D O W N ∣ q t = B E A R ) = 0.6 P(y_t=DOWN|q_t=BEAR)=0.6 P(yt=DOWN∣qt=BEAR)=0.6,即 b 2 , 2 = 0.6 b_{2,2}=0.6 b2,2=0.6;
为了方便书写,我们令:
q
t
∈
{
B
U
L
L
,
B
E
A
R
,
E
V
E
N
}
=
{
1
,
2
,
3
}
q_t\in\lbrace BULL,BEAR,EVEN\rbrace=\lbrace 1,2,3\rbrace
qt∈{BULL,BEAR,EVEN}={1,2,3}
y
t
∈
{
U
P
,
D
O
W
N
,
U
N
C
H
A
N
G
E
D
}
=
{
1
,
2
,
3
}
y_t\in\lbrace UP,DOWN,UNCHANGED\rbrace=\lbrace 1,2,3\rbrace
yt∈{UP,DOWN,UNCHANGED}={1,2,3}
同时我们可以分别写出 A A A 和 B B B:
A = { 0.6 0.2 0.2 0.5 0.3 0.2 0.4 0.5 0.1 } A= \left\{ \begin{matrix} 0.6 & 0.2 & 0.2\\ 0.5 & 0.3 & 0.2\\ 0.4 & 0.5 & 0.1\\ \end{matrix} \right\} A=⎩⎨⎧0.60.50.40.20.30.50.20.20.1⎭⎬⎫
B = { 0.7 0.1 0.2 0.1 0.6 0.3 0.3 0.3 0.4 } B= \left\{ \begin{matrix} 0.7 & 0.1 & 0.2\\ 0.1 & 0.6 & 0.3\\ 0.3 & 0.3 & 0.4\\ \end{matrix} \right\} B=⎩⎨⎧0.70.10.30.10.60.30.20.30.4⎭⎬⎫
并且我们记 λ = { A , B } \lambda=\lbrace A,B\rbrace λ={A,B},称之为隐马尔可夫模型的参数;
引入隐状态的公式推理
直观上可以看到,原来相互依赖的观测值都变成相互独立了,相互依赖的量变成了
q
t
−
1
→
q
t
→
q
t
+
1
q_{t-1}\rightarrow q_{t}\rightarrow q_{t+1}
qt−1→qt→qt+1,我们就称这样一条链为马尔可夫链;
那么就有:
P
(
y
t
+
1
,
y
t
,
.
.
.
,
y
1
)
=
∑
q
t
+
1
=
1
K
∑
q
t
=
1
K
.
.
.
∑
q
1
=
1
K
P
(
y
t
+
1
,
y
t
,
.
.
.
,
y
1
,
q
t
+
1
,
q
t
,
.
.
.
,
q
1
)
=
∑
q
t
+
1
=
1
K
∑
q
t
=
1
K
.
.
.
∑
q
1
=
1
K
P
(
y
t
+
1
∣
y
t
,
y
t
−
1
,
q
t
+
1
,
q
t
,
q
t
−
1
)
×
P
(
y
t
,
y
t
−
1
,
q
t
+
1
,
q
t
,
q
t
−
1
)
\begin{aligned} P(y_{t+1},y_t,...,y_{1}) & =\sum_{q_{t+1}=1}^K\sum_{q_{t}=1}^K...\sum_{q_{1}=1}^KP(y_{t+1},y_t,...,y_{1},q_{t+1},q_t,...,q_{1}) \\ & =\sum_{q_{t+1}=1}^K\sum_{q_{t}=1}^K...\sum_{q_{1}=1}^KP(y_{t+1}|y_t,y_{t-1},q_{t+1},q_t,q_{t-1})×P(y_t,y_{t-1},q_{t+1},q_t,q_{t-1}) \\ \end{aligned}
P(yt+1,yt,...,y1)=qt+1=1∑Kqt=1∑K...q1=1∑KP(yt+1,yt,...,y1,qt+1,qt,...,q1)=qt+1=1∑Kqt=1∑K...q1=1∑KP(yt+1∣yt,yt−1,qt+1,qt,qt−1)×P(yt,yt−1,qt+1,qt,qt−1)
由马尔可夫性可以化简为:
P
(
y
t
+
1
,
y
t
,
.
.
.
,
y
1
)
=
∑
q
t
+
1
=
1
K
∑
q
t
=
1
K
.
.
.
∑
q
1
=
1
K
P
(
y
t
+
1
∣
q
t
+
1
)
×
P
(
y
t
,
y
t
−
1
,
q
t
+
1
,
q
t
,
q
t
−
1
)
\begin{aligned} P(y_{t+1},y_t,...,y_{1}) & =\sum_{q_{t+1}=1}^K\sum_{q_{t}=1}^K...\sum_{q_{1}=1}^KP(y_{t+1}|q_{t+1})×P(y_t,y_{t-1},q_{t+1},q_t,q_{t-1}) \\ \end{aligned}
P(yt+1,yt,...,y1)=qt+1=1∑Kqt=1∑K...q1=1∑KP(yt+1∣qt+1)×P(yt,yt−1,qt+1,qt,qt−1)
同样可以继续化简为:
P ( y t + 1 , y t , . . . , y 1 ) = ∑ q t + 1 = 1 K ∑ q t = 1 K . . . ∑ q 1 = 1 K P ( y t + 1 ∣ q t + 1 ) × P ( q t + 1 ∣ y t , y t − 1 , q t , q t − 1 ) × P ( y t , y t − 1 , q t , q t − 1 ) = ∑ q t + 1 = 1 K ∑ q t = 1 K . . . ∑ q 1 = 1 K P ( y t + 1 ∣ q t + 1 ) × P ( q t + 1 ∣ q t ) × P ( y t , y t − 1 , q t , q t − 1 ) = . . . ( 注 意 到 这 是 递 归 式 ) = ∑ q t + 1 = 1 K ∑ q t = 1 K . . . ∑ q 1 = 1 K P ( y t + 1 ∣ q t + 1 ) × P ( q t + 1 ∣ q t ) × . . . × P ( y 1 ∣ q 1 ) × P ( q 1 ) \begin{aligned} P(y_{t+1},y_t,...,y_{1})& =\sum_{q_{t+1}=1}^K\sum_{q_{t}=1}^K...\sum_{q_{1}=1}^KP(y_{t+1}|q_{t+1})×P(q_{t+1}|y_t,y_{t-1},q_t,q_{t-1})×P(y_t,y_{t-1},q_t,q_{t-1}) \\ & =\sum_{q_{t+1}=1}^K\sum_{q_{t}=1}^K...\sum_{q_{1}=1}^KP(y_{t+1}|q_{t+1})×P(q_{t+1}|q_t)×P(y_t,y_{t-1},q_t,q_{t-1}) \\ &=...(注意到这是递归式)\\ & =\sum_{q_{t+1}=1}^K\sum_{q_{t}=1}^K...\sum_{q_{1}=1}^KP(y_{t+1}|q_{t+1})×P(q_{t+1}|q_t)×...×P(y_{1}|q_{1})×P(q_1) \\ \end{aligned} P(yt+1,yt,...,y1)=qt+1=1∑Kqt=1∑K...q1=1∑KP(yt+1∣qt+1)×P(qt+1∣yt,yt−1,qt,qt−1)×P(yt,yt−1,qt,qt−1)=qt+1=1∑Kqt=1∑K...q1=1∑KP(yt+1∣qt+1)×P(qt+1∣qt)×P(yt,yt−1,qt,qt−1)=...(注意到这是递归式)=qt+1=1∑Kqt=1∑K...q1=1∑KP(yt+1∣qt+1)×P(qt+1∣qt)×...×P(y1∣q1)×P(q1)
当然我们还可以注意到,式子中有一项 P ( q 1 ) P(q_1) P(q1) 是未知的,那我们就给它一个初始化值,称之为 π \pi π,这样我们的隐马尔可夫模型完整的参数就写作:
λ = { A , B , π } \lambda=\lbrace A,B,\pi\rbrace λ={A,B,π}
那么在参数 λ \lambda λ 下完整的隐马尔可夫概率模型就可以表示为:
P ( y t + 1 , y t , . . . , y 1 ∣ λ ) = ∑ q t + 1 = 1 K ∑ q t = 1 K . . . ∑ q 1 = 1 K P ( y t + 1 ∣ q t + 1 ) × P ( q t + 1 ∣ q t ) × . . . × P ( y 1 ∣ q 1 ) × P ( q 1 ) \begin{aligned} P(y_{t+1},y_t,...,y_{1}|\lambda)& =\sum_{q_{t+1}=1}^K\sum_{q_{t}=1}^K...\sum_{q_{1}=1}^KP(y_{t+1}|q_{t+1})×P(q_{t+1}|q_t)×...×P(y_{1}|q_{1})×P(q_1)\\ \end{aligned} P(yt+1,yt,...,y1∣λ)=qt+1=1∑Kqt=1∑K...q1=1∑KP(yt+1∣qt+1)×P(qt+1∣qt)×...×P(y1∣q1)×P(q1)
更具体一点,对于一组观测值 Y T = { y 1 , y 2 , . . . , y T } Y_T=\lbrace y_1,y_2,...,y_T\rbrace YT={y1,y2,...,yT},隐马尔可夫模型对它的概率预测为:
P ( y T , y T − 1 , . . . , y 1 ∣ λ ) = ∑ q T = 1 K ∑ q T − 1 = 1 K . . . ∑ q 1 = 1 K P ( y T ∣ q T ) × P ( q T ∣ q T − 1 ) × . . . × P ( y 1 ∣ q 1 ) × P ( q 1 ) = ∑ q T = 1 K ∑ q T − 1 = 1 K . . . ∑ q 1 = 1 K π ( q 1 ) ∏ t = 2 T a q t − 1 , q t b q t ( y t ) \begin{aligned} P(y_{T},y_{T-1},...,y_{1}|\lambda)&=\sum_{q_{T}=1}^K\sum_{q_{T-1}=1}^K...\sum_{q_{1}=1}^KP(y_{T}|q_{T})×P(q_{T}|q_{T-1})×...×P(y_{1}|q_{1})×P(q_1)\\ & =\sum_{q_{T}=1}^K\sum_{q_{T-1}=1}^K...\sum_{q_{1}=1}^K\pi(q_1)\prod_{t=2}^{T}a_{q_{t-1},q_{t}}b_{q_{t}}(y_t)\\ \end{aligned} P(yT,yT−1,...,y1∣λ)=qT=1∑KqT−1=1∑K...q1=1∑KP(yT∣qT)×P(qT∣qT−1)×...×P(y1∣q1)×P(q1)=qT=1∑KqT−1=1∑K...q1=1∑Kπ(q1)t=2∏Taqt−1,qtbqt(yt)
简化推理式
虽然我们得到了上述式子,但是存在的问题就是它的计算复杂度较高,对于长度为 T T T 的序列,需要进行 K T K^T KT 次计算;
为了简化推理式,我们首先定义如下概念:
定义一: α i ( t ) = P ( y 1 , y 2 , . . . , y t , q t = i ∣ λ ) \alpha_i(t)=P(y_1,y_2,...,y_t,q_t=i|\lambda) αi(t)=P(y1,y2,...,yt,qt=i∣λ),为 q t = i q_t=i qt=i 和它的所有观测值 y 1 , y 2 , . . . , y t y_1,y_2,...,y_t y1,y2,...,yt 的联合概率;
定义二: β i ( t ) = P ( y t + 1 , . . . , y T ∣ q t = i , λ ) \beta_i(t)=P(y_{t+1},...,y_{T}|q_t=i,\lambda) βi(t)=P(yt+1,...,yT∣qt=i,λ),为 q t = i q_t=i qt=i 条件下其他的观测值 y t + 1 , . . . , t T y_{t+1},...,t_T yt+1,...,tT 的联合概率;
那么我们可以写出:
(1)
α
i
(
1
)
=
P
(
y
1
,
q
1
=
i
)
=
P
(
y
1
∣
q
1
=
i
)
×
P
(
q
1
=
i
)
=
b
i
(
y
1
)
×
π
\begin{aligned} \alpha_i(1)&=P(y_1,q_1=i)\\ &=P(y_1|q_1=i)×P(q_1=i)\\ &=b_i(y_1)×\pi \end{aligned}
αi(1)=P(y1,q1=i)=P(y1∣q1=i)×P(q1=i)=bi(y1)×π
(2)
α j ( 2 ) = P ( y 1 , y 2 , q 2 = j ) = ∑ i = 1 K P ( y 1 , y 2 , q 1 = i , q 2 = j ) = ∑ i = 1 K P ( y 2 ∣ q 2 = j ) × P ( q 2 = j ∣ q 1 = j ) × P ( y 1 , q 1 = i ) = P ( y 2 ∣ q 2 = j ) ∑ i = 1 K P ( q 2 = j ∣ q 1 = i ) × α i ( 1 ) = b j ( y 2 ) ∑ i = 1 K a i , j α i ( 1 ) \begin{aligned} \alpha_j(2)&=P(y_1,y_2,q_2=j)\\ &=\sum_{i=1}^K P(y_1,y_2,q_1=i,q_2=j)\\ &=\sum_{i=1}^K P(y_2|q_2=j)×P(q2=j|q_1=j)×P(y_1,q_1=i)\\ &=P(y_2|q_2=j)\sum_{i=1}^KP(q_2=j|q_1=i)×\alpha_i(1)\\ &=b_j(y_2)\sum_{i=1}^Ka_{i,j}\alpha_i(1) \end{aligned} αj(2)=P(y1,y2,q2=j)=i=1∑KP(y1,y2,q1=i,q2=j)=i=1∑KP(y2∣q2=j)×P(q2=j∣q1=j)×P(y1,q1=i)=P(y2∣q2=j)i=1∑KP(q2=j∣q1=i)×αi(1)=bj(y2)i=1∑Kai,jαi(1)
. . . . . . ...... ......
以此类推,我们就可以得到:
α j ( T ) = b j ( y T ) ∑ i = 1 K a i , j α i ( T − 1 ) \begin{aligned} \alpha_j(T)=b_j(y_T)\sum^K_{i=1}a_{i,j}\alpha_i(T-1) \end{aligned} αj(T)=bj(yT)i=1∑Kai,jαi(T−1)
这样的递推关系中,由于每个 α ( t ) \alpha(t) α(t) 只计算一次 s u m sum sum,故计算复杂度为 K × T K×T K×T;
此时我们再看一下定义一:
α i ( t ) = P ( y 1 , y 2 , . . . , y t , q t = i ∣ λ ) \alpha_i(t)=P(y_1,y_2,...,y_t,q_t=i|\lambda) αi(t)=P(y1,y2,...,yt,qt=i∣λ)
我们可以写出:
P ( y T , y T − 1 , . . . , y 1 ∣ λ ) = ∑ j = 1 K α j ( T ) P(y_{T},y_{T-1},...,y_{1}|\lambda)=\sum_{j=1}^K\alpha_j(T) P(yT,yT−1,...,y1∣λ)=j=1∑Kαj(T)
这种算法就叫做 Forward Algorithm;
还有一种对应的算法 Backward Algorithm,可以在已知全部序列时算出所有事件的概率,即:
P ( Y , q t = i ) = P ( Y ∣ q t = i ) × P ( q t = i ) = P ( y 1 , . . . , y t ∣ q t = i ) × P ( y t + 1 , . . . , y T ∣ q t = i ) × P ( q t = i ) = α i ( t ) × β i ( t ) \begin{aligned} P(Y,q_t=i)&=P(Y|q_t=i)×P(q_t=i)\\ &=P(y_1,...,y_t|q_t=i)×P(y_{t+1},...,y_T|q_t=i)×P(q_t=i)\\ &=\alpha_i(t)×\beta_i(t) \end{aligned} P(Y,qt=i)=P(Y∣qt=i)×P(qt=i)=P(y1,...,yt∣qt=i)×P(yt+1,...,yT∣qt=i)×P(qt=i)=αi(t)×βi(t)
如何获取参数值?
参数值可以通过最大似然估计获取,即对于给定的 n n n 个已知观测值的数据 Y N = { Y 1 , Y 2 , . . . , Y N } Y_N=\lbrace Y^{1},Y^{2},...,Y^{N}\rbrace YN={Y1,Y2,...,YN},我们可以通过以下方程求解参数 λ \lambda λ 的估计值:
λ ^ = arg max λ l o g P ( Y 1 , Y 2 , . . . , Y n ∣ λ ) \hat{\lambda}=\argmax_{\lambda}logP(Y^{1},Y^{2},...,Y^{n}|\lambda) λ^=λargmaxlogP(Y1,Y2,...,Yn∣λ)
通常这个估计方程的解会非常复杂,因此我们采用 EM 算法去估计参数值,EM 算法的详细解释和收敛性证明可以看我的这一篇:
这里直接给出迭代步骤:
我们先假设隐藏参数 ε t ( i , j ) = P ( q t = i , q t + 1 ∣ Y , λ ) \varepsilon_t(i,j)=P(q_t=i,q_{t+1}|Y,\lambda) εt(i,j)=P(qt=i,qt+1∣Y,λ),表示对于给定的参数 λ \lambda λ 和 观测序列 Y ∈ Y N Y\in Y_N Y∈YN, Y = { y 1 , . . . , y n } Y=\lbrace y_1,...,y_n\rbrace Y={y1,...,yn},在 t t t 时刻为状态 i i i 并且在 t + 1 t+1 t+1 时刻为状态 j j j 的概率;
展开为:
ε t ( i , j ) = P ( q t = i , q t + 1 = j , Y ∣ λ ) P ( Y ∣ λ ) = α t ( i ) a i , j b j ( y t + 1 ) β t + 1 ( j ) P ( Y N ∣ λ ) = α t ( i ) a i , j b j ( y t + 1 ) β t + 1 ( j ) ∑ i = 1 K ∑ j = 1 K α t ( i ) a i , j b j ( y t + 1 ) β t + 1 ( j ) \begin{aligned} \varepsilon_t(i,j)&=\frac{P(q_t=i,q_{t+1}=j,Y|\lambda)}{P(Y|\lambda)} \\ &=\frac{\alpha_t(i)a_{i,j}b_j(y_{t+1})\beta_{t+1}(j)}{P(Y_N|\lambda)}\\ &=\frac{\alpha_t(i)a_{i,j}b_j(y_{t+1})\beta_{t+1}(j)}{\sum_{i=1}^K\sum_{j=1}^K\alpha_t(i)a_{i,j}b_j(y_{t+1})\beta_{t+1}(j)}\\ \end{aligned} εt(i,j)=P(Y∣λ)P(qt=i,qt+1=j,Y∣λ)=P(YN∣λ)αt(i)ai,jbj(yt+1)βt+1(j)=∑i=1K∑j=1Kαt(i)ai,jbj(yt+1)βt+1(j)αt(i)ai,jbj(yt+1)βt+1(j)
并定义参数 γ t ( i ) = ∑ i = 1 n ε t ( i , j ) , 1 ≤ t ≤ T \gamma_t(i)=\sum_{i=1}^n\varepsilon_t(i,j),1\le t\le T γt(i)=∑i=1nεt(i,j),1≤t≤T,表示对于给定的 λ \lambda λ 和 Y Y Y 下 t t t 时为状态 i i i 的概率;
那么将 t t t 带入上式,就可以得到表示为状态 i i i 转移出去的次数的期望值 ε t ( i , j ) \varepsilon_t(i,j) εt(i,j) ,和表示为从状态 i i i 到状态 j j j 的次数的期望值 γ t ( i ) \gamma_t(i) γt(i);
因此就可以得到参数 λ \lambda λ 的估计值:
π
i
^
=
γ
1
(
i
)
\hat{\pi_i}=\gamma_1(i)
πi^=γ1(i)
a
^
i
,
j
=
∑
t
=
1
T
−
1
ε
t
(
i
,
j
)
∑
t
=
1
T
−
1
γ
t
(
i
)
\hat{a}_{i,j}=\frac{\sum_{t=1}^{T-1}\varepsilon_t(i,j)}{\sum_{t=1}^{T-1}\gamma_t(i)}
a^i,j=∑t=1T−1γt(i)∑t=1T−1εt(i,j)
b
^
j
(
k
)
=
∑
t
=
1
T
γ
t
(
j
)
δ
(
y
t
,
k
)
∑
t
=
1
T
γ
t
(
j
)
\hat{b}_j(k)=\frac{\sum_{t=1}^{T}\gamma_t(j)\delta(y_t,k)}{\sum_{t=1}^{T}\gamma_t(j)}
b^j(k)=∑t=1Tγt(j)∑t=1Tγt(j)δ(yt,k)
其中:
δ ( x , k ) = { 1 x=k 0 x!=k \delta(x,k)= \begin{cases} 1& \text{x=k}\\ 0& \text{x!=k} \end{cases} δ(x,k)={10x=kx!=k
迭代过程为:
- 初始化参数 λ = { A , B , π } \lambda=\lbrace A,B,\pi\rbrace λ={A,B,π};
- E-Step:由参数估计值 λ i \lambda_i λi 计算 ε t ( i , j ) \varepsilon_t(i,j) εt(i,j) 和 γ t ( i ) \gamma_t(i) γt(i);
- M-Step:用期望 ε t ( i , j ) \varepsilon_t(i,j) εt(i,j) 和 γ t ( i ) \gamma_t(i) γt(i) 得到参数估计值 λ i + 1 \lambda_{i+1} λi+1;
其中:
E-step 和 M-Step 循环迭代,直到参数 λ \lambda λ 收敛;
关注我的公众号:
感兴趣的同学关注我的公众号——可达鸭的深度学习教程: