HMM

【机器学习】HMM与CRF

对着背影说爱祢 提交于 2020-01-14 00:45:01
HMM与CRF 隐马尔可夫 原理 代码实现 条件随机场 原理 条件随机场是从概率无向图(马尔可夫随机场)扩展得到的,概率无向图的联合概率分布$P(Y)$可由概率图中所有的最大团$C$上的势函数$\Psi_{C}(Y_{C})$的乘积形式表示,$Y_{C}$是$C$对应的随机变量,即 $$P(Y)=\frac{1}{Z} \prod_{C} \Psi_{C}(Y_{C})$$ 其中$Z$是规范化因子,保证$P(Y)$是一个概率分布。函数$\Psi_{C}(Y_{C})$要保证是严格正的,且通常为定义为指数函数。 $$\Psi_{C}(Y_{C})=exp\left( -E(Y_{C}) \right)$$ 条件随机场是给定随机变量$X$条件下,随机变量$Y$的马尔可夫随机场,这里介绍的是定义在线性链上的条件随机场,在标注问题中,$X$表示输入的观测序列,$Y$表示对应的输出标记序列或状态序列,如下图。 条件随机场的条件概率模型如下: $$P(y|x)=\frac{1}{Z(x)}exp \left( \sum_{i,k} \lambda_{k}t_{k}(y_{i-1},y_{i},x,i) + \sum_{i,l}\mu_{l}s_{l}(y_{i},x,i) \right)$$ $t_{k}$是定义在边上的特征函数, 称为转移特征特征,依赖于当前位置和前一个位置,$s_{l}

python之jieba库

流过昼夜 提交于 2019-12-24 02:52:37
jieba “结巴”中文分词:做最好的 Python 中文分词组件 "Jieba" (Chinese for "to stutter") Chinese text segmentation: built to be the best Python Chinese word segmentation module. Scroll down for English documentation. 特点 支持三种分词模式: 精确模式,试图将句子最精确地切开,适合文本分析; 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义; 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。 支持繁体分词 支持自定义词典 MIT 授权协议 友情链接 https://github.com/baidu/lac 百度中文词法分析(分词+词性+专名)系统 https://github.com/baidu/AnyQ 百度FAQ自动问答系统 https://github.com/baidu/Senta 百度情感识别系统 安装说明 代码对 Python 2/3 均兼容 全自动安装: easy_install jieba 或者 pip install jieba / pip3 install jieba 半自动安装:先下载 http://pypi.python

HMM后向算法(java实现)

自作多情 提交于 2019-12-22 20:40:10
package hmm . model ; import hmm . bean . HMMHelper ; import util . TCMMath ; /** * 后向算法 * 目的: * 1、先计算后向变量矩阵 * 2、再用后向变量矩阵 来 计算一个观测序列的概率 * @author aool */ public class Backward extends HMM { public int [ ] O ; //观测序列observe//如yellow red blue yellow green 这些在enum Color {red,yellow,blue,green }的索引位置 public double [ ] [ ] beta ; //后向变量矩阵 /** * flag 表示 A和B是否是自然对数化(lnX) true: A和B自然对数化后传进来 false: A和B未自然对数化 */ public Backward ( double [ ] [ ] A , double [ ] [ ] B , double [ ] PI , int [ ] O , boolean flag ) { super ( A , B , PI , flag ) ; this . O = O ; } public Backward ( HMM hmm , int [ ] O ) {

隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列

断了今生、忘了曾经 提交于 2019-12-22 00:50:40
    隐马尔科夫模型HMM(一)HMM模型基础      隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率      隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数      隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列     隐马尔科夫模型(Hidden Markov Model,以下简称HMM)是比较经典的机器学习模型了,它在语言识别,自然语言处理,模式识别等领域得到广泛的应用。当然,随着目前深度学习的崛起,尤其是 RNN , LSTM 等神经网络序列模型的火热,HMM的地位有所下降。但是作为一个经典的模型,学习HMM的模型和对应算法,对我们解决问题建模的能力提高以及算法思路的拓展还是很好的。本文是HMM系列的第一篇,关注于HMM模型的基础。 1. 什么样的问题需要HMM模型     首先我们来看看什么样的问题解决可以用HMM模型。使用HMM模型时我们的问题一般有这两个特征:1)我们的问题是基于序列的,比如时间序列,或者状态序列。2)我们的问题中有两类数据,一类序列数据是可以观测到的,即观测序列;而另一类数据是不能观察到的,即隐藏状态序列,简称状态序列。     有了这两个特征,那么这个问题一般可以用HMM模型来尝试解决。这样的问题在实际生活中是很多的。比如:我现在在打字写博客,我在键盘上敲出来的一系列字符就是观测序列

机器学习_HMM

醉酒当歌 提交于 2019-12-14 07:59:28
HMM是一种结构简单的贝叶斯网络,主要用于时序数据建模,在语音识别,自然语言处理等领域有广泛应用。 一、HMM概述 1、HMM模型的网络结构 上图为HMM模型的结构,其中 [ z 1 , z 2 , . . . . , z n ] [z_1,z_2,....,z_n] [ z 1 ​ , z 2 ​ , . . . . , z n ​ ] 是不可观测的状态序列; [ x 1 , x 2 , . . . , x n ] [x_1,x_2,...,x_n] [ x 1 ​ , x 2 ​ , . . . , x n ​ ] 为观测序列。 z i z_i z i ​ 表示第 i i i 时刻的状态变量,取值为 [ s 1 , s 2 , . . . , s N ] [s_1,s_2,...,s_N] [ s 1 ​ , s 2 ​ , . . . , s N ​ ] ;。 x i x_i x i ​ 表示第 i i i 时刻的观测值,取值为 [ o 1 , o 2 , . . . , o M ] [o_1,o_2,...,o_M] [ o 1 ​ , o 2 ​ , . . . , o M ​ ] 2、HMM模型的三组参数 λ = [ A , B , π ] \lambda=[A,B,\pi] λ = [ A , B , π ] A = [ a i , j ] N ∗ N A=[a_{i

视听融合综述(二)Audiovisual Fusion: Challenges and New Approaches

蹲街弑〆低调 提交于 2019-12-11 16:24:27
分享一篇视听融合研究综述,2015年发表在Proceedings of the IEEE上。该期刊创刊于1913年,是IEEE最古老的杂志之一。主要刊登一些综述和科学前沿的调查研究(review, survey, and tutorial)不刊载具体的研究成果。本文回顾了至2015年在视听融合方面的研究成果,并讨论了该领域的主要挑战,重点是两种模态的不同步以及训练和测试的问题。 题目:Audiovisual Fusion: Challenges and New Approaches Katsaggelos A K, Bahaadini S, Molina R. Audiovisual fusion: Challenges and new approaches[J]. Proceedings of the IEEE, 2015, 103(9): 1635-1653. 发表时间:2015 作者单位:Dept. of Electr. Eng. & Comput. Sci., Northwestern Univ., Evanston, IL, USA 权威期刊:Proceedings of the IEEE 原文链接: https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7194741 本文内容是该综述的3、4两节

隐马尔科夫(HMM)的Matlab实现

偶尔善良 提交于 2019-12-06 14:36:26
说明: 1. 本文实现了PRML一书第13章的隐马尔科夫(HMM)算法,并与K-means聚类、GMM模型聚类进行了对比。当然,HMM的用处远不止是聚类; 2. 非职业码农,代码质量不高,变量命名也不规范,凑合着看吧,不好意思。 隐马尔科夫模型(HMM)是我一直想弄清楚的一种模型。可能是上学时随机过程只考了60分,心有不甘。 模型和算法本身不赘述了,详见PRML第13章。直接看结果,把隐变量z作为类别编号,HMM可用于聚类。这里可以看到,由于HMM利用了序列跳转信息(也就是马尔科夫特性),可以获得比混合高斯模型(GMM,http://blog.csdn.net/foreseerwang/article/details/75222522)更为准确的结果。 Matlab输出: **************************************************************** **************************************************************** K-means聚类计算,结果将作为HMM初始值...... K-means聚类算法结束 **************************************************************** GMM聚类计算中......

隐马尔可夫模型(HMM)的MATLAB实现——Viterbi算法

夙愿已清 提交于 2019-12-06 14:36:15
维特比算法实际是用动态规划求解隐马尔可夫模型解码问题,即用动态规划求概率最大路径(最优路径)。代码中有示例,来自李航《统计学习方法》 function [Delta,Psi,P,I] = Viterbi(A,B,Pi,O) % 函数功能:利用维特比算法找到观测序列O的最优路径 % % 参考文献:李航《统计学习方法》 % % 思路: % 1,初始化 % delta_1(i) = Pi_i * b_i(o1), i = 1,2,...,N % psi_1(i) = o, i = 1,2,...,N % 2,递推,对于t = 2,3,...,T % delta_t(i) = max_1-from-1-to-N(delta_t-1(j) * a_ji) * b_i(ot), i = 1,2,...,N % psi_t(i) = arg max_1-from-1-to-N(delta_t-1(j) * a_ji), i = 1,2,...,N % 3,终止 % 最优路径概率P* = max_1-from-1-to-N(delta_T(i)) % 最优路径终点i*_T = arg max_1-from-1-to-N(delta_T(i)) % 4,最优路径回溯,对于t = T-1,T-2,...,1 % i*_t = psi_t+1(i*_t+1) % 最优路径I* = (i*_1,i*_2,

HMM隐马尔科夫模型学习笔记(未完)

纵然是瞬间 提交于 2019-12-06 14:36:00
先搞明白,是做什么的,怎么用 隐马尔可夫链 可见链 隐性链 隐马尔科夫三大问题 知道骰子有几种(隐含状态数量),每种骰子是什么(转换概率) 根据骰子投掷的结果(可见状态链),我想知道每次投掷出来的都是那种骰子(隐含状态链) 知道骰子有几种(隐含状态数量),每种骰子是什么(转换概率) 根据筛子投掷的结果(可见状态链),我想知道投掷出这个结果的概率 知道骰子有几种(隐含状态数量),不知道每种骰子是什么(转换概率) 观测到多次投掷筛子的结果(可见状态链),我想反推出每种骰子是什么(转换概率) 表达成公式 Evaluation(求概率): Given the observation sequence O = O 1 O 2 . . . O T O = O_1 O_2...O_T O = O 1 ​ O 2 ​ . . . O T ​ and a model λ = ( A , B , π ) \lambda = (A,B,\pi) λ = ( A , B , π ) , how do we efficiently compute P ( O ∣ λ ) P(O|\lambda) P ( O ∣ λ ) , i.e., the probability of the observation sequence given the model Recognition(识别): Given the

隐马尔科夫模型

青春壹個敷衍的年華 提交于 2019-12-06 14:35:46
上一篇简单提了一下马尔科夫模型,然后这是他的升级版隐马尔科夫模型的讲解。是状态+观测序列的组合。 首先,这是马尔科夫三个假设,有观测值序列O=O1,O2,O3,O4.....OT,有隐状态序列:Q=q1,q2,q4,q5....qT 隐马尔科夫的定义: 概率计算问题 HMM的概率计算问题是HMM三大问题之一。所谓概率计算就是给定一个模型参数已知的HMM和一组观测序列,求这组观测序列由这个HMM所生成的概率。概率计算问题其实评价了模型的好坏,试想如果有两个HMM和一组观测序列,第一个HMM给出的P(O|θ1)P(O|θ1)是0.8,第二个HMM给出的P(O|θ2)P(O|θ2)是0.9。如果给定多组测试观测数据都是这样,那么显然第二个HMM模型更准确一些,性能也更好。HMM的概率计算算法主要有前向算法和后向算法。直接计算法虽然理论上可行但计算复杂度过高实际中不可行,我们直接省略掉,下面先介绍前向算法,然后介绍后向算法。 前向算法 前向算法定义了一个概念,叫 前向概率 :给定隐马尔科夫模型λλ,定义到时刻t部分观测序列为o1,o2,...oto1,o2,...ot且状态为qiqi的概率为前向概率,记作: αt(i)=P(o1,o2,...ot,it=qi|λ)αt(i)=P(o1,o2,...ot,it=qi|λ) 有了前向概率,我们就可以递推地求得前向概率αt(i)αt(i