HMM
序列标注问题
序列标注问题是给定一个序列 x=x1x2…xn,找出序列中每个元素对应的标签 y=y1y2…yn的问题。其中y的取值范围称为 标注集。
中文分词可以当作是一个序列标注问题。对于每个词,可以用标注集为{B,E,M,S}的状态序列标注,B和E表示词首和词尾;S表示单字成词;M表示词中。标注之后,B和E标签区间对应一个词,S字符对应一个单字词。
此外,词性标注和NER问题也是序列标注问题。
隐马尔可夫模型
HMM是描述两个时序序列联合分布p(x,y)的概率模型:x序列是外界可见的,称为 观测序列,y序列是外界不可见的,称为 状态序列。
HMM模型之所以称为 隐,是因为在外界看,状态序列是不可见的,是待求的因变量。从这个角度来看,状态也称为 隐状态,观测也称为 显状态。
1.HMM与马尔可夫假设
HMM:
1.它的马尔可夫假设是作用于状态序列上的。当前状态yt仅仅依赖于前一个状态yt-1,连续多个状态构成 隐马尔可夫链y。
2.任何时刻的观测xt只依赖于该时刻的状态yt,与其他时刻的状态和观测无关。
2.HMM三要素
初始状态概率向量、状态转移概率矩阵、发射概率矩阵, 被称为HMM的三元组。
HMM的基本问题有三个:样本生成、参数估计、序列预测。
设状态标注集共有N种取值,系统启动进入的第一个状态y1称为初始状态,决定y1的状态的参数向量叫做 初始状态概率向量。
存储从状态i到状态j的概率的矩阵叫做 状态转移概率矩阵,dims=N * N。
由于xt是由yt决定的,设x共有M种取值,y有N种取值,则存储给定y条件下,求x概率的矩阵,叫做 发射概率矩阵,dims=N * M。
3.HMM样本生成
假设生成长度为t的序列,则
1.先使用初始状态概率向量生成第一个隐状态y1,然后生成对应的显状态x1。
2.使用y1和状态转移概率矩阵A生成y2,使用y2和发射状态矩阵B生成x2.
3.重复步骤2,知道生成yt和xt。
4.HMM的训练(参数估计)
HMM的训练过程,其实就是对数据集进行统计,得到三元组参数。
1.状态转移概率矩阵的估计
记样本序列在时刻t处于状态si,时刻t+1转移到状态sj,统计这样的状态转移频次计入矩阵元素Ai,j;然后对Ai这一样进行归一化,就是从状态i到各个状态转移的概率了。
2.初始状态概率向量的估计
就是一种状态转移的特例,不过是从BOS到y1的状态转移,祝需要统计每个sample的第一个state,然后归一化即可。
3.发射概率矩阵的估计
统计在隐状态为si时,对应的所有显状态xj,对应于Bij,然后对Bi进行归一化。
5.隐马尔可夫模型的预测
给定观测序列,求解最可能的状态序列及其概率。
给定观测序列 x和一个状态序列 y,如何求解两者的联合分布概率?
p ( x , y ) = p ( y ) p ( x ∣ y ) = p ( y 1 ) ∏ t = 2 T p ( y t ∣ y t − 1 ) ∏ t = 1 T p ( x t ∣ y t ) p(x,y) = p(y)p(x|y) = p(y_{1})\prod_{t=2}^{T}p(y_{t}|y_{t-1})\prod_{t=1}^{T}p(x_{t}|y_{t})p (x ,y )=p (y )p (x ∣y )=p (y 1 )t =2 ∏T p (y t ∣y t −1 )t =1 ∏T p (x t ∣y t )
搜索状态序列的Viterbi算法
在这里插入图片描述
Viterbi算法:
; 6.HMM应用于中文分词
标注集为{B,M,S,E},分别表示词首、词中、单字成词、词尾。
要想进行分词任务,首先要对字符映射。建立一个Vocabulary。将观测序列和状态序列均映射为数字。
Tips:在训练时,我们会建立词表;在预测时,会遇到一些OOV词汇,这时,会统一将其映射为一个固定的id:UNK。
经过最终评测,HMM应用于中文分词F1-score只有80%左右,很低。但是,对于OOV的召回率到了40%+。
IV(In vocabulary)记不住,说明模型比较简单, 欠拟合。可以通过增加模型的复杂度解决问题。
二阶隐马尔可夫模型
如果HMM中的每个状态仅依赖于前一个状态,则称为 一阶;
如果依赖于前两个状态,则称为 二阶;
在一阶中,y1由初始状态概率矩阵得到;
在二阶中,y1由初始状态概率矩阵得到;y2由一阶HMM的状态转移概率矩阵得到;y3~yt由 状态转移张量得到。
二阶状态转移概率张量的估计
当t>=3时,将序列语法片段( y t − 2 = s i , y t − 1 = s j , y t = s k ) 的 频 次 按 下 标 ( i , j , k ) 计 入 张 量 A i , j , k (y_{t-2}=s_{i},y_{t-1}=s_{j},y_{t}=s_{k})的频次按下标(i,j,k)计入张量A_{i,j,k}(y t −2 =s i ,y t −1 =s j ,y t =s k )的频次按下标(i ,j ,k )计入张量A i ,j ,k
二阶隐马尔可夫模型中的维特比算法
这里要注意这个delta(i,j,k)的定义,是以(si, sj)结尾的路径的最大概率。
最终,阶隐马尔可夫模型略微提升了OOV的召回率,但是分词的结果依旧不太好。
; 总结
HMM能够在一定程度上解决新词识别的问题;但是中文分词的效果不理想,哪怕是升级到二阶隐马尔可夫模型,F1值依然没有提升。看来朴素的HMM不适合segment,需要更高级的模型。
Original: https://blog.csdn.net/lihao19990930/article/details/121877423
Author: 弱鸡萌新
Title: 自然语言处理入门-第4章 隐马尔可夫模型与序列标注
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/531444/
转载文章受原作者版权保护。转载请注明原作者出处!