HMM在自然语言处理中的应用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_41679411/article/details/81026545

HMM在NLP中的应用


一、HMM基本概念的介绍

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

状态转移概率矩阵为 A = a i j , a i j 为实验员从一只袋子(状态 s i ) 转向另一只袋子(状态 S j ) 取球的概率。
从状态 S j 观察到某一特定符号 v k 的概率分布矩阵为:

B = b j ( k )

其中, b j ( k ) 为实验员从第 j 个袋子中取出第 k 种颜色的球的概率。

为了方便,一般将HMM记为: μ = ( A , B , π )

HMM的三个问题:

  • 在给定模型 μ = ( A , B , π ) 和观察序列 O O 1 , O 2 O T 的情况下,怎样快速计算概率 p ( O | μ ) ?
  • 在给定模型 μ = ( A , B , π ) 和观察序列 O O 1 , O 2 O T 的情况下,如何选择在一定意义下“最优”的状态序列 Q = q 1 , q 2 , . . . , q T ,使得该状态序列“最好地解释”观察序列?
  • 给定一个观察序列 O O 1 , O 2 , , O T ,如何根据最大似然估计来求模型的参数值?即如何调节模型的参数,使得 p ( O | μ ) 最大?

二、 HMM第一个问题的求解

p ( O | μ ) 可以由如下式计算

(6) p ( O | μ ) = Q p ( O , Q | μ ) = Q p ( Q | μ ) p ( O | Q , μ )

其中
(7) P ( Q | μ ) = π q 1 a q 1 q 2 a q 2 q 3 . . . a q T 1 q T

(3) p ( O | Q , μ ) = b q 1 ( O 1 ) b q 2 ( O 2 ) . . . b q T ( O T )

相当于对所有Q的可能性的求和。

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

α t ( i ) = p ( O 1 O 2 . . . O t , q t = S i | μ )
如果可以高效地计算 α t ( i ) ,就可以高效地求得 P ( O | μ )

事实上有如下递推公式:
α t + 1 ( j ) = [ i = 1 N α t ( i ) a i j ] b j ( O t + 1 )

三、 HMM第二个问题的求解

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

一种解释是:状态序列中每个状态都单独地具有概率,对于每个时刻t,寻找 q t 使得 γ t ( i ) = p ( q t = S i | O , μ )

另一种解释:在给定模型 μ 和观察序列 O 的条件下求概率最大的状态序列:

(10) Q ~ = a r g m a x p ( Q | O , μ )

Viterbi算法:动态规划最优状态序列
定义:Viterbi 变量是在时间 δ t ( i ) 时,模型沿着某一条路径到达 S i ,输出观察序列 O O 1 O 2 O t 的最大概率为:

(11) δ t ( i ) = q 1 , q 2 , . . . , q t 1 m a x p ( q 1 , q 2 , . . . , q t = S i , O 1 O 2 . . . O t | μ )

递归算法: δ t + 1 ( i ) = j m a x [ δ t ( j ) a j i ] b i ( O t + 1 )

解释一下这个式子:
模型沿着某一条路径到达 S i + 1 ,输出观察序列 O = O 1 O 2 . . . O t + 1 的最大概率为在t时刻到达状态中选取使此式概率最大的j,因此最大概率之间构成递推关系,我们可以用Viterbi算法去求解。

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

参数学习

给定一个观察序列 O = O 1 O 2 O T ,如何根据最大似然估计来求模型的参数值?或者说如何调节模型 μ 的参数,使得 p ( O | μ ) 最大?即估计模型中的 π i , a i j , b j ( k ) 使得观察序列O的概率 p ( O | μ ) 最大。

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

如果产生观察序列 O 的状态 Q = q 1 q 2 q T 已知(即存在大量标注的样本),可以用最大似然估计来计算 μ 的参数:

各估计如下:

p ~ i = δ ( q 1 , S i )

a ~ i j = Q q i q j Q q i q j = t = 1 T 1 δ ( q t , S i ) δ ( q t + 1 , S j ) t = 1 T 1 δ ( q t , S i )

类似的:

b ~ j ( k ) = Q q j Q q j = t = 1 T 1 δ ( q t , S j ) δ ( O t , v k ) t = 1 T δ ( q t , S i )

其中, V k 是模型输出符号集中地第k个符号。

猜你喜欢

转载自blog.csdn.net/weixin_41679411/article/details/81026545