您的位置:首页 > 其它

HMM学习笔记

2015-12-02 13:54 239 查看
由于HMM是自然语言处理中非常重要且基础的模型,因此这里基于52nlp的HMM进行学习,并作如下笔记:

HMM包含两组状态和三组概率集合:

隐藏状态:一个系统的(真实)状态,可以由一个马尔科夫过程进行描述(例如:天气)。
观察状态:在这个过程中“可视”的状态(例如:海藻的湿度)。
pi向量:包含了(隐)模型在时间t=1时一个特殊的隐藏状态的概率(初始概率)。
状态转移矩阵:包含了一个隐藏状态到另一个隐藏状态的概率(并不随时间变化而不同,这一点非常重要,但常常不符合实际)。
混淆矩阵:包含了给定隐马尔科夫模型的某一个特殊的隐藏状态,观察到的某个观察状态的概率(注意:矩阵的每一行之和为1)。
因此一个隐马尔科夫模型实在一个标准的马尔科夫过程中引入一组观察状态,以及其与隐藏状态间的一些概率关系。

在状态转移矩阵及混淆矩阵中的每一个概率都是时间无关的,也就是说,当系统演化时这些矩阵并不随时间改变。实际上,这时马尔科夫模型关于真实世界最不显示的一个假设。

由一个向量和两个矩阵(pi,A,B)描述的隐马尔可夫模型对于实际系统有着巨大的价值,虽然经常只是一种近似,但它们却是经得起分析的。隐马尔可夫模型通常解决的问题包括:

1.对于一个观察序列匹配最可能的系统——评估,使用前向算法(forward algorithm)解决;

2.对于已生成的一个观察序列,确定最可能的隐藏状态序列——解码,使用Viterbi算法解决;

3.对于已生成的观察序列,决定最可能的模型参数——学习,使用前向-后向算法(forward-backward algorithm)解决。

目标是计算给定隐马尔科夫模型HMM下的观察序列的概率:一种是使用递归的方式从t=1到t=T进行局部概率计算,并相加,而另一种是穷举搜索。采用递归计算局部概率的方式其时间复杂度远远小于计算所有序列的概率并对其相加(穷举搜索)的时间复杂度。我们使用前向算法来计算给定隐马尔科夫模型后的一个观察序列的概率,他在计算中利用递归避免了对网格所有路径进行穷举计算。

对于一个特定的隐马尔可夫模型,维特比算法被用来寻找生成一个观察序列的最可能的隐藏状态序列。利用概率的时间不变性,通过避免计算网格中每一条路径的概率来降低问题的复杂度。维特比算法对于每一个状态都保存了一个反向指针,并在每一个状态中存储了一个局部概率。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: