隐马尔可夫模型(HMM)简介
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
隐马尔可夫模型(HMM)简介
(一)
阿黄是大家敬爱的警官,他性格开朗,身体强壮,是大家心目中健康的典范。
但是,近一个月来阿黄的身体状况出现异常:情绪失控的状况时有发生。有时候忍不住放声大笑,有时候有时候愁眉不展,有时候老泪纵横,有时候勃然大怒……
如此变化无常的情绪失控是由什么引起的呢?据警队同事勇男描述,由于复习考试寝室不熄灯与多媒体作业的困扰,阿黄近日出现了失眠等症状;与此同时,阿黄近日登陆一个叫做“xiaonei 网”的网站十分频繁。经医生进一步诊断,由于其他人也遇到同样的考试压力、作息不规律的情况而并未出现情绪失控;并且,其它登陆XIAONEI网的众多同学表现正常,因此可基本排除它们是情绪失控的原因。黄SIR的病情一度陷入僵局……
最近,阿黄的病情有了新的眉目:据一位对手相学与占卜术十分精通的小巫婆透露,阿黄曾经私下请她对自己的病情进行诊断。经过观察与分析终于有了重大发现:原来阿黄的病情正在被潜伏在他体内的三种侍神控制!他们是:修罗王、阿修罗、罗刹神。
据悉,这三种侍神是情绪积聚激化而形成的自然神灵,他们相克相生,是游离于个体意识之外的精神产物,可以对人的情绪起到支配作用。每一天,都会有一位侍神主宰阿黄的情绪。并且,不同的侍神会导致不同的情绪突然表现。然而,当前的科技水平无法帮助我们诊断,当前哪位侍神是主宰侍神;更糟的是,不同的侍神(3个)与不同的情绪(4种)并不存在显而易见的一一对应关系。
所以,乍看上去,阿黄的病情再次陷入僵局……
我们怎样才能把握阿黄情绪变化的规律?
我们怎样才能通过阿黄的情绪变化,推测他体内侍神的变化规律?
关键词:两类状态:
情绪状态(观察状态):放声大笑,愁眉不展,老泪纵横,勃然大怒
侍神状态(隐状态):修罗王,阿修罗,罗刹神
(二)
阿黄的病情引来了很多好心人的关心。这与阿黄真诚善良的品格不无关系。
关于侍神的特点,占卜师和很多好心人找来了许多珍贵资料。其中很多人经过一段时间的观察与记录后,在貌似毫无规律的数据背后,发现了侍神与情绪之间的内在规律!!他们在多次观测后,
建立在大量数据基础上,表现出宏观的内在联系!
由于这些好心人大部分是TONGJI大学的人,所以,这种规律被称作统计规律。这些人被称为统计学家(orz太土了)…………
具体的规律被概括为:
1. 每天,哪位侍神主宰与前一天侍神是谁有很大关系!即:前一个侍神会影响下一个侍神出现的概率多少。
三个侍神,两两之间的转化的几率的大小,我们总结在一个对应表中:
便于某些自称为数学家的人计算,我们习惯于写成矩阵形式:
2.每位侍神主宰时,所对应的情绪出现也有一定的规律:某种侍神出现时,情绪的出现有一定的规律性。比如,如果今天的侍神是修罗王,那么阿黄放声大笑的概率是不同侍神对应的不同情绪出现的几率,我们也归纳在一张表中:
便于计算,也可以写成矩阵的格式。
3.由于每天的侍神状态,情绪状态都取决于前一天,所以,只有知道最开始阿黄的情绪状态,即初始状态,才有可能来推导随后的日子里,阿黄体内的侍神和情绪的变化情况。
我们假定,阿黄体内的侍神首先出现的概率满足下面的表格
修罗王阿修罗罗刹神
〔0.63 0.17 0.20〕
至此,我们已经掌握了研究阿黄情绪变化规律的所有信息,它包括:
两类状态:侍神状态,情绪状态
三种关系:侍神的转换关系,侍神与情绪的关系,侍神的初始状态
便于计算,我们用数学语言来定义,便于今后计算。
修罗王阿修罗罗刹神
初始状态矩阵:Π=〔0.64 0.17 0.20〕
状态转移矩阵:
A =
两态混合矩阵(描述侍神状态和情绪状态对应关系)
(三)
知道了关于阿黄的这些信息后,我们能做些什么呢?
一、估计“放声大笑”-“老泪纵横”-“勃然大怒”出现的概率:
“放声大笑”-“老泪纵横”-“勃然大怒”是一种非常危险的组合!如果某三天内阿黄出现了“放声大笑”-“老泪纵横”-“勃然大怒”的情绪变化,会引起严重精神损伤!!那么,这种情绪组合出现的概率是多少呢?
看起来比较麻烦,因为“放声大笑”可以对应三种侍神;其余两个也可以。三天,三种侍神,所有可能为3*3*3=27种。
根据全概率公式:所以:
P(笑-泪-怒)=P(笑-泪-怒 | 修罗王-修罗王-修罗王)+P(笑-泪-怒 | 修罗王-修罗王-阿修罗)+P(笑-泪-怒 | 修罗王-修罗王-罗刹神)+………………+P(笑-泪-怒 | 罗刹神-罗刹神-罗刹神)
一共27项相加,就可以把所有的可能计算出来!
可以想像,这样的计算是灾难性的。
当然,在计算机计算时,可以用递归法简化计算,降低复杂度。
①我们来把每一天,阿黄的情绪状态串起来,多天就形成一个状态序列。其中第t天的状态就是Ykt
②在计算序列中某一中间状态的概率时,用所有可能到达该状态的路径之和表示。
比如在t=2时间,状态为阿修罗的概率可以用下面的路径计算:
最后的观察状态的部分概率表示,这些状态所经过的所有可能路径的概率。比如:
③用αt ( j ) 表示在时间t时状态j的部分概率。计算方法如下:
αt ( j )= P( 观察情绪 | 侍神是j ) * P(在t时间所有到j的途径)
其中两项相乘中的第一项我们由两状态混合矩阵就可以得到:
而后一项,我们需要前一项的结果来确定。这也表现了HMM每个环节的状态是基于前一环节状态的特点。
④如果说,每一环节都依赖前一环节,那么最初的环节,也就是最初的状态怎么来计算呢?
很简单。初始状态Π就派上它的用场了。
比如:第一天阿黄放声大笑,那么:
a1(修罗王)=0.63×0.6=0.378
a1(阿修罗)=0.17×0.25=0.0425
a1(罗刹神)=0.20×0.05=0.01
归纳成数学式:
⑤我们说过,后一天侍神的情况是由前一天来决定的。现在,如果知道了at(j),那么,后面一天的情况at+1(j)也应该知道了吧。怎么来算at+1(j)呢?
太枯燥了~还是继续上面的例子吧
比如,t=2时,情绪为老泪纵横,侍神为阿修罗,那么:
a2(阿修罗)=P(阿修罗时老泪纵横的概率)×P(所有到达阿修罗的概率)
其中:
P(所有到达阿修罗的概率)
=a1(修罗王)×P(修罗王→阿修罗)+a1(阿修罗)×P(阿修罗→阿修罗)+a1(罗刹神)×P(罗刹神→阿修罗)
=0.378×0.25+0.0425×0.125+0.01×0.675
这样,知道a1,知道at和at+1的关系,迭代啊迭代,迭迭代代无穷匮矣……最终会找到你需要的状态的概率的。
(而且,在编成时运用迭代可降低算法复杂度,不太懂,不多扯……)
最后,解答“放声大笑-老泪纵横-勃然大怒”的概率
每天的三个概率对应三位侍神
第一天:放声大笑
(0.63 × 0.6) = 0.37800002
(0.17 ×0.25) = 0.0425
(0.2 ×0.05) = 0.010000001
第二天:老泪纵横