读者可以去我的github阅读一份可读性高的HMM用于NER识别的代码,欢迎点star,欢迎fork


一、HMM基本概念的介绍

以一个例子介绍HMM,可以避开抽象的定义:
例如:N个袋子,每个袋子中有M种不同颜色的球。一实验员根据某一概率分布选择一个袋子,然后根据袋子中不同颜色球的概率分布随机取出一个球,并报告该球的颜色。对局外人:可观察的过程是不同颜色球的序列,而袋子的序列是不可观察的。每只袋子对应HMM中的一个状态;球的颜色对应于HMM中状态的输出。

状态转移概率矩阵为自然语言处理研究转化率较低 自然语言处理hmm_hmm,自然语言处理研究转化率较低 自然语言处理hmm_概率分布_02为实验员从一只袋子(状态自然语言处理研究转化率较低 自然语言处理hmm_自然语言处理研究转化率较低_03) 转向另一只袋子(状态自然语言处理研究转化率较低 自然语言处理hmm_hmm_04 ) 取球的概率。
从状态自然语言处理研究转化率较低 自然语言处理hmm_hmm_04 观察到某一特定符号自然语言处理研究转化率较低 自然语言处理hmm_概率分布_06 的概率分布矩阵为:
自然语言处理研究转化率较低 自然语言处理hmm_概率分布_07
其中,自然语言处理研究转化率较低 自然语言处理hmm_nlp_08为实验员从第自然语言处理研究转化率较低 自然语言处理hmm_概率分布_09个袋子中取出第自然语言处理研究转化率较低 自然语言处理hmm_自然语言处理研究转化率较低_10种颜色的球的概率。

为了方便,一般将HMM记为:自然语言处理研究转化率较低 自然语言处理hmm_hmm_11

HMM的三个问题:

  • 在给定模型自然语言处理研究转化率较低 自然语言处理hmm_hmm_12 和观察序列自然语言处理研究转化率较低 自然语言处理hmm_hmm_13的情况下,怎样快速计算概率自然语言处理研究转化率较低 自然语言处理hmm_github_14?
  • 在给定模型自然语言处理研究转化率较低 自然语言处理hmm_hmm_15和观察序列自然语言处理研究转化率较低 自然语言处理hmm_hmm_13的情况下,如何选择在一定意义下“最优”的状态序列自然语言处理研究转化率较低 自然语言处理hmm_nlp_17,使得该状态序列“最好地解释”观察序列?
  • 给定一个观察序列自然语言处理研究转化率较低 自然语言处理hmm_概率分布_18 ,如何根据最大似然估计来求模型的参数值?即如何调节模型的参数,使得自然语言处理研究转化率较低 自然语言处理hmm_github_14最大?

二、 HMM第一个问题的求解

自然语言处理研究转化率较低 自然语言处理hmm_nlp_20可以由如下式计算

自然语言处理研究转化率较低 自然语言处理hmm_hmm_21

其中

自然语言处理研究转化率较低 自然语言处理hmm_自然语言处理研究转化率较低_22

自然语言处理研究转化率较低 自然语言处理hmm_概率分布_23
相当于对所有Q的可能性的求和。

遍历计算复杂度太高,利用动态规划降低复杂度。

自然语言处理研究转化率较低 自然语言处理hmm_github_24
如果可以高效地计算自然语言处理研究转化率较低 自然语言处理hmm_nlp_25,就可以高效地求得自然语言处理研究转化率较低 自然语言处理hmm_自然语言处理研究转化率较低_26

事实上有如下递推公式:
自然语言处理研究转化率较低 自然语言处理hmm_概率分布_27

三、 HMM第二个问题的求解

问题二的本质是如何发现最优状态序列去最好地解释观察序列

一种解释是:状态序列中每个状态都单独地具有概率,对于每个时刻t,寻找自然语言处理研究转化率较低 自然语言处理hmm_自然语言处理研究转化率较低_28使得自然语言处理研究转化率较低 自然语言处理hmm_概率分布_29

另一种解释:在给定模型自然语言处理研究转化率较低 自然语言处理hmm_hmm_30 和观察序列自然语言处理研究转化率较低 自然语言处理hmm_自然语言处理研究转化率较低_31的条件下求概率最大的状态序列:
自然语言处理研究转化率较低 自然语言处理hmm_nlp_32

Viterbi算法:动态规划最优状态序列
定义:Viterbi 变量是在时间自然语言处理研究转化率较低 自然语言处理hmm_概率分布_33时,模型沿着某一条路径到达自然语言处理研究转化率较低 自然语言处理hmm_概率分布_34,输出观察序列$O=O_1O_2 …O_t $的最大概率为:
自然语言处理研究转化率较低 自然语言处理hmm_hmm_35

递归算法:自然语言处理研究转化率较低 自然语言处理hmm_自然语言处理研究转化率较低_36

解释一下这个式子:
模型沿着某一条路径到达自然语言处理研究转化率较低 自然语言处理hmm_hmm_37,输出观察序列自然语言处理研究转化率较低 自然语言处理hmm_概率分布_38的最大概率为在t时刻到达状态中选取使此式概率最大的j,因此最大概率之间构成递推关系,我们可以用Viterbi算法去求解。

四、HMM第三个问题的求解:

参数学习

给定一个观察序列自然语言处理研究转化率较低 自然语言处理hmm_github_39,如何根据最大似然估计来求模型的参数值?或者说如何调节模型自然语言处理研究转化率较低 自然语言处理hmm_hmm_30的参数,使得自然语言处理研究转化率较低 自然语言处理hmm_nlp_20 最大?即估计模型中的自然语言处理研究转化率较低 自然语言处理hmm_github_42使得观察序列O的概率$p(O|\mu) $最大。

即通过观察序列去重建模型中的参数

如果产生观察序列自然语言处理研究转化率较低 自然语言处理hmm_自然语言处理研究转化率较低_31 的状态自然语言处理研究转化率较低 自然语言处理hmm_概率分布_44 已知(即存在大量标注的样本),可以用最大似然估计来计算自然语言处理研究转化率较低 自然语言处理hmm_hmm_30的参数:

各估计如下:
自然语言处理研究转化率较低 自然语言处理hmm_hmm_46

自然语言处理研究转化率较低 自然语言处理hmm_github_47

类似的:
自然语言处理研究转化率较低 自然语言处理hmm_自然语言处理研究转化率较低_48

其中,自然语言处理研究转化率较低 自然语言处理hmm_hmm_49是模型输出符号集中地第k个符号。