自然语言处理(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,机器学习课,自然语言处理课,中文信息处理课:如今学研究生的自然语言处理,又碰见了这个老熟人: 虽多次碰到,但总觉得一知半解,对其了解不够全面,借着这次的机会,我想要直接搞定 ...
随机推荐
- 024.Python模块OS模块
一 OS模块 对系统进行操作 1.1 popen 可以把运行的结果,这个字符串转化成utf-8这样的编码格式在进行输出 import os res = os.popen("ifconfig& ...
- 利用AppMetrics对Web进行监控教程
利用AppMetrics对Web进行监控教程 一.基础准备 1. 安装依赖 这里可以通过nuget或使用命令行进行安装,具体需要安装的类库如下(注意版本): Install-Package App.M ...
- C++标准模板库(STL)学习笔记
C++标准模板库(STL) 一.vector(变长数组) 1.使用vector #include <vector> using namespace std; 2.vector的定义 vec ...
- Codeforces_799
A.求两个时间比较一下. #include<bits/stdc++.h> using namespace std; int n,t,k,d; int main() { ios::sync_ ...
- A Hybrid Data Association Framework for Robust Online Multi-Object Tracking(2017 IEEE Transactions on Image Processing)
A Hybrid Data Association Framework for Robust Online Multi-Object Tracking 一种用于鲁棒在线多目标跟踪的混合数据关联框架 摘 ...
- LAMP: 分布式 HTTP 2.4.25 + PHP 5.4.13 + MySQL 5.5.28 分离部署
目录 A. 环境说明:B. 效果截图:C. HTTP编译安装D. MySQL二进制安装E. PHP源码编译安装F. PHP连接HTTPG. PHP支持扩展功能xcacheH. PHP连接MySQLI. ...
- 《Head First Java(第二版)》中文版 分享下载
书籍信息 书名:<Head First Java(第二版)>中文版 作者: Kathy Sierra,Bert Bates 著 / 杨尊一 编译 张然等 改编 豆瓣评分:8.7分 内容简介 ...
- 菜鸡发现腾讯视频bug
腾讯视频bug 我看一个将夜,出现三生三世? 这是为啥? 发现bug,会得到奖励吗? 不会像dnf一样游戏自己的bug,然后出现伤害999,把我号封了. 我这样会被封号吗?我应该怎么做才不会被封?好慌 ...
- Docker的基本使用与简介
1 Docker简介 1.1 什么是虚拟化 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器.网络.内存及存储等,予以抽象.转换后呈现出来 ...
- node -- express框架
express node的一个框架 安装express cnpm install express -S 引入 const express = require("express"); ...