NILMTK——隐马尔可夫的应用

252 阅读4分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。​​ ​

 自从接触NLP之后,经常看到HMM模型应用在词性标注、语音识别等各种场景中,虽然对HMM的原理进行了梳理,但是容易遗忘,因此,想对HMM的应用做一个总结。

1、HMM的三个基本问题:

  • 概率计算问题(likelihood)。给定模型和观测序列,计算在模型下观测序列O出现的概率。(使用算法:前向和后向
  • 学习问题(training)。已知观测序列,估计模型参数,使得在该模型下观测序列概率最大。即用极大似然估计的方法估计参数。(使用算法:极大似然估计[监督算法],EM[非监督算法]
  • 预测问题,也称为解码问题(decode)。已知模型和观测序列,求对给定观测序列条件概率的最大的状态序列。即给定观测序列,求最有可能的对应的状态序列。(使用算法:近似算法,维特比算法【维特比算法是用动态规划求解概率最大路径,即最优路径】

具体细节,参考:NILMTK——因子隐马尔可夫之隐马尔可夫https://blog.csdn.net/qq_28409193/article/details/110079078 https://blog.csdn.net/qq_28409193/article/details/110079078

2、HMM之词性标注

词性标注(Part-of-Speech) 是将语料库中单词的词性按其含义和上下文内容进行标记的文本数据处理技术。任务是给定词序列W = \left { w_{1} ,w_{2} ,...,w_{n} \right }​,寻找词性标注序列T =\left { t_{1},t_{2},...,t_{n} \right }​,使得P(t_{1},t_{2},...,t_{n}|w_{1},w_{2},...,w_{n})​这个条件概率最大。

语音消岐是很多词语有几个语义,如果将这样的词从上下文中独立出来考虑,就会产生歧义问题。例如:apple即指苹果(水果),也指一个手机厂商

消除歧义的任务是确定一个歧义词的哪一种语义在一个特殊的使用环境中被调用。最简单的方法是从单词所有可能的词性中选出这个词最常用的词性作为这个词的词性,但是这个模型就只考虑了频率特征,没有考虑上下文。

隐马尔可夫模型是整合频率和上下文两方面的特征来进行标注的。

求解问题是P(t_{1},t_{2},...,t_{n}|w_{1},w_{2},...,w_{n})​的条件概率最大,根据贝叶斯公式可得

P(t|w)=\frac{p(t)p(w|t)}{p(w)}

因为p(w)不依赖于t,因此忽略到分母

p(t|w)=p(t)p(w|t)

词w是显状态[分词之后的结果],为V(所有观测序列的集合),词性为隐状态,为Q(所有状态序列集合)

状态矩阵p(t)​**(隐状态之间的状态转移)** 是计算随机矩阵中的概率的乘积,做独立性假设,使用n元模型近似计算p(t),即

p(t_{1},t_{2},...,t_{n})=p(t_{1})p(t_{2}|t_{1})p(t_{3}|t_{1},t_{2})...p(t_{n}|t_{1},...,t_{n-1})

考虑到马尔可夫性质,只与前一刻的状态相关(二元模型),因此

p(t_{1},t_{2},...,t_{n})=p(t_{1})p(t_{2}|t_{1})p(t_{3}|t_{2})...p(t_{n}|t_{n-1})

发射概率p(w|t)​**(隐状态到显状态的转移)** 也是假设词之间相互独立,则

p(w|t) = p(w_{1},w_{2},...,w_{n}|t_{1},t_{2},...,t_{n})=p(w_{1}|t_{1})p(w_{2}|t_{2}),...,p(w_{n}|t_{n})

p(t|w)=p(t)p(w|t) =\prod_{i=1}^{n}p(t_{i}|t_{i-1})p(w_{i}|t_{i})​.

实例:

词序列为【他】,【会】,【来】

假设词性只有代词(r),动词(v),名词(n),方位词(f),emit是发射概率,go是转移概率

将有4种可能的标注序列【r,v,v】,【r,n,v】,【r,v,f】,【r,n,f】

语言模型(初始概率、发射概率、转移概率称作语言模型),增加start和end状态:

START:go(R,1.0),emit(start,1.0)

F:emit(来,0.1),go(N,0.9),go(END,0.1)

V:emit(来,0.4),emit(会,0.3),go(F,0.1),go(V,0.3),go(N,0.5),go(END,0.1)

N:emit(会,0.1),go(F,0.5),go(V,0.3),go(END,0.2)

R:emit(他,0.3),go(V,0.9),go(N,0.1)

状态转移矩阵:

 状态转移矩阵+发射概率矩阵:

维特比求解方法由两个过程组成:前向累积概率计算过程和反向回溯过程。前向过程按阶段计算,阶段分别是

阶段start:

Best(A)=1

阶段‘他’:

Best(B) = Best(A)p(r|start)p(他|r)=110.3=0.3

阶段‘会’:

Best(C) = Best(B)p(v|r)p(会|v)=0.30.90.3=0.081

Best(D) = Best(B)p(n|r)p(会|n)=0.30.10.6=0.018

阶段‘来’:

Best(E) = Max[Best(C)*p(v|r),Best(D)p(v|n)]p(来|v)=0.0810.30.4=0.00972

Best(F) =Max[Best(C)*p(f|v),Best(D)p(f|n)]p(来|f)=0.0810.10.1=0.00081

阶段end:

Best(end) = Max[Best(E)*p(end|v),Best(F)p(end|f)]p(|end)=0.009720.10.1=0.000972

回溯时发现状态rvv最佳。

 2、HMM之语音识别

自动语音识别(automatic speech recognition,ASR)的目标是用计算机来把声学信号映射为单词串,建立语音识别系统。自动语音理解(automatic speech understanding,ASU)不仅产生单词,还要产生句子,并且在某种程度上理解这些句子。传统的语音识别是HMM+GMM的组合,随着Deep Learning的发展,将GMM替换成DNN,然后发现成E2E(end-to-end,端到端)模型,实现直接从输入语音到 输出文本的转化,不需要单独训练声学(p(w|t)​)和语言模型(p(t)​)。

忽略掉声学处理的部分(语音的特征提取),假设我们得到的观测序列w=\left { w_{1},...,w_{n} \right }​是已经通过处理过语音信号,

2.1 其他模型原理

(1)高斯混合模型

  • 一维高斯函数
  • 二维高斯函数
  • 多维高斯函数
  • 高斯混合模型

\