说明:个人学习笔记,大量摘抄参考资料[2][3][4]的内容。
概述
隐马尔可夫模型(Hidden Markov Model, HMM)是一种结构简单的动态贝叶斯网络,描述了一个含有隐含未知参数的马尔可夫过程,主要用于时序数据建模,在语音识别、自然语言处理等领域有广泛应用。下文主要讨论马尔可夫模型的参数、假设和基本问题。

| 变量 | 定义 |
|---|---|
| x = { x 1 , x 2 , . . . , x n } \textbf{x}=\{x_1,x_2,...,x_n\} x={x1,x2,...,xn} | 观测变量 |
| { o 1 , o 2 , . . . , o M } \{o_1,o_2,...,o_M\} {o1,o2,...,oM} | 观测变量的取值范围 |
| y = { y 1 , y 2 , . . . , y n } \textbf{y}=\{y_1,y_2,...,y_n\} y={y1,y2,...,yn} | 状态变量(隐变量) |
| { s 1 , s 2 , . . . , s N } \{s_1,s_2,...,s_N\} {s1,s2,...,sN} | 状态变量的取值范围(状态空间) |
三个参数
- 状态转移概率 A A A:模型在各个状态间转换的概率,记为 A = [ a i j ] N × N A=[a_{ij}]_{N \times N} A=[aij]N×N,其中
a i j = P ( y t + 1 = s j ∣ y t = s i ) a_{ij}=P(y_{t+1}=s_j|y_t=s_i) aij=P(yt+1=sj∣yt=si)
表示在任意时刻 t t t,若状态为 s i s_i si,则在下一时刻状态变为 s j s_j sj的概率。
- 输出观测概率 B B B:模型根据当前状态获得各个观测值的概率,记为 B = [ b i j ] N × M B=[b_{ij}]_{N \times M} B=[bij]N×M,其中
b i j = P ( x t = o j ∣ y t = s i ) b_{ij}=P(x_t=o_j|y_t=s_i) bij=P(xt=oj∣yt=si)
表示在任意时刻 t t t,若状态为 s i s_i si,则观测值 o j o_j oj被获取的概率。
- 初始状态概率 π \pi π:模型在初始时刻各状态出现的概率,记为 π = ( π 1 , π 2 , . . . , π N ) \pi=(\pi_1,\pi_2,...,\pi_N) π=(π1,π2,...,πN),其中
π i = P ( y 1 = s i ) \pi_i=P(y_1=s_i) πi=P(y1=si)
表示模型的初始状态为 s i s_i si的概率
两个假设
- 齐次马尔可夫假设:又称一阶马尔可夫假设,任意时刻的状态只依赖前一时刻的状态,与其他时刻无关。公式表达如下
P ( y t + 1 ∣ y t , y t − 1 , . . . , y 1 , x t , x t − 1 , . . . , x 1 ) = P ( y t + 1 ∣ y t ) P(y_{t+1}|y_t,y_{t-1},...,y_1,x_t,x_{t-1},...,x_1)=P(y_{t+1}|y_t) P(yt+1∣yt,yt−1,...,y1,xt,xt−1,...,x1)=P(yt+1∣yt)
- 观测独立性假设:任意时刻的观测只依赖于该时刻的状态,与其他状态无关。公式表达如下
P ( x t ∣ y t , y t − 1 , . . . , y 1 , x t − 1 , . . . , x 1 ) = P ( x t ∣ y t ) P(x_t|y_t,y_{t-1},...,y_1,x_{t-1},...,x_1)=P(x_t|y_t) P(xt∣yt,yt−1,...,y1,xt−1,...,x1)=P(xt∣yt)
参考资料[6]还提到参数不变性假设,即上节中的三个参数不随时间变化而变化。因对参数 A A A和 B B B的定义已使用“任意时刻 t t t”及参数 π \pi π的定义已规定为初始时刻,故已默认其不受时间变化而变化,因此在此不单独列出作为一条假设。
三个问题
评估问题
已知 λ \lambda λ,求 P ( x ∣ λ ) P(\textbf{x}|\lambda) P(x∣λ),即评估模型与观测序列之间的匹配程度。常用求解方法有前向算法、后向算法。
如果直接进行暴力求解,有公式
P
(
x
∣
λ
)
=
∑
y
P
(
y
,
x
∣
λ
)
=
∑
y
P
(
y
∣
λ
)
⋅
P
(
x
∣
y
,
λ
)
P(\textbf{x}|\lambda)=\sum_{\textbf{y}}P(\textbf{y},\textbf{x}|\lambda)=\sum_{\textbf{y}}{P(\textbf{y}|\lambda) \cdot P(\textbf{x}|\textbf{y},\lambda)}
P(x∣λ)=y∑P(y,x∣λ)=y∑P(y∣λ)⋅P(x∣y,λ)
其中又有
P
(
y
∣
λ
)
=
P
(
y
1
,
.
.
.
,
y
T
∣
λ
)
=
P
(
y
1
∣
y
2
,
.
.
.
,
y
T
,
λ
)
⋅
P
(
y
2
,
.
.
.
,
y
T
∣
λ
)
=
P
(
y
1
∣
y
2
)
⋅
P
(
y
2
,
.
.
.
,
y
T
∣
λ
)
(
假
设
1
)
=
a
y
1
,
y
2
P
(
y
2
,
.
.
.
,
y
T
∣
λ
)
=
⋯
=
π
y
1
∏
t
=
1
T
a
y
i
−
1
,
y
i
P
(
x
∣
y
,
λ
)
=
∏
t
=
1
T
b
y
t
,
x
t
\begin{aligned} P(\textbf{y}|\lambda)&=P(y1,...,y_T|\lambda)\\ &=P(y_1|y_2,...,y_T,\lambda) \cdot P(y_2,...,y_T|\lambda)\\ &= P(y_1|y_2) \cdot P(y_2,...,y_T|\lambda)(假设1)\\ &=a_{y_1,y_2}P(y_2,...,y_T|\lambda)= \cdots \\ &= \pi_{y_1}\prod_{t=1}^{T}a_{y_{i-1},y_i}\\ P(\textbf{x}|\textbf{y},\lambda)&=\prod_{t=1}^{T}{b_{y_t,x_t}} \end{aligned}
P(y∣λ)P(x∣y,λ)=P(y1,...,yT∣λ)=P(y1∣y2,...,yT,λ)⋅P(y2,...,yT∣λ)=P(y1∣y2)⋅P(y2,...,yT∣λ)(假设1)=ay1,y2P(y2,...,yT∣λ)=⋯=πy1t=1∏Tayi−1,yi=t=1∏Tbyt,xt
则可以得到
P
(
x
∣
λ
)
=
∑
y
π
y
1
∏
t
=
1
T
a
y
t
−
1
,
y
t
∏
t
=
1
T
b
y
t
,
x
t
P(\textbf{x}|\lambda)=\sum_{\textbf{y}}\pi_{y_1}\prod_{t=1}^{T}a_{y_{t-1},y_t}\prod_{t=1}^{T}{b_{y_t,x_t}}
P(x∣λ)=y∑πy1t=1∏Tayt−1,ytt=1∏Tbyt,xt
其中状态序列 y \textbf{y} y包括 T T T个状态,每个状态又有 N N N种取值可能,因此求和符号中包含 N T N^T NT项,整个计算公式的时间复杂度高达 O ( N T ) O(N^T) O(NT)。
前向算法
设前向概率
α
t
(
j
)
=
P
(
x
1
,
.
.
.
,
x
t
,
y
t
=
s
j
∣
λ
)
\alpha_t(j)=P(x_1,...,x_t,y_t=s_j|\lambda)
αt(j)=P(x1,...,xt,yt=sj∣λ),则有
P
(
x
∣
λ
)
=
∑
i
=
1
N
P
(
x
,
y
T
=
s
i
∣
λ
)
=
∑
i
=
1
N
α
T
(
i
)
P(\textbf{x}|\lambda)=\sum_{i=1}^{N}{P(\textbf{x},y_T=s_i|\lambda)}=\sum_{i=1}^{N}{\alpha_{T}(i)}
P(x∣λ)=i=1∑NP(x,yT=si∣λ)=i=1∑NαT(i)
可知
α
1
(
i
)
=
P
(
x
1
,
y
1
=
s
i
∣
λ
)
=
P
(
y
1
=
s
i
)
⋅
P
(
x
1
∣
y
1
=
s
i
,
λ
)
=
π
i
b
i
,
x
1
\alpha_1(i)=P(x_1,y_1=s_i|\lambda)=P(y_1=s_i) \cdot P(x_1|y_1=s_i,\lambda)=\pi_{i}b_{i,x_1}
α1(i)=P(x1,y1=si∣λ)=P(y1=si)⋅P(x1∣y1=si,λ)=πibi,x1
现在只需求出
α
t
(
i
)
\alpha_t(i)
αt(i)和
α
t
+
1
(
i
)
\alpha_{t+1}(i)
αt+1(i)之间的关系式:
α
t
+
1
(
j
)
=
P
(
x
1
,
.
.
.
,
x
t
+
1
,
y
t
+
1
=
s
j
∣
λ
)
=
∑
i
=
1
N
P
(
x
1
,
.
.
.
,
x
t
+
1
,
y
t
+
1
=
s
j
,
y
t
=
s
i
∣
λ
)
=
∑
i
=
1
N
P
(
x
t
+
1
∣
x
1
,
.
.
.
,
x
t
,
y
t
+
1
=
s
j
,
y
t
=
s
i
,
λ
)
⋅
P
(
x
1
,
.
.
.
,
x
t
,
y
t
+
1
=
s
j
,
y
t
=
s
i
∣
λ
)
=
∑
i
=
1
N
P
(
x
t
+
1
∣
y
t
+
1
=
s
j
)
⋅
P
(
x
1
,
.
.
.
,
x
t
,
y
t
+
1
=
s
j
,
y
t
=
s
i
∣
λ
)
(
假
设
1
)
=
∑
i
=
1
N
P
(
x
t
+
1
∣
y
t
+
1
=
s
j
)
⋅
P
(
y
t
+
1
=
s
j
∣
x
1
,
.
.
.
,
x
t
,
y
t
=
s
i
,
λ
)
⋅
P
(
x
1
,
.
.
.
,
x
t
,
y
t
=
s
i
∣
λ
)
=
∑
i
=
1
N
P
(
x
t
+
1
∣
y
t
+
1
=
s
j
)
⋅
P
(
y
t
+
1
=
s
j
∣
y
t
=
s
i
)
⋅
P
(
x
1
,
.
.
.
,
x
t
,
y
t
=
s
i
∣
λ
)
(
假
设
2
)
=
b
j
,
x
t
+
1
∑
i
=
1
N
a
i
j
α
t
(
i
)
\begin{aligned} \alpha_{t+1}(j)&=P(x_1,...,x_{t+1},y_{t+1}=s_j|\lambda)=\sum_{i=1}^N{P(x_1,...,x_{t+1},y_{t+1}=s_j,y_t=s_i|\lambda)}\\ &=\sum_{i=1}^N{P(x_{t+1}|x_1,...,x_t,y_{t+1}=s_j,y_t=s_i,\lambda)} \cdot P(x_1,...,x_t,y_{t+1}=s_j,y_t=s_i|\lambda)\\ &=\sum_{i=1}^N{P(x_{t+1}|y_{t+1}=s_j)} \cdot P(x_1,...,x_t,y_{t+1}=s_j,y_t=s_i|\lambda) (假设1)\\ &=\sum_{i=1}^N{P(x_{t+1}|y_{t+1}=s_j)} \cdot P(y_{t+1}=s_j|x_1,...,x_t,y_t=s_i,\lambda) \cdot P(x_1,...,x_t,y_t=s_i|\lambda)\\ &=\sum_{i=1}^N{P(x_{t+1}|y_{t+1}=s_j)} \cdot P(y_{t+1}=s_j|y_t=s_i) \cdot P(x_1,...,x_t,y_t=s_i|\lambda)(假设2)\\ &=b_{j,x_{t+1}}\sum_{i=1}^Na_{ij}\alpha_t(i) \end{aligned}
αt+1(j)=P(x1,...,xt+1,yt+1=sj∣λ)=i=1∑NP(x1,...,xt+1,yt+1=sj,yt=si∣λ)=i=1∑NP(xt+1∣x1,...,xt,yt+1=sj,yt=si,λ)⋅P(x1,...,xt,yt+1=sj,yt=si∣λ)=i=1∑NP(xt+1∣yt+1=sj)⋅P(x1,...,xt,yt+1=sj,yt=si∣λ)(假设1)=i=1∑NP(xt+1∣yt+1=sj)⋅P(yt+1=sj∣x1,...,xt,yt=si,λ)⋅P(x1,...,xt,yt=si∣λ)=i=1∑NP(xt+1∣yt+1=sj)⋅P(yt+1=sj∣yt=si)⋅P(x1,...,xt,yt=si∣λ)(假设2)=bj,xt+1i=1∑Naijαt(i)
前向算法求解步骤如下:
step1 初始化
α
1
(
i
)
=
π
i
b
j
1
,
i
=
1
,
2
,
.
.
.
,
N
\alpha_1(i)=\pi_{i}b_{j1}, i=1,2,...,N
α1(i)=πibj1,i=1,2,...,N
step2 从前向后,逐步递推求
α
t
+
1
(
i
)
=
b
j
,
x
t
+
1
∑
i
=
1
N
a
i
j
α
t
(
i
)
,
t
=
1
,
.
.
.
,
T
−
1
\alpha_{t+1}(i)=b_{j,x_{t+1}}\sum_{i=1}^Na_{ij}\alpha_t(i),t=1,...,T-1
αt+1(i)=bj,xt+1∑i=1Naijαt(i),t=1,...,T−1
step3 对
T
T
T时刻的所有前向概率求和
P
(
x
∣
λ
)
=
∑
i
=
1
N
α
T
(
i
)
P(\textbf{x}|\lambda)=\sum_{i=1}^{N}{\alpha_{T}(i)}
P(x∣λ)=∑i=1NαT(i)
后向算法
设后向概率
β
t
(
i
)
=
P
(
x
t
+
1
,
.
.
.
,
x
T
∣
y
t
=
s
i
,
λ
)
\beta_t(i)=P(x_{t+1},...,x_T|y_t=s_i,\lambda)
βt(i)=P(xt+1,...,xT∣yt=si,λ),则有
P
(
x
∣
λ
)
=
∑
i
=
1
N
P
(
x
∣
y
1
=
s
i
,
λ
)
⋅
P
(
y
1
=
s
i
∣
λ
)
=
∑
i
=
1
N
P
(
x
1
∣
x
2
,
.
.
.
,
x
T
,
y
1
=
s
i
,
λ
)
⋅
P
(
x
2
,
.
.
.
,
x
T
∣
y
1
=
s
i
,
λ
)
⋅
π
i
=
∑
i
=
1
N
π
i
P
(
x
1
∣
y
1
=
s
i
)
β
1
(
i
)
(
假
设
2
)
=
∑
i
=
1
N
π
i
b
i
,
x
1
β
1
(
i
)
\begin{aligned} P(\textbf{x}|\lambda)&=\sum_{i=1}^{N}{P(\textbf{x}|y_1=s_i,\lambda) \cdot P(y_1=s_i|\lambda)}\\ &=\sum_{i=1}^{N}{P(x1|x_2,...,x_T,y_1=s_i,\lambda) \cdot P(x_2,...,x_T|y_1=s_i,\lambda)} \cdot \pi_i\\ &=\sum_{i=1}^{N}{\pi_iP(x_1|y_1=s_i)}\beta_1(i)(假设2)\\ &=\sum_{i=1}^{N}{\pi_i b_{i,x_1} \beta_1(i)} \end{aligned}
P(x∣λ)=i=1∑NP(x∣y1=si,λ)⋅P(y1=si∣λ)=i=1∑NP(x1∣x2,...,xT,y1=si,λ)⋅P(x2,...,xT∣y1=si,λ)⋅πi=i=1∑NπiP(x1∣y1=si)β1(i)(假设2)=i=1∑Nπibi,x1β1(i)
同理去求
β
t
(
i
)
\beta_t(i)
βt(i)和
β
t
+
1
(
i
)
\beta_{t+1}(i)
βt+1(i)之间的关系式:
β
t
(
i
)
=
P
(
x
t
+
1
,
.
.
.
,
x
T
∣
y
t
=
s
i
,
λ
)
=
∑
j
=
1
N
P
(
x
t
+
1
,
.
.
.
,
x
T
,
y
t
+
1
=
s
j
∣
y
t
=
s
i
,
λ
)
=
∑
j
=
1
N
P
(
x
t
+
1
,
.
.
.
,
x
T
∣
y
t
+
1
=
s
j
,
y
t
=
s
i
,
λ
)
⋅
P
(
y
t
+
1
=
s
j
∣
y
t
=
s
i
,
λ
)
=
∑
j
=
1
N
P
(
x
t
+
1
,
.
.
.
,
x
T
∣
y
t
+
1
=
s
j
,
λ
)
⋅
a
i
j
(
条
件
独
立
性
)
=
∑
j
=
1
N
P
(
x
t
+
1
∣
x
t
+
2
,
.
.
.
,
x
T
,
y
t
+
1
=
s
j
,
λ
)
⋅
P
(
x
t
+
2
,
.
.
.
,
x
T
∣
y
t
+
1
=
s
j
,
λ
)
⋅
a
i
j
=
∑
j
=
1
N
P
(
x
t
+
1
∣
y
t
+
1
=
s
j
)
⋅
β
t
+
1
(
j
)
⋅
a
i
j
(
假
设
2
)
=
∑
j
=
1
N
a
i
j
b
j
,
x
t
+
1
β
t
+
1
(
j
)
\begin{aligned} \beta_t(i)&=P(x_{t+1},...,x_T|y_t=s_i,\lambda)\\ &=\sum_{j=1}^{N}{P(x_{t+1},...,x_T,y_{t+1}=s_j|y_t=s_i,\lambda)}\\ &=\sum_{j=1}^{N}{P(x_{t+1},...,x_T|y_{t+1}=s_j,y_t=s_i,\lambda) \cdot P(y_{t+1}=s_j|y_t=s_i,\lambda)}\\ &=\sum_{j=1}^{N}{P(x_{t+1},...,x_T|y_{t+1}=s_j,\lambda)} \cdot a_{ij}(条件独立性)\\ &=\sum_{j=1}^{N}{P(x_{t+1}|x_{t+2},...,x_T,y_{t+1}=s_j,\lambda)} \cdot P(x_{t+2},...,x_T|y_{t+1}=s_j,\lambda) \cdot a_{ij}\\ &=\sum_{j=1}^{N}{P(x_{t+1}|y_{t+1}=s_j)} \cdot \beta_{t+1}(j)\cdot a_{ij}(假设2)\\ &=\sum_{j=1}^{N}{a_{ij}b_{j,x_{t+1}}\beta_{t+1}(j)} \end{aligned}
βt(i)=P(xt+1,...,xT∣yt=si,λ)=j=1∑NP(xt+1,...,xT,yt+1=sj∣yt=si,λ)=j=1∑NP(xt+1,...,xT∣yt+1=sj,yt=si,λ)⋅P(yt+1=sj∣yt=si,λ)=j=1∑NP(xt+1,...,xT∣yt+1=sj,λ)⋅aij(条件独立性)=j=1∑NP(xt+1∣xt+2,...,xT,yt+1=sj,λ)⋅P(xt+2,...,xT∣yt+1=sj,λ)⋅aij=j=1∑NP(xt+1∣yt+1=sj)⋅βt+1(j)⋅aij(假设2)=j=1∑Naijbj,xt+1βt+1(j)
后向算法求解步骤如下:
step1 初始化,定义
β
T
(
i
)
=
1
\beta_T(i)=1
βT(i)=1
step2 从后向前,逐步递推求
β
t
(
i
)
=
∑
j
=
1
N
a
i
j
b
j
,
x
t
+
1
β
t
+
1
(
j
)
,
t
=
T
−
1
,
T
−
2
,
.
.
.
,
1
\beta_t(i)=\sum_{j=1}^{N}{a_{ij}b_{j,x_{t+1}}\beta_{t+1}(j)},t=T-1,T-2,...,1
βt(i)=∑j=1Naijbj,xt+1βt+1(j),t=T−1,T−2,...,1
step3 将初始时刻的后向概率带入
β
t
(
i
)
=
=
∑
i
=
1
N
π
i
b
i
,
x
1
β
1
(
i
)
\beta_t(i)==\sum_{i=1}^{N}{\pi_i b_{i,x_1} \beta_1(i)}
βt(i)==∑i=1Nπibi,x1β1(i)
解码问题
已知 λ \lambda λ和 x \textbf{x} x,求定义 y ^ = arg max y P ( y ∣ λ , x ) \widehat{y}=\mathop{\arg\max}\limits_{\textbf{y}}{P(\textbf{y}|\lambda,\textbf{x})} y =yargmaxP(y∣λ,x),即根据观测序列求隐藏的模型状态。常用求解方法有维特比(viterbi)方法。
评估问题中,提到了状态序列 y \textbf{y} y包括 T T T个状态,每个状态又有 N N N种取值可能,那么 y \textbf{y} y就有 T N T^N TN种表示形式。对于解码问题,所求即在所有表现形式中找到对应概率最大的一种。可以采用动态规划的思想,将所求状态序列看作是参数空间中的一个路径,每个状态是路径上的一个节点(注意不是每个时刻),即用动态规划求概率最大路径,也就是维特比方法。
定义在时刻
t
t
t状态为
s
i
s_i
si的所有单个路径
(
y
1
,
y
2
,
.
.
.
,
y
t
)
(y_1,y_2,...,y_t)
(y1,y2,...,yt)中概率最大值为
δ
t
(
i
)
=
max
y
1
,
⋯
,
y
t
−
1
p
(
y
1
,
⋯
,
y
t
−
1
,
y
t
=
s
i
,
x
1
,
⋯
,
x
t
∣
λ
)
,
i
=
1
,
2
,
⋯
,
N
\delta_{t}(i)=\max\limits_{y_1,\cdots,y_{t-1}}p(y_1,\cdots,y_{t-1},y_t=s_i,x_1,\cdots,x_t|\lambda),i=1,2,\cdots,N
δt(i)=y1,⋯,yt−1maxp(y1,⋯,yt−1,yt=si,x1,⋯,xt∣λ),i=1,2,⋯,N
根据动态规划原理,最优路径具有最优路径中的部分路径仍是最优路径的特性。参考资料[2]中第208页有更具体的描述,参考资料[7]用图给出了更加直观易懂的解释。
可得变量
δ
\delta
δ的递推公式:
δ
t
+
1
(
i
)
=
max
1
≤
j
≤
N
[
δ
t
(
j
)
a
j
i
]
b
i
,
x
t
+
1
\delta_{t+1}(i)=\max\limits_{1\le j \le N}{[\delta_t(j)a_{ji}]b_{i,x_{t+1}}}
δt+1(i)=1≤j≤Nmax[δt(j)aji]bi,xt+1
注意到
b
i
,
x
t
+
1
b_{i,x_{t+1}}
bi,xt+1的值与
j
j
j的取值无关。另定义在时刻
t
t
t状态为
s
i
s_i
si的所有单个路径
(
y
1
,
y
2
,
.
.
.
,
y
t
)
(y_1,y_2,...,y_t)
(y1,y2,...,yt)中概率最大的路径的第
t
−
1
t-1
t−1个结点为
Ψ
t
(
i
)
=
arg
max
1
≤
j
≤
N
[
δ
t
−
1
(
j
)
a
j
i
]
\Psi_{t}(i)=\mathop{\arg\max}\limits_{1\le j \le N}[\delta_{t-1}(j)a_{ji}]
Ψt(i)=1≤j≤Nargmax[δt−1(j)aji]
维特比算法求解步骤如下:
step1 初始化,定义
δ
1
(
i
)
=
π
i
b
i
,
x
1
\delta_1(i)=\pi_i b_{i,x_1}
δ1(i)=πibi,x1
step2 递推求最大概率
δ
t
(
i
)
\delta_{t}(i)
δt(i)和结点
Ψ
t
(
i
)
\Psi_{t}(i)
Ψt(i)
step3 回溯求最优路径的各结点
i
T
∗
=
arg
max
1
≤
j
≤
N
[
δ
T
(
j
)
]
i_T^{*}=\mathop{\arg\max}\limits_{1\le j \le N}[\delta_T(j)]
iT∗=1≤j≤Nargmax[δT(j)]
i
t
∗
=
Ψ
t
+
1
(
i
t
+
1
∗
)
i_t^*=\Psi_{t+1}(i_{t+1}^*)
it∗=Ψt+1(it+1∗)
学习问题
已知 x \textbf{x} x,求 λ ^ = arg max λ P ( x ∣ λ ) \widehat{\lambda}=\mathop{\arg\max}\limits_{\lambda}{P(\textbf{x}|\lambda)} λ =λargmaxP(x∣λ)。即训练模型使其能最好地描述观测数据。常用求解方法有Baum-Welch算法。
Baum-Welch算法
类似于EM算法,有参数
θ
\theta
θ的迭代公式如下所示:
λ
t
+
1
=
arg
max
λ
∑
y
log
P
(
x
,
y
∣
λ
)
P
(
y
∣
x
,
λ
t
)
=
arg
max
λ
∑
y
log
P
(
x
,
y
∣
λ
)
P
(
x
,
y
∣
λ
t
)
\begin{aligned} \lambda^{t+1}&=\mathop{\arg\max}\limits_{\lambda}\sum\limits_{\textbf{y}}\log P(\textbf{x},\textbf{y}|\lambda)P(\textbf{y}|\textbf{x},\lambda^t)\\ &=\mathop{\arg\max}\limits_\lambda\sum\limits_\textbf{y}\log P(\textbf{x},\textbf{y}|\lambda)P(\textbf{x},\textbf{y}|\lambda^t) \end{aligned}
λt+1=λargmaxy∑logP(x,y∣λ)P(y∣x,λt)=λargmaxy∑logP(x,y∣λ)P(x,y∣λt)
第二个等号是因为 P ( y ∣ x , λ t ) = P ( x , y ∣ λ t ) / P ( x ∣ λ t ) P(\textbf{y}|\textbf{x},\lambda^t)=P(\textbf{x},\textbf{y}|\lambda^t)/P(\textbf{x}|\lambda^t) P(y∣x,λt)=P(x,y∣λt)/P(x∣λt)中的分母与 λ \lambda λ无关, λ t \lambda^t λt是常数而 λ \lambda λ是变量。
定义函数
Q
(
λ
∣
λ
t
)
=
∑
y
log
P
(
x
,
y
∣
λ
)
P
(
x
,
y
∣
λ
t
)
=
∑
y
[
l
o
g
π
y
1
+
l
o
g
∏
t
=
1
T
a
y
t
−
1
,
y
t
+
l
o
g
∏
t
=
1
T
b
y
t
,
x
t
]
P
(
x
,
y
∣
λ
t
)
\begin{aligned} Q(\lambda|\lambda^t)&=\sum\limits_{\textbf{y}}\log P(\textbf{x},\textbf{y}|\lambda)P(\textbf{x},\textbf{y}|\lambda^t)\\ &=\sum_{\textbf{y}}{[log{\pi_{y_1}}+log{\prod_{t=1}^{T}a_{y_{t-1},y_t}}+log{\prod_{t=1}^{T}{b_{y_t,x_t}}]}P(\textbf{x},\textbf{y}|\lambda^t)} \end{aligned}
Q(λ∣λt)=y∑logP(x,y∣λ)P(x,y∣λt)=y∑[logπy1+logt=1∏Tayt−1,yt+logt=1∏Tbyt,xt]P(x,y∣λt)
以参数
π
\pi
π为例,有迭代式
π
t
+
1
=
arg
max
π
∑
y
l
o
g
π
y
1
P
(
x
,
y
∣
λ
t
)
=
arg
max
π
∑
y
1
∑
y
2
.
.
.
∑
y
T
l
o
g
π
y
1
P
(
x
,
y
1
,
.
.
.
,
y
T
∣
λ
t
)
=
arg
max
π
∑
y
1
[
l
o
g
π
y
1
P
(
x
,
y
1
∣
λ
t
)
]
(
边
缘
分
布
思
想
)
=
arg
max
π
∑
i
=
1
N
l
o
g
π
i
P
(
x
,
y
1
=
s
i
∣
λ
t
)
\begin{aligned} \pi_{t+1}&=\mathop{\arg\max}\limits_{\pi}\sum_{\textbf{y}}{log{\pi_{y_1}}}P(\textbf{x},\textbf{y}|\lambda^t) \\ &=\mathop{\arg\max}\limits_{\pi}\sum_{y_1}\sum_{y_2}...\sum_{y_T}{log{\pi_{y_1}}P(\textbf{x},y_1,...,y_T|\lambda^t)}\\ &=\mathop{\arg\max}\limits_{\pi}\sum_{y_1}[log{\pi_{y_1}}P(\textbf{x},y_1|\lambda^t)](边缘分布思想)\\ &=\mathop{\arg\max}\limits_{\pi}\sum_{i=1}^{N}{log_{\pi_{i}}P(\textbf{x},y_1=s_i|\lambda^t)} \end{aligned}
πt+1=πargmaxy∑logπy1P(x,y∣λt)=πargmaxy1∑y2∑...yT∑logπy1P(x,y1,...,yT∣λt)=πargmaxy1∑[logπy1P(x,y1∣λt)](边缘分布思想)=πargmaxi=1∑NlogπiP(x,y1=si∣λt)
另外根据
π
\pi
π的定义,有约束式
∑
i
π
i
=
1
\sum_{i}{\pi_i}=1
∑iπi=1,则有拉格朗日函数:
L
(
π
,
η
)
=
∑
i
=
1
N
l
o
g
π
i
P
(
x
,
y
1
=
s
i
∣
λ
t
)
+
η
(
∑
i
=
1
N
π
i
−
1
)
L(\pi,\eta)=\sum_{i=1}^{N}{log_{\pi_{i}}P(\textbf{x},y_1=s_i|\lambda^t)+\eta(\sum_{i=1}^{N}{\pi_i}-1)}
L(π,η)=i=1∑NlogπiP(x,y1=si∣λt)+η(i=1∑Nπi−1)
对其求偏导可得
∂
L
∂
π
i
=
1
π
i
P
(
x
,
y
1
=
s
i
∣
λ
t
)
+
η
=
0
\frac{\partial{L}}{\partial{\pi_i}}=\frac{1}{\pi_i}P(\textbf{x},y_1=s_i|\lambda^t)+\eta=0
∂πi∂L=πi1P(x,y1=si∣λt)+η=0
∑ i = 1 N P ( x , y 1 = s i ∣ λ t ) + π i η = 0 ⇒ η = − P ( x ∣ λ t ) \sum\limits_{i=1}^NP(\textbf{x},y_1=s_i|\lambda^t)+\pi_i\eta=0\Rightarrow \eta=-P(\textbf{x}|\lambda^t) i=1∑NP(x,y1=si∣λt)+πiη=0⇒η=−P(x∣λt)
综合上面两式,最终可得
π
i
t
+
1
=
P
(
x
,
y
1
=
s
i
∣
λ
t
)
p
(
x
∣
λ
t
)
\pi_i^{t+1}=\frac{P(\textbf{x},y_1=s_i|\lambda^t)}{p(\textbf{x}|\lambda^t)}
πit+1=p(x∣λt)P(x,y1=si∣λt)
参考资料
[1]《机器学习》周志华
[2] 《统计学习方法(第2版)》 李航
[3] 哔哩哔哩-shuhuai008-机器学习白板推导系列
[4]github-tsyw-MachineLearningNotes
[5] 百度百科-隐马尔可夫模型
1282

被折叠的 条评论
为什么被折叠?



