【机器学习】--隐含马尔科夫模型从初识到应用
一、前述
马尔可夫(1856~1922),苏联数学家。切比雪夫的学生。在概率论、数论、函数逼近论和微分方程等方面卓有成就。
马尔可夫模型(Markov Model)是一种统计模型,广泛应用在语音识别,词性自动标注,音字转换,概率文法等各个自然语言处理等应用领域。经过长期发展,尤其是在语音识别中的成功应用,使它成为一种通用的统计工具。
二、具体
1、案例
问题一:
如果今天的天气状况是晴天,那么明天是多云而且后天有雾的概率是多大?
1*0.2*0.1(1*0.2是从晴天转多云的概率,*0.1是从多云转向有雾的概率)
问题二:
如果今天有雾,那么两天后有雨的概率是多大?(第二天的天气可以是晴天、多云、有雨或有雾)
概率累加即可
问题三:
在天气问题中,如果今天是晴天,我们求第三天最可能的天气状况,应该怎么做?
(假定今天的天气只能通过过去几天已知的天气情况进行预测——而对于其他因素,譬如风力、气压等则没有考虑。在这个例子以及其他相似的例子中,这样的假设显然是不现实的)
问题四:
直接算法
如果今天的天气状况是晴天,那么明天是多云而且后天有雾的概率是多大?
p(S2=cloudy,S3=foggy|S1=sunny)
=P(S3=foggy|S2=cloudy,S1=sunny)*P(S2=cloudy|S1=sunny)
=P(S3=foggy|S2=cloudy)*P(S2=cloudy|S1=sunndy)
=0.1*0.2
=0.02
总结:
在问题一中,我们注意到注意每一个状态都是唯一的依赖于前一个状态,就像交通灯一样,如果交通灯为绿色,那么下一个颜色状态将始终是黄色——也就是说,该系统是确定性的。确定性系统相对比较容易理解和分析,因为状态间的转移是完全已知的,对于给定的天气状况,我们可以直接通过状态间的装换概率来计算,但问题二中,我们只已知了今天和后天的天气状况,而明天的天气状况是隐藏的,未知的,它可能是晴天、雨天、多雾、多云这些状态,所以,这个时候我们前面的状态马尔可夫模型就要做一些变化。
2、 隐马尔可夫模型(Hidden Markov Model,HMM)概述
在正常的马尔可夫模型中,状态对于观察者来说是直接可见的。这样状态的转换概率便是全部的参数。
而在隐马尔可夫模型中,状态并不是直接可见的,但受状态影响的某些变量则是可见的。每一个状态在可能输出的符号上都有一概率分布。因此输出符号的序列能够透露出状态序列的一些信息。其难点是从可观察的参数中确定该过程的隐含参数。然后利用这些参数来作进一步的分析,例如模式识别。
HMM(隐马尔科夫模型)是自然语言处理中的一个基本模型,用途比较广泛,如汉语分词、词性标注及语音识别等,在NLP中占有很重要的地位。
一个更实际的问题是语音识别,我们听到的声音是来自于声带、喉咙大小、舌头位置以及其他一些东西的组合结果。所有这些因素相互作用产生一个单词的声音,一套语音识别系统检测的声音就是来自于个人发音时身体内部物理变化所引起的不断改变的声音。
一些语音识别装置工作的原理是将内部的语音产出看作是隐藏的状态,而将声音结果作为一系列观察的状态,这些由语音过程生成并且最好的近似了实际(隐藏)的状态。在这两个例子中,需要着重指出的是,隐藏状态的数目与观察状态的数目可以是不同的。一个包含四个状态的天气系统(晴天、多云、雨天)中,一个观察现象;纯粹的语音可以由80个音素描述,而身体的发音系统会产生出不同数目的声音,或者比80多,或者比80少。
在这种情况下,观察到的状态序列与隐藏过程有一定的概率关系。我们使用隐马尔科夫模型对这样的过程建模,这个模型包含了一个底层隐藏的随时间改变的马尔科夫过程,以及一个与隐藏状态某种程度相关的可观察到的状态集合。
3、 隐马尔可夫模型(Hidden Markov Model,HMM)原理
HMM由初始概率分布Π,状态转移分布概率A以及观测概率分布B确定。
Q是所有可能的状态的集合,N是可能的状态数:
V是所有可能观测的集合,M是所有可能的观测数:
HMM由初始概率分布Π、状态转移概率分布A以及观测概率分布B确定。
Π和A决定状态序列,B决定观测序列,因此HMM可以用三元符号表示,称为HMM三要素:
4、应用(对天气案例问题二)
1、直接算法(暴力算法)
如果今天有雾,那么两天后有雨的概率是多大?(第二天的天气可以是晴天、多云、有雨或有雾)
P(S3=foggy|S1=foggy)
=P(S3=foggy,S2=sunny|S1=foggy)+P(S3=foggy,S2=cloudy|S1=foggy)
+P(S3=foggy,S2=rainy|S1=foggy)+P(S3=foggy,S2=foggy|S1=foggy)
=P(S3=foggy|S2=sunny)*P(S2=sunny|S1=foggy)+
P(S3=foggy|S2=cloudy)*P(S2=cloudy|S1=foggy)+
P(S3=foggy|S2=rainy)*P(S2=rainy|S1=foggy)+
P(S3=foggy|S2=foggy)*P(S2=foggy|S1=foggy)
=0.1*0.0+0.1*0.4+0.1*0.3+0.3*0.3=0.16
2、前向算法