HMM模型——隐含马尔科夫模型【详细分析+图】

HMM(隐马尔可夫模型)

含义

HMM(Hidden Markov Model), 中文称作隐含马尔科夫模型, 因俄国数学家马尔可夫而得名. 它一般以文本序列数据为输入, 以该序列对应的隐含序列为输出.

  • 什么是隐含序列
    序列数据中每个单元包含的隐性信息, 这些隐性信息之间也存在一定关联

EG:

import jieba.posseg as psg

text = "他喜欢看动画片"

# 对文本进行分词处理
res = psg.lcut(text,True)
print(res)

#[pair('他', 'r'), pair('喜欢', 'v'), pair('看', 'v'), pair('动画片', 'n')]

# 每个词对应的隐含序列为
hidden_sequence = ["r","v","v","n"]

在posseg.lcut中可以看到隐马模型HMM,默认为True
在这里插入图片描述

作用

在NLP领域, HMM用来解决文本序列标注问题. 如分词, 词性标注, 命名实体识别都可以看作是序列标注问题.

隐含假设

隐含序列中每个单元的可能性只与上一个单元有关

使用过程

状态序列隐藏的马尔可夫链随机生成的状态的序列
观测序列每个状态生成一个观测,而由此产生的观测的随机序列

HMM的输入为一个句子进行分词后的语句为w1(word1),w2,w3…

HMM的输出为对应分词的词性q1,q2,q3…

HMM的目标在于最大化隐状态的条件概率(直白一点就是一个词它有K种词性,那么HMM的作用在于选择它最大可能是哪一种词性),即:
P ( q 1 , q 2 . . . q n ∣ w 1 , w 2 . . . w n ) = P ( w 1 , w 2 . . . w n ∣ q 1 , q 2 . . . q n ) P ( q 1 , q 2 . . . q n ) P ( w 1 , w 2 . . . w n ) P(q_1,q_2...q_n|w_1,w_2...w_n) =\frac{P(w_1,w_2...w_n|q_1,q_2...q_n)P(q_1,q_2...q_n)}{P(w_1,w_2...w_n)} P(q1,q2...qnw1,w2...wn)=P(w1,w2...wn)P(w1,w2...wnq1,q2...qn)P(q1,q2...qn)
P ( q 1 , q 2 . . . q n ∣ w 1 , w 2 . . . w n ) P(q_1,q_2...q_n|w_1,w_2...w_n) P(q1,q2...qnw1,w2...wn)为每个单词在对应词性下的概率

假设一个词它有K种词性,那么 P ( q 1 , q 2 . . . q n ∣ w 1 , w 2 . . . w n ) P(q_1,q_2...q_n|w_1,w_2...w_n) P(q1,q2...qnw1,w2...wn)就有 K n K^n Kn种概率,而HMM的作用就是找到最大概率的那一种可能,即

在这里插入图片描述

因为分母 P ( w 1 , w 2 . . . w n ) P(w_1,w_2...w_n) P(w1,w2...wn)的概率是一定的,所以可以直接省略

根据HMM模型的假设, q i q_i qi的设定只和 q i − 1 q_{i-1} qi1,所以 P ( q 1 , q 2 . . . q n ) ≈ ∏ i = 1 n P ( q i ∣ q i − 1 ) P(q_1,q_2...q_n)\approx\prod_{i=1}^nP(q_i|q_{i-1}) P(q1,q2...qn)i=1nP(qiqi1)

此外HMM假设每个词的生成都是独立的,所以 P ( w 1 , w 2 . . . w n ∣ q 1 , q 2 . . . q n ) = ∏ i = 1 n P ( w i ∣ q i ) P(w_1,w_2...w_n|q_1,q_2...q_n)=\prod_{i=1}^nP(w_i|q_i) P(w1,w2...wnq1,q2...qn)=i=1nP(wiqi)

所以 a r g   m a x   P ( q 1 , q 2 . . . q n ∣ w 1 , w 2 . . . w n ) = a r g   m a x ∏ i = 1 n P ( w i ∣ q i ) P ( q i ∣ q i − 1 ) arg\ max\ P(q_1,q_2...q_n|w_1,w_2...w_n)=arg\ max\prod_{i=1}^nP(w_i|q_i)P(q_i|q_{i-1}) arg max P(q1,q2...qnw1,w2...wn)=arg maxi=1nP(wiqi)P(qiqi1)

由上可以知道,当我们知道了 ∏ i = 1 n P ( w i ∣ q i ) P ( q i ∣ q i − 1 ) \prod_{i=1}^nP(w_i|q_i)P(q_i|q_{i-1}) i=1nP(wiqi)P(qiqi1)的最大值,也就意味着我们找到了对应词语所可能的词性

那么我们将如何计算呢?

对于 P ( w i ∣ q i ) P(w_i|q_i) P(wiqi) P ( q i ∣ q i − 1 ) P(q_i|q_{i-1}) P(qiqi1)的计算,我们通常采用统计方法来估计其值

i.e.

C(w,q)出现次数C(q)出现次数P(w|q)
C(花,v)30C(v)100P(花|v)=0.3
C(花,n)10C(n)200P(花|n)=0.05

C(w,q)word作为动词在文本中出现的次数

C(q)q词性在文本中出现的次数

P(w|q)word作为q词性在文本中出现的概率

C(qi-1,qi)出现次数C(qi-1)出现次数P(qi|qi-1)
C(v,n)40C(v)100P(n|v)=0.4

得到上述知识后,我们应该有种想法,只要我们依次遍历1~n,累乘计算的乘积进行比较,那么就一定会得到一种最大的概率

但是这种方法对于单词量巨大且词性丰富的文本来说简直就是一场灾难,因此我们不得不使用一种方法来降低其复杂度,下面我们来引进维特比算法

维特比算法

本质:动态规划实现最短路径

维特比算法是多步骤每步多选择模型的最优选择问题
其在每一步的所有选择都保存了前续所有步骤到当前步骤当前选择的最小总代价(或者最大价值)以及当前代价的情况下前继步骤的选择。
依次计算完所有步骤后,通过回溯的方法找到最优选择路径。符合这个模型的都可以用viterbi算法解决,隐马模型的第三问题刚好符合这个模型,所以才采用了viterbi算法。

详情见知乎
通俗地讲解 viterbi 算法

它的核心观点是利用动态规划来降低复杂度,每一次来计算当前word下最有可能的前i种词性

先简明说明维特比在检索最大可能词性中的定义 f ( i , j ) f(i,j) f(i,j),它表示在所有 q i = j q_i=j qi=j的词性序列中能达到的前i位最大HMM概率值,通俗地来讲在最后一个词性为j的情况下,排在前i位的最大概率为 f ( i , j ) f(i,j) f(i,j)

初始化为
f ( 1 , j ) = P ( w i | j ) f(1,j)=P(w_i|j) f(1,j)=P(wij)
递推公式为
f ( i + 1 , j ) = m a x 1 < = k < = K f ( i , k ) P ( w i + 1 ∣ j ) P ( j ∣ k ) f(i+1,j)=max_{1<=k<=K}f(i,k)P(w_{i+1}|j)P(j|k) f(i+1,j)=max1<=k<=Kf(i,k)P(wi+1j)P(jk)
K K K为文本中的词性种类

复杂度 O ( K 2 ∗ N ) O(K^2*N) O(K2N)

遍历横向K,遍历纵向N,确定了一个单词词性之后,在此基础上又将面临K个选择

通俗地来讲就是先将一个单词作为词性集合中任意一种词性的概率算出来

然后在此基础上计算下一个单词词性为词性集合中任意一种词性的概率,此时将要考虑上一个单词作为哪种词性时的概率最大就作为该单词词性的概率

i.e.

image-20211220223141085

就好比我先算出APPLE作为各个词性的概率,然后计算RUN作为NOUN的概率时,就要考虑前一个单词APPLE的词性作为哪一种词性时,RUN作为NOUN的概率最大,HE也是类似。

复杂度解释:

考虑到APPLE有K种可能词性,一共有N个单词,并且在计算RUN作为NOUN时又要和APPLE作为K种词性要比较,所以复杂度为 O ( K 2 ∗ N ) O(K^2*N) O(K2N)

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
尔科夫模型HMM)是一种统计模型,用于描述一个由隐藏状态和可观察状态组成的序列,并通过计算概率来对隐藏状态进行推断。HMM算法可以应用于许多领域,包括地匹配。 地匹配是将移动对象的轨迹数据与预先定义的地进行对应的过程。HMM算法可以用于实现地匹配,以下是实现地匹配的基本步骤: 1. 数据预处理:将原始轨迹数据进行清洗和处理,包括去除噪声、填充缺失值等。 2. 地建模:将地划分为一系列的离散区域,例如网格或路段,并给每个区域分配一个隐藏状态。 3. 初始化HMM模型:定义HMM模型的初始状态概率矩阵、转移概率矩阵和观测概率矩阵。 4. 观测生成:将轨迹数据中的观测状态映射到地的区域。 5. 动态规划:利用前向算法或维特比算法计算给定观测序列条件下的最优隐藏状态序列。 6. 地匹配结果:通过最优隐藏状态序列映射到地的区域,得到地匹配结果。 7. 评估与优化:对地匹配结果进行评估和优化,比较匹配结果与真实轨迹数据的差异,并可能采取进一步的优化措施。 HMM算法在地匹配中的优势是可以处理观测数据中的噪声和不确定性,并且具有较好的鲁棒性。然而,HMM算法也有一些限制,例如对初始参数的依赖和计算复杂度较高等。 综上所述,HMM算法可以实现地匹配,通过对观测数据进行概率计算来推断隐藏状态序列,从而映射轨迹数据到地上的区域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

365JHWZGo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值