第九章 隐马尔科夫模型HMM

文章目录

  • 1 隐马尔科夫模型定义
  • 2 概率计算算法
    • 2.1 前向概率
    • 2.2 概率计算
  • 3 学习算法
    • 3.1 EM算法
    • 3.2EM在HMM
  • 4 预测算法

1 隐马尔科夫模型定义

隐马尔科夫模型是一个seq2seq模型。例如词性标注。

时间序列t1t2t3
状态序列代词动词名词
观察序列机器学习

能够看到的,例如词语是观察序列。看不到的部分是状态序列,例如词性。
状态集合:Q={q1,q2,...qN}Q=\{q_1,q_2,...q_N\}Q={q1,q2,...qN},∣Q∣=N|Q|=NQ=N
观察集合:V={v1,v2,...vM}V=\{v_1,v_2,...v_M\}V={v1,v2,...vM},∣V∣=M|V|=MV=M
强定义:状态是观测不到的,类比于心理活动。观察是可以看到的,类比于面部表情。

状态序列:I={i1,i2,...it...iT}I=\{i_1,i_2,...i_t...i_T\}I={i1,i2,...it...iT}, it∈Qi_t\in QitQ, (t=1,2,…T)
观察序列:O={o1,o2,...ot,....oT}O=\{o_1,o_2,...o_t,....o_T\}O={o1,o2,...ot,....oT}, oi∈Vo_i\in VoiV, (t=1,2,…T)

  • 序列与集合是不同的。序列中的元素是有前后顺序的。
  • 总的时刻用T表示
  • 强定义:每个时刻的观察只与这个时刻的状态有关系。(心理活动影响了面部表情)

在这里插入图片描述

状态转移矩阵:是从一个状态转移到另外一个状态的概率。例如从代词转到动词的概率。A=[aij]N∗NA=[a_{ij}]_{N*N}A=[aij]NN,表示从状态i到状态j的转换概率。在t时刻,处于状态qiq_iqi条件下,在t+1时刻,转移到状态qjq_jqj的概率aij=P(it+1=qj∣it=qi)a_{ij}=P(i_{t+1}=q_j|i_t=q_i)aij=P(it+1=qjit=qi)

观测概率矩阵:B=[bj(k)]N∗MB=[b_{j}(k)]_{N*M}B=[bj(k)]NM。在t时刻处于状态qjq_jqj下生成观测vkv_kvk的概率bj(k)=P(ot=vk∣it=qj)b_j(k)=P(o_t=v_k|i_t=q_j)bj(k)=P(ot=vkit=qj)

初始概率向量:π=(πi)\pi=(\pi_i)π=(πi),在t=1的时刻,状态处于qiq_iqi的概率。πi=P(i1=qi)\pi_i=P(i_1=q_i)πi=P(i1=qi),π\piπ是一个N维向量。

隐马尔科夫模型:λ=(A,B,π)\lambda = (A,B,\pi)λ=(A,B,π)

以上可以成立的假设是:
1 ⻬次⻢尔科夫性假设:在任意时刻t的状态只依赖于t-1时刻的状态。
P(it∣it−1,,ot−1,...i1,o1)=P(it∣it−1)P(i_t|i_{t-1,},o_{t-1},...i_1,o_1)=P(i_t|i_{t-1})P(itit1,,ot1,...i1,o1)=P(itit1)

2 观测独立性假设:任意时刻t的观测只与t时刻的状态有关。
P(ot∣it,it−1...i1,ot−1,ot−2...o1)=P(ot∣it)P(o_t|i_t,i_{t-1}...i_1,o_{t-1},o_{t-2}...o_1)=P(o_t|i_{t})P(otit,it1...i1,ot1,ot2...o1)=P(otit)

观测序列生成算法
输入:隐马尔科夫模型λ=(A,B,π)\lambda=(A,B,\pi)λ=(A,B,π),观测序列长度T
输出:观测序列O=o1,o2,...,oTO={o_1,o_2,...,o_T}O=o1,o2,...,oT

HMM三个问题
1 概率计算,已知λ=(A,B,π)\lambda=(A,B,\pi)λ=(A,B,π)O=o1,o2,...,oTO={o_1,o_2,...,o_T}O=o1,o2,...,oT,计算P(O∣λ)P(O|\lambda)P(Oλ)
在模型已知的情况下,出现观测序列的概率

2 学习:已知O=o1,o2,...,oTO={o_1,o_2,...,o_T}O=o1,o2,...,oT,计算λ∗=argmaxP(O∣λ)\lambda^{*}= argmax P(O|\lambda)λ=argmaxP(Oλ)
已知观测序列,计算模型,计算得到的模型应该是使得观测序列的概率最大。

3 预测/编码问题:已知λ=(A,B,π)\lambda=(A,B,\pi)λ=(A,B,π)O=o1,o2,...,oTO={o_1,o_2,...,o_T}O=o1,o2,...,oT,计算I∗=argmaxP(I∣Oλ)I^*=argmaxP(I|O\lambda)I=argmaxP(IOλ)
已知模型和观测序列,计算概率最大的状态序列。

2 概率计算算法

2.1 前向概率

在这里插入图片描述
给定模型λ\lambdaλ,时刻t部分观测序列为o1,o2,...,oto_1,o_2,...,o_to1,o2,...,ot且状态为qiq_iqi的概率
递推公式:
在这里插入图片描述
这一步是简写,用O1tO^t_1O1t 表示从1到t时刻的观察序列。
在这里插入图片描述
it=qii_t=q_iit=qi的时候,在t−1t-1t1时刻的状态可能为q1,q2,...qNq_1,q_2,...q_Nq1,q2,...qN,那么P(it=qi)=P(it=qi∣it−1=q1)+P(it=qi∣it−1=q2)+...+P(it=qi∣it−1=qN)P(i_t=q_i)=P(i_t=q_i|i_{t-1}=q_1)+P(i_t=q_i|i_{t-1}=q_2)+...+P(i_t=q_i|i_{t-1}=q_N)P(it=qi)=P(it=qiit1=q1)+P(it=qiit1=q2)+...+P(it=qiit1=qN),根据加法公式得到这一步递推。
在这里插入图片描述
这一步利用的是乘法公式:P(AB)=P(A|B)P(B)
在这里A=it=qi,oti_t=q_i,o_tit=qi,ot,B=it−1=qj,o1t−1i_{t-1}=q_j,o^{t-1}_1it1=qj,o1t1

在这里插入图片描述

根据定义P(it−1=qj,o1t−1)=αt−1(j)P(i_{t-1}=q_j,o^{t-1}_1)=\alpha_{t-1}(j)P(it1=qj,o1t1)=αt1(j)
能够省略公式中的o1t−1o^{t-1}_1o1t1是因为假设,t时刻的状态只与t-1时刻的状态有关,t时刻的观察只与t时刻的状态有关。所以可以去掉。

在这里插入图片描述
这里同样是利用乘法规则做变换。:P(AB)=P(A|B)P(B)
在这里A=oto_tot,B=it=qii_{t}=q_iit=qi
在这里插入图片描述

这一步替换是根据A方程和B方程的定义来的。

2.2 概率计算

具体计算过程可以通过前向或者后向计算得到。

3 学习算法

已知O=o1,o2,...,oTO={o_1,o_2,...,o_T}O=o1,o2,...,oT,计算λ∗=argmaxP(O∣λ)\lambda^{*}= argmax P(O|\lambda)λ=argmaxP(Oλ)
已知观测序列,计算模型,计算得到的模型应该是使得观测序列的概率最大。

EM算法是一个一般算法,涉及两类数据,一类数据已知,一类数据未知的时候,可以用EM。

3.1 EM算法

EM算法中观测变量Y 对应 观测序列
EM算法中隐随机变量Z 对应 状态序列
含有隐变量 的概率模型,⽬标是极⼤化观测变量 关于参数 的对数似然函数,即maxθL(θ)max_{\theta}L(\theta)maxθL(θ)
其中
L(θ)=logP(Y∣θ)L(\theta)=logP(Y|\theta)L(θ)=logP(Yθ)
=log∑ZP(Y,Z∣θ)=log\sum_ZP(Y,Z|\theta)=logZP(Y,Zθ)(边缘概率到联合概率)
=log∑ZP(Y∣Z,θ)P(Z∣θ)=log\sum_ZP(Y|Z,\theta)P(Z|\theta)=logZP(YZ,θ)P(Zθ) (乘法规则)

对数似然函数𝐿 (𝜃)与第𝑖次迭代后的对数似然函数L(θ(i))L(\theta^{(i)})L(θ(i))的差 :
在这里插入图片描述

根据Jensen不等式

将上面的式子做以下变形,
在这里插入图片描述

得到:L(θ)>=B(θ,θ(i))L(\theta)>=B(\theta,\theta^{(i)})L(θ)>=B(θ,θ(i))B(θ,θ(i))B(\theta,\theta^{(i)})B(θ,θ(i))是一个下界函数。如果不断找到下界函数的最大值,就近似找到了上界函数的最大值。

Q=argmaxθ(∑ZP(Z∣Y,θ(i))logP(Y,Z∣θ))Q=arg max_{\theta}(\sum_ZP(Z|Y,\theta^{(i)})logP(Y,Z|\theta))Q=argmaxθ(ZP(ZY,θ(i))logP(Y,Zθ))

3.2EM在HMM

对于HMM而言
θ\thetaθ就是(A,B,π)
Z就是状态序列I
Y就是观测序列O

隐马尔科夫模型是含有隐变量的概率模型:P(O∣λ)=∑P(O∣I,λ)P(I∣λ)P(O|\lambda)=\sum P(O|I,\lambda)P(I|\lambda)P(Oλ)=P(OI,λ)P(Iλ)

完全数据(O,I)=(o1,o2...oT,i1,i2,...iT)(O,I)=(o_1,o_2...o_T,i_1,i_2,...i_T)(O,I)=(o1,o2...oT,i1,i2,...iT)

完全数据的对数似然函数logP(O,I∣λ)logP(O,I|\lambda)logP(O,Iλ)

Q(λ,λ−)Q(\lambda,\lambda^-)Q(λ,λ)函数
在这里插入图片描述

使用Baum-Welch算法完成学习过程。

4 预测算法

已知λ=(A,B,π)\lambda=(A,B,\pi)λ=(A,B,π)O=o1,o2,...,oTO={o_1,o_2,...,o_T}O=o1,o2,...,oT,计算I∗=argmaxP(I∣Oλ)I^*=argmaxP(I|O\lambda)I=argmaxP(IOλ)
已知模型和观测序列,计算概率最大的状态序列。
在时刻𝑡状态为𝑖的所有单个路径(𝑖1, 𝑖2, ⋯ , 𝑖𝑡)中概率最⼤值
在这里插入图片描述

得到递推公式:
在这里插入图片描述

这是一个动态规划的过程。在求得δT(i)\delta_{T}(i)δT(i)取得最大概率的i,经过倒推获得整个I序列。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/424089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring mvc学习(31):原生api

创建maven项目就不说了&#xff0c;需要的找我前面的博客 pom.xml文件 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http…

如何使用设计模式来构造系统--(7)

(声明:本系列所用的模式都来自GOF23中&#xff0c;本系列并不是讲23种经典设计模式&#xff0c;而是如何去使用这些模式) 在前面的文章中,我们设计完成了员工工资,福利以及按照部门来区分员工,以及遍历统计部门人员成本等业务逻辑,这些设计基本上可以满足我们所设定的场景的…

spring mvc学习(32):原生代码导入

第一种方法 1点击项目--右键---preferences(添加build path) 勾上 第二种方法 2配置pom.xml <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</…

深度学习03-CNN 应用

说明&#xff1a;本系列是七月算法深度学习课程的学习笔记 文章目录1 概述2 图片识别定位3 物体监测3.1 选择性搜索3.2 R-CNN3.3 Fast R-CNN3.4 Faster R-CNN4 语义分割4.1 滑窗处理4.2全卷积神经网络5 代码1 概述 CNN主要任务包含物体识别定位、物体识别、图像分割。 图片识…

【转帖】windows命令行中java和javac、javap使用详解(java编译命令)

windows命令行中java和javac、javap使用详解(java编译命令) 更新时间&#xff1a;2014年03月23日 11:53:15 作者&#xff1a; 我要评论 http://www.jb51.net/article/48380.htm学习一下java 最近重新复习了一下java基础&#xff0c;这里便讲讲对于一个类文件如何编译、运行…

第六课 从词向量到NLP分类问题

文章目录1 nlp的常见任务2 词向量表示2.1 离散表示2.2 分布式表示2.3 NNLM(2013年)2.3.1模型2.3.2特点2.4 Word2Vector&#xff1a;CBOW连续词袋2.4.1 样本处理2.4.2 结构2.4.3 CBOW&#xff1a;层次softmax2.4.4 CBOW&#xff1a;负例采样2.4.5 Word2Vec&#xff1a;skip-gram…

spring mvc学习(34):restful的delete

创建maven项目就不说了&#xff0c;需要的找我前面的博客 pom.xml文件 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http…

热度3年猛增20倍,Serverless云开发的技术架构全解析

『 作为一个不断发展的新兴技术&#xff0c; Serverless 热度的制高点已然到来。』 或许&#xff0c;Google Trends 所显示的 3 年猛增 20 倍的“ Serverless ” 搜索量&#xff0c;可以佐证 Serverless 在整个行业中的火爆程度。 不仅如此&#xff0c;据 KBV 研究公司新发布的…

第七课 循环神经网络与自然语言处理

文章目录1 循环神经网络1.1 场景与多种应用1.2 RNN网络结构1.2.1为什么需要RNN1.2.2 RNN 结构1.3 多种RNN1.4 BPTT算法1.5 生成模型与图像描述2 LSTM2.1 LSTM2.2 GRU1 循环神经网络 1.1 场景与多种应用 1 模仿论文生成 2 模仿linux内核编写代码 3 模仿小四写论文 4 机器翻译 …

第十二题:设int x=1,float y=2,则表达式x/y的值是:

第十二题 设int x1,float y2,则表达式x/y的值是&#xff1a;&#xff08;&#xff09; A 0 B 1 C 2 D 以上都不是 懵逼树上懵逼果&#xff0c;懵逼树下你和我 首先看到这道题&#xff0c;我是懵逼和绝望的。 首先我们打开评论&#xff0c;看看谁的赞最多&#xff0c;拿…

Linux 安装 lanmp

Lanmp介绍 lanmp一键安装包是wdlinux官网2010年底开始推出的web应用环境的快速简易安装包. 执行一个脚本&#xff0c;整个环境就安装完成就可使用&#xff0c;快速,方便易用,安全稳定 lanmp一键安装包是用shell脚本编写,且是开源的,你也可以根据业务需求,做相应的调整,来安装自…

如何利用Featue对特定的文档库或列表添加listviewtoolbar上的button

名字有点长&#xff0c;实在想不出什么好名字。 我们经常会遇到一个问题&#xff0c;就是需要在某一个列表或者文档库视图画面的listviewtoolbar上添加一个按钮来做一些操作。比如说页面跳转&#xff0c;列表操作等。目前很多人都知道利用Feature来添加这个button&#xff0c;而…

第八课 RNN条件生成与Attention机制

文章目录1 RNN条件生成2 机器翻译2.1 V1:Encoder-Decoder2.2 V2:Attention-based Encoder-decoder2.3 V3&#xff1a;bi-directional encode layer2.4 V4&#xff1a;Residual Encode layer3 Attention3.1 self attention3.2 hierarchical attention4 图像生成文本4.1 问题引入…

第十四题: 以下代码的输出结果是?

第十四题: 以下代码的输出结果是&#xff1f; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public class B { public static B t1 new B(); public static B t2 new B(); { System.out.println("构造块"); } static { Syst…

第一百二十三期:免费在线制图神器!不上水印支持中文版,GitHub标星已破1万2

又一免费制图神器来袭&#xff01;打开网页就能使用&#xff0c;支持中文版&#xff0c;也不会给你上水印。 作者&#xff1a;乾明 又一免费制图神器来袭&#xff01; 名为draw.io&#xff0c;打开网页就能使用&#xff0c;支持中文版&#xff0c;也不会给你上水印。 不只是…

常用javascript脚本

BS开发中常用的Javascript技术 一、验证类 1、数字验证内 1.1 整数 1.2 大于0的整数 &#xff08;用于传来的ID的验证) 1.3 负整数的验证 1.4 整数不能大于iMax 1.5 整数不能小于iMin 2、时间类 2.1 短时间&#xff0c;形如 (13:04:06) 2.2 短日期&#xff0c;形…

第一百二十四期:2019年臭名昭著的勒索软件,网络钓鱼和僵尸网络

Webroot发布了年度恶意软件列表&#xff0c;展示了2019年最臭名昭著的网络安全威胁。从攻击次数最多的勒索软件和加密挖矿&#xff0c;到破坏最大的网络钓鱼攻击&#xff0c;显然&#xff0c;全球网络威胁正在变得更为先进且难以预测。 作者&#xff1a;kirazhou 勒索软件 在…

好久没发胡说八道的贴了,今天发一贴

看了老翅寒暑 [真实案例&#xff1a;给所有想要创业的朋友的一个管理方面的测试题]一贴http://www.cnblogs.com/BigTall/archive/2006/12/20/597896.html这是一个真实的事件&#xff0c;我把它转化为了一个测试题目&#xff0c;问过很多朋友&#xff0c;到目前为止我认为答满分…

N元语法模型的数据稀疏问题解决方法之一:Good-Turing平滑

转载自时空霹雳 在统计语言模型章节中&#xff0c;我们谈到了N元语法模型不可避免的一个问题&#xff0c;就是数据稀疏&#xff0c;其原因是大规模语料统计与有限语料的矛盾。根据齐普夫&#xff08;Zipf&#xff09;法则&#xff0c;我们能够推测知零概率问题不可避免。数据稀…

错误: 在类中找不到 main 方法, 请将 main 方法定义为:public static void main(String[] args)否则 JavaFX 应用程序类必须扩展javafx.ap

最近在使用eclipse编写java程序时遇到这样一个问题&#xff1a; 错误在类中找不到main方法&#xff0c;请将main方法定义为 public static void main(String[] args)否则 JavaFX 应用程序类必须扩展javafx.application.Application 看到这样的问题让我一头雾水&#xff0c;因为…