【机器学习基础】一文读懂隐马尔可夫模型 HMM

闲言碎语

以前一直在看和复现 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),tT 是一个随机过程, 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,xE,随机变量 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,txn,xn1,,x2,x1,tn,tn1,,t2,t1)=F(x,txn,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)xX(t1)=x1,,X(tn)=xn}=P{X(t)xX(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(qtq1,...,qt1,y1,...,yt1)=P(qtqt1)

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(ytq1,...,qt1,qt,y1,...,yt1)=P(ytqt)

其中:

  1. P ( q t ∣ q t − 1 ) P(q_t|q_{t-1}) P(qtqt1) 为转换概率(transition probability),即从隐状态 q t − 1 q_{t-1} qt1 q t q_t qt 的概率;
  2. P ( y t ∣ q t ) P(y_t|q_{t}) P(ytqt) 为输出概率(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

其中:

  1. A A A 的大小为 K × K K×K K×K B B B 的大小为 K × L K×L K×L
  2. 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 的概率;

由第一张图我们可以分别写出这些概率,例如:

  1. 从隐状态 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=BULLqt1=EVEN)=0.4,即 a 3 , 1 = 0.4 a_{3,1}=0.4 a3,1=0.4
  2. 在隐状态 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=DOWNqt=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} qt1qtqt+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=1Kqt=1K...q1=1KP(yt+1,yt,...,y1,qt+1,qt,...,q1)=qt+1=1Kqt=1K...q1=1KP(yt+1yt,yt1,qt+1,qt,qt1)×P(yt,yt1,qt+1,qt,qt1)
由马尔可夫性可以化简为:
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=1Kqt=1K...q1=1KP(yt+1qt+1)×P(yt,yt1,qt+1,qt,qt1)

同样可以继续化简为:

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=1Kqt=1K...q1=1KP(yt+1qt+1)×P(qt+1yt,yt1,qt,qt1)×P(yt,yt1,qt,qt1)=qt+1=1Kqt=1K...q1=1KP(yt+1qt+1)×P(qt+1qt)×P(yt,yt1,qt,qt1)=...=qt+1=1Kqt=1K...q1=1KP(yt+1qt+1)×P(qt+1qt)×...×P(y1q1)×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=1Kqt=1K...q1=1KP(yt+1qt+1)×P(qt+1qt)×...×P(y1q1)×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,yT1,...,y1λ)=qT=1KqT1=1K...q1=1KP(yTqT)×P(qTqT1)×...×P(y1q1)×P(q1)=qT=1KqT1=1K...q1=1Kπ(q1)t=2Taqt1,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,...,yTqt=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(y1q1=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=1KP(y1,y2,q1=i,q2=j)=i=1KP(y2q2=j)×P(q2=jq1=j)×P(y1,q1=i)=P(y2q2=j)i=1KP(q2=jq1=i)×αi(1)=bj(y2)i=1Kai,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=1Kai,jαi(T1)

这样的递推关系中,由于每个 α ( 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,yT1,...,y1λ)=j=1Kα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(Yqt=i)×P(qt=i)=P(y1,...,ytqt=i)×P(yt+1,...,yTqt=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 算法的详细解释和收敛性证明可以看我的这一篇:

【机器学习基础】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+1Y,λ),表示对于给定的参数 λ \lambda λ 和 观测序列 Y ∈ Y N Y\in Y_N YYN 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=1Kj=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),1tT,表示对于给定的 λ \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=1T1γt(i)t=1T1ε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

迭代过程为:

  1. 初始化参数 λ = { A , B , π } \lambda=\lbrace A,B,\pi\rbrace λ={A,B,π}
  2. E-Step:由参数估计值 λ i \lambda_i λi 计算 ε t ( i , j ) \varepsilon_t(i,j) εt(i,j) γ t ( i ) \gamma_t(i) γt(i)
  3. 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 λ 收敛;

关注我的公众号:

感兴趣的同学关注我的公众号——可达鸭的深度学习教程:
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BIT可达鸭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值