HMM算法学习

来源:互联网 发布:定制家具生产软件 编辑:程序博客网 时间:2024/06/06 23:55

学习HMM三种算法很好的网站,里面涵盖前向、后向、前后向及viterbi算法视频:http://www.youtube.com/watch?v=jwYuki9GgJo   

最值得推荐的中文版介绍HMM:www.52nlp.cn

先上概率论里的2个基础法则:1.sum rule加法原则p(x)=sigmaY p(x,y);2.乘法原则product rule p(x,y)=p(y/x)p(x).参见PRML(pattern recognition and machine learning by Christopher M.Bishop)  page 14,figure1.11.【多加一句:如果你关注过PRML的话,这两个DD必须很清楚,因为它贯穿了这本书 的始末。】

现在我们来八一八HMM算法:

HMM可以理解为一个神器,靠Lambda=【A,B,Pi】行走江湖,还打遍天下无敌手。有一点点小限制条件就是:只跟和他交过手的应用领域过招。

A:转移矩阵(transition matrix),描述节点状态之间的相互转移关系。这个转移矩阵可以只有2个节点,3个节点,...N个节点。但在一个模型中究竟使用几个节点是最适合模型的现在没有任何结论。大家都知道的就是节点越多越复杂。对于转移矩阵需要深入理解的一点就是节点状态转换只与前一次状态相关而和时间的变化是无关的。在t=0的两种节点状态转换关系和t=1的节点状态转换关系就是自家操自家的心。某一时间下的节点状态相当于一个Cluster.

B.混合矩阵(emission matrix),有时我们也直接翻译成发射矩阵,但是混合矩阵会更容易让人理解。因为转移矩阵和这个混合矩阵是相互关联的。比如通过混合矩阵的观察值序列,我们需要推出观察序列是在哪种隐藏状态序列下产生,可能会有很多线路,但是我们既然要推出就要找一个最有的。多条线路来个O=Argmax(A)即可。通过观察序列值找隐藏序列值经常用到的就是Viterbi算法;还有一种情况就是在隐藏状态节点个数及转移概率都已知的情况下,我们计算出某一观察序列的出现的概率值,前向算法解决。这是混合矩阵就是在某种状态下出现的观察值的概率。多啰嗦一句的就是我们经常画HMM 的模型图是,观察节点之间是不用箭头联系的。总会认为就观察到一个值或者一个序列,那么下一个观察值或序列是和现有的观察值没有任何关系,直观上的这种理解有时候还是容易让人很混淆。谁让HMM 这么厉害呢,就是一个需要花时间练习的武功。

A.前向算法

目标:计算出所有观察节点与隐藏节点的联合概率.


 ........

原创粉丝点击