自然语言处理(1)-HMM隐马尔科夫模型基础概念(一)
隐马尔科夫模型HMM
序言
文本序列标注是自然语言处理中非常重要的一环,我先接触到的是CRF(条件随机场模型)用于解决相关问题,因此希望能够对CRF有一个全面的理解,但是由于在学习过程中发现一个算法像jar包依赖一样依赖于各种算法,就像提到CRF模型,那么肯定不得不提一下HMM等模型,如果不能很好的理解这些算法,那么其实也不算完全搞明白!因此我会在算法的介绍中对涉及到的算法知识尽我所能尽量详细和朴实的说明。
网上也有很多算法说明,但是感觉对一些向我一样刚入门的小白用户很不友好,大堆的数据公式,甚至有个公式符号都没有说明,让人看了真是一头雾水~因此在翻阅了大量的资料后,决定整合我学到的内容,详细介绍下HMM模型。
1)HMM模型是什么
隐马尔科夫模型(Hidden Markov Model,以下简称HMM)是比较经典的机器学习模型了,它在语言识别,自然语言处理,模式识别等领域得到广泛的应用。
我们使用HMM模型用于解决什么问题呢?问题一般具有两种特征:
- 我们要处理的问题是有序的,比如时间序列或者状态序列;
- 数据是包含两种类型的,一类数据是观测数据,是我们可以看到的,另一类是隐藏数据,属于隐含状态,也就是状态序列。
OK,我们来举个例子。假设我们根据天气情况来决定我们当天的活动内容,天气情况有两种:晴天和雨天,活动有三种:逛街、打游戏和看电影。那么我们翻阅小明过去几天的日志记录,日志记录了他进行了打游戏和看电影。这里小明的活动就是观测数据,是我们可以看到的内容,而天气情况就是隐含状态,而我们要根据活动情况来推测当天的天气,这就是一个普通的HMM模型需要解答的问题。
2)HMM的模型定义
我们采用更加标准数学符号概念来描述HMM模型的表示。从上面例子中我们看到HMM问题中包含两类数据,观测数据和隐含状态。因此假设Q是所有隐含状态的集合,V是所有观测数据的集合,即:
$$Q=q_{1},q_{2},q_{3},...q_{n}; V=v_{1},v_{2},v_{3},...v_{m}$$
这里表示隐含状态有n种,观测种类有m种。
之前提到了有观测序列和隐含序列两个序列,设序列长度为T,I表示隐含序列,O表示观测序列,即:
$$I=i_{1},i_{2},i_{3},...i_{T}; O=o_{1},o_{2},o_{3},...o_{T}$$
其中,每个隐含序列种的元素都在Q中,每个观测序列中的元素都在V中,即:$i_{T}\in Q,o_{T}\in V$
3)HMM模型的3个要素
齐次马尔科夫链假设。即任意时刻的隐藏状态只依赖于它前一个隐藏状态,在文本中也就是bigram。采用这种假设是因为模型简单,便于求解。在某时刻t隐含状态为$q_{i}$,则在t+1时刻状态变为$q_{j}$,当然从一个隐含状态转变为另一个隐含状态是一个0~1的概率发生事件,按天气的例子也就是从晴天转变为雨天的概率,这种从t时刻到t+1时刻的隐含状态$q_{i}->q_{j}$转变概率$a_{ij}$可以表示为:$a_{ij}=P(i_{t+1}=q_{j}|i_{t}=q_{i})$
组成的隐含状态转移概率矩阵A为:$A=\begin{bmatrix}a_{ij}\end{bmatrix}_{N\times N}$
观测独立性假设。也就是每个观测状态都只跟当前时刻的隐含状态有关,这也是为了使模型尽可能简单。如果t时刻的隐含状态$i_{t}=q_{i}$,观测状态$o_{t}=v_{i}$,则我们称当前隐含状态下产生观测状态的概率$b_{i}(k)$可以表示为:$b_{i}(k)=P(o_{t}=v_{i}|i_{t}=q_{i})$
构成的观测状态发射概率矩阵B为:$B=\begin{bmatrix}b_{i}(k)\end{bmatrix}_{N\times M}$
除了以上两种假设外,我们还需要一个初始隐含状态发生概率Π,对应集合Q的隐含状态数N个,$Π=\begin{bmatrix}\pi(i)\end{bmatrix}_{N}$,其中$\pi(i)=P(i_{t}=q_{i})$
根据上述两个假设和初始隐含状态发生概率,我们就得到了HMM模型的三个重要参数:A、B、Π,组成了HMM模型的3个要素:
$$\lambda =\begin{Bmatrix}\Pi ,A,B\end{Bmatrix}$$
有了这三个要素后,我们就可以来解决HMM模型的问题了。
4)HMM模型实例
上面的公式看起来比较抽象,我们用实际例子来举例说明下。有三个盒子,里面分别有红球和白球,如下表所示:
盒子X1 | 盒子X2 | 盒子X3 | |
红球 | 5 | 4 | 7 |
白球 | 5 | 6 | 3 |
盒子之间转变的概率如下表所示:
盒子X1 | 盒子X2 | 盒子X3 | |
盒子X1 | 0.2 | 0.3 | 0.5 |
盒子X2 | 0.4 | 0.4 | 0.2 |
盒子X3 | 0.3 | 0.3 | 0.4 |
假设盒子间的初始概率都相同,我们从这三个盒子中有放回地取三次球,分别得到红、白、红三种颜色的球,于是我们得到:
- 观测集合V={红球,白球},观测序列O={红,白,红};
- 隐含集合Q={盒子X1,盒子X2,盒子X3}
- 初始状态分布概率$$\Pi =\begin{Bmatrix}\frac{1}{3} & \frac{1}{3} & \frac{1}{3}\end{Bmatrix}^{T}$$
- 隐含状态转移概率矩阵$$A=\begin{bmatrix}0.2 & 0.3 & 0.5\\ 0.4 & 0.4 & 0.2\\ 0.3 & 0.3 & 0.4\end{bmatrix}$$
- 观测状态概率矩阵$$B=\begin{bmatrix}0.5 & 0.5\\ 0.4 & 0.6\\ 0.7 & 0.3\end{bmatrix}$$
以上的例子请仔细查看了解,在后面的例子中会根据该例子进行计算实例。
5)HMM模型的三个基本问题
HMM模型有三个经典问题需要解决:
- 求解观测序列的概率。给定模型$\lambda =\begin{Bmatrix}\Pi ,A,B\end{Bmatrix}$和观测序列$O=o_{1},o_{2},o_{3},...o_{T}$,计算在模型λ下观测序列O出现的概率P(O|λ)。
- 模型参数学习问题。给定观测序列$O=o_{1},o_{2},o_{3},...o_{T}$,我们需要去学习模型的3个要素$\lambda =\begin{Bmatrix}\Pi ,A,B\end{Bmatrix}$,使该模型下观测序列的条件概率P(O|λ)最大。
- 预测(解码)问题。给定模型$\lambda =\begin{Bmatrix}\Pi ,A,B\end{Bmatrix}$和观测序列$O=o_{1},o_{2},o_{3},...o_{T}$,求给定观测序列条件下,最可能出现的对应的状态序列。
自然语言处理(1)-HMM隐马尔科夫模型基础概念(一)的更多相关文章
- HMM隐马尔科夫模型
这是一个非常重要的模型,凡是学统计学.机器学习.数据挖掘的人都应该彻底搞懂. python包: hmmlearn 0.2.0 https://github.com/hmmlearn/hmmlearn ...
- HMM 隐马尔科夫模型
参考如下博客: http://www.52nlp.cn/itenyh%E7%89%88-%E7%94%A8hmm%E5%81%9A%E4%B8%AD%E6%96%87%E5%88%86%E8%AF%8 ...
- 自然语言处理---用隐马尔科夫模型(HMM)实现词性标注---1998年1月份人民日报语料---learn---test---evaluation---Demo---java实现
先放上一张Demo的测试图 测试的句子及每个分词的词性标注为: 目前/t 这/rzv 条/q 高速公路/n 之间/f 的/ude1 路段/n 已/d 紧急/a 封闭/v ./w 需要基础知识 HM ...
- Atitit 马尔可夫过程(Markov process) hmm隐马尔科夫。 马尔可夫链,的原理attilax总结
Atitit 马尔可夫过程(Markov process) hmm隐马尔科夫. 马尔可夫链,的原理attilax总结 1. 马尔可夫过程1 1.1. 马尔科夫的应用 生成一篇"看起来像文章的 ...
- HMM 自学教程(四)隐马尔科夫模型
本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在 HMM 学习最佳范例,这是针对 国外网站上一个 HMM 教程 的翻译,作者功底很深,翻译得很精彩 ...
- 隐马尔科夫模型HMM(一)HMM模型
隐马尔科夫模型HMM(一)HMM模型基础 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比 ...
- 隐马尔科夫模型(HMM)与词性标注问题
一.马尔科夫过程: 在已知目前状态(现在)的条件下,它未来的演变(将来)不依赖于它以往的演变 (过去 ).例如森林中动物头数的变化构成——马尔可夫过程.在现实世界中,有很多过程都是马尔可夫过程,如液体 ...
- 隐马尔科夫模型HMM
崔晓源 翻译 我们通常都习惯寻找一个事物在一段时间里的变化规律.在很多领域我们都希望找到这个规律,比如计算机中的指令顺序,句子中的词顺序和语音中的词顺序等等.一个最适用的例子就是天气的预测. 首先,本 ...
- 隐马尔科夫模型 HMM(Hidden Markov Model)
本科阶段学了三四遍的HMM,机器学习课,自然语言处理课,中文信息处理课:如今学研究生的自然语言处理,又碰见了这个老熟人: 虽多次碰到,但总觉得一知半解,对其了解不够全面,借着这次的机会,我想要直接搞定 ...
随机推荐
- Linux文件和目录权限实战讲解
一 相关课程回顾1.1 linux文件类型当执行ls -l或ls -la 命令后显示的结果中最前面的第2~10个字符是用来表示文件权限 第一个字符一般用来区分文件和目录: d:表示是一个目录,事实上在 ...
- Go语言实现:【剑指offer】求1+2+3+...+n
该题目来源于牛客网<剑指offer>专题. 求1+2+3+-+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). Go ...
- shell脚本自动化部署
由于公司技术部团队较小,没有专门的运维团队,所以运维工作技术部承包了. 一.纯人工部署是这样的: 1. 本地打包:一般 maven clean package 2. 借助xftp上传到服务器对应目录 ...
- 自动化运维利器 Fabric
Fabric 主要用在应用部署与系统管理等任务的自动化,简单轻量级,提供有丰富的 SSH 扩展接口.在 Fabric 1.x 版本中,它混杂了本地及远程两类功能:但自 Fabric 2.x 版本起,它 ...
- Tomcat 配置2 tomcat-users.xml
Tomcat的配置 Tomcat的主要配置文件有3个,分别是: Tomcat-users.xml. web.xml server.xml. 配置Tomcat-users.xml 该文 ...
- mysql中大数据表alter增加字段报错:"1034 Incorrect key file for table 'table_name'; try to repair it"
mysql中大数据表alter增加字段报错:"1034 Incorrect key file for table 'table_name'; try to repair it" 现 ...
- Mac将本地文件上传到Centos7(Linux)服务器上
1.打开终端,输入命令: scp /Users/codez/Downloads/jdk-8u144-linux-x64.tar.gz root@139.224.235.xxx:/root/java/j ...
- centos7安装mysql-5.6.43二进制包
卸载老版本的MySQL.查找并删除mysql有关的文件 # find / -name mysql # rm -rf /usr/lib64/mysql /usr/share/mysql [root@lo ...
- css—动画(transform, transition, animation)
transform 静态属性,一旦写进style里面,会立即显示作用,无任何变化过程.(类似于left, right, top, bottom这类属性) 主要用来做元素的变形 改变元素样式的属性主要有 ...
- 常用js封装
//获取url参数 function getUrlParams(name, url) { if (!url) url = location.href; name = name.replace(/[\[ ...