1. 前言
选自《数学之美》第5章:隐含马尔科夫模型HMM
- 通信的本质就是一个编解码和传输的过程。NLP对应通信系统中的解码问题。即在已知接收端的观测信号 o 1 , o 2 , . . . o_1,o_2,... o1,o2,...的情况下,推断出令条件概率 P ( s 1 , s 2 , . . . ∣ o 1 , o 2 , . . . ) P(s_1,s_2,...|o_1,o_2,...) P(s1,s2,...∣o1,o2,...)达到最大值的那个信息串 s 1 , s 2 , . . . s_1,s_2,... s1,s2,...也就是信号源发送的信息。 (5-1) s 1 , s 2 , . . . = A r g max a l l s 1 , s 2 , . . . P ( s 1 , s 2 , . . . ∣ o 1 , o 2 , . . . ) = A r g max a l l s 1 , s 2 , . . . P ( o 1 , o 2 , . . . ∣ s 1 , s 2 , . . . ) P ( s 1 , s 2 , . . . ) P ( o 1 , o 2 , . . . ) ⇔ A r g max a l l s 1 , s 2 , . . . P ( o 1 , o 2 , . . . ∣ s 1 , s 2 , . . . ) P ( s 1 , s 2 , . . . ) s_1,s_2,...=Arg\max_{all s_1,s_2,...} P(s_1,s_2,...|o_1,o_2,...)=Arg\max_{all s_1,s_2,...} \frac{P(o_1,o_2,...|s_1,s_2,...)P(s_1,s_2,...)}{P(o_1,o_2,...)}\\\Leftrightarrow Arg\max_{all s_1,s_2,...} P(o_1,o_2,...|s_1,s_2,...)P(s_1,s_2,...)\quad \tag{5-1} s1,s2,...=Argalls1,s2,...maxP(s1,s2,...∣o1,o2,...)=Argalls1,s2,...maxP(o1,o2,...)P(o1,o2,...∣s1,s2,...)P(s1,s2,...)⇔Argalls1,s2,...maxP(o1,o2,...∣s1,s2,...)P(s1,s2,...)(5-1)
- 随机过程有2个维度的不确定性,其一是每个状态 s t s_t st都是随机的,其二是任一状态 s t s_t st的取值都可能和周围其他状态相关 P ( s 1 , s 2 , . . . ) = ∏ t P ( s t ∣ s 1 , s 2 , . . . , s t − 1 ) P(s_1,s_2,...)=\prod_tP(s_t|s_1,s_2,...,s_{t-1}) P(s1,s2,...)=t∏P(st∣s1,s2,...,st−1)
- 马尔科夫提出了上述的简化假设(马尔科夫假设),随机过程中每个状态 s t s_t st的概率分布只与它的前一个状态 s t − 1 有 关 s_{t-1}有关 st−1有关,即 P ( s t ∣ s 1 , s 2 , . . . , s t − 1 ) = P ( s t ∣ s t − 1 ) P(s_t|s_1,s_2,...,s_{t-1})=P(s_t|s_{t-1}) P(st∣s1,s2,...,st−1)=P(st∣st−1),符合该假设的随机过程称为马尔科夫过程(马尔科夫链)。 (5-2) P ( s 1 , s 2 , . . . ) = ∏ t P ( s t ∣ s t − 1 ) P(s_1,s_2,...)=\prod_tP(s_t|s_{t-1})\tag{5-2} P(s1,s2,...)=t∏P(st∣st−1)(5-2)
- 鲍姆提出隐含马尔可夫模型:基于马尔科夫假设和独立输出假设(模型在每时刻t会输出一个符号 o t o_t ot,并且 o t o_t ot只与 s t s_t st相关)。 (5.3) P ( o 1 , o 2 , . . . ∣ s 1 , s 2 , . . . ) = ∏ t P ( o t ∣ s t ) P(o_1,o_2,...|s_1,s_2,...)=\prod_tP(o_t|s_t)\tag{5.3} P(o1,o2,...∣s1,s2,...)=t∏P(ot∣st)(5.3)则某个状特定的状态序列 s 1 , s 2 , . . . s_1,s_2,... s1,s2,...产生出输出符号 o 1 , o 2 , . . . o_1,o_2,... o1,o2,...的概率为 (5-4) P ( s 1 , s 2 , . . . , o 1 , o 2 , . . . ) = ∏ t P ( s t ∣ s t − 1 ) P ( o t ∣ s t ) P(s_1,s_2,...,o_1,o_2,...)=\prod_tP(s_t|s_{t-1})P(o_t|s_t)\tag{5-4} P(s1,s2,...,o1,o2,...)=t∏P(st∣st−1)P(ot∣st)(5-4)将式(5-2)(5-3)代入(5-1)中,则得到(5-4)!!!因此,通信的解码问题就可以用隐含马尔科夫模型解决。应用:语言识别、机器翻译、拼写纠错、基因序列分析、股票预测……
- 训练算法,即给定足够多的观测数据,如何估计隐含马尔科夫模型的参数?(1)有监督训练,效果好,但是需要大量人工标注的数据;(2)无监督训练,鲍姆-韦尔奇算法,每一次迭代都是不断估计新的模型参数,使得输出概率(我们的目标函数)最大化,该过程称为期望值最大化(EM过程)。
- 解码算法,即给定一个模型和某个特定的输出序列,如何找出最可能产生这个输出的序列状态?=>维特比算法
2. HMM基本概念
隐马尔科夫模型(HMM)是关于时序的概率模型,描述由隐藏的马尔科夫链随机生成观测序列的过程,属于生成模型。
HMM由初始状态概率向量
π
\pi
π、状态转移概率矩阵A和观测概率矩阵B决定。
π
\pi
π和A决定状态序列,B决定观测序列。因此,HMM模型
λ
\lambda
λ可以用三元符号表示:
λ
=
(
A
,
B
,
π
)
\lambda=(A,B,\pi)
λ=(A,B,π)
应用
HMM可以用于标注,这时状态对应着标记,标注问题是给的观测的序列预测其对应的标记序列。
3. HMM的3个基本问题
3.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),计算在模型 λ \lambda λ下观测序列 O O O出现的概率 P ( O ∣ λ ) P(O|\lambda) P(O∣λ)
3.1.1 直接计算法
3.1.2 前向算法
3.1.3 后向算法
3.2 学习问题:EM算法
非监督学习算法
已知观测序列
O
=
(
o
1
,
.
.
.
,
o
T
)
O=(o_1,...,o_T)
O=(o1,...,oT),估计模型
λ
=
(
A
,
B
,
π
)
\lambda=(A,B,\pi)
λ=(A,B,π)参数,使得在该模型下观测序列概率
P
(
O
∣
λ
)
P(O|\lambda)
P(O∣λ)最大。
3.3 预测问题(解码问题):维特比算法
已知模型 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π)和观测序列 O = ( o 1 , . . . , o T ) O=(o_1,...,o_T) O=(o1,...,oT),求使得条件概率 P ( I ∣ O ) P(I|O) P(I∣O)最大的状态序列 I = ( i 1 , . . . , i T ) I=(i_1,...,i_T) I=(i1,...,iT)。即给定观测序列,求最有可能的对应的状态序列。
维特比算法实际是用动态规划求解HMM预测问题,即用动态规划求概率最大路径(最优路径),这时一条路径对应着一个状态序列。