机器学习笔记十 隐马尔科夫模型(HMM)

Posted 猛男Banana君

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习笔记十 隐马尔科夫模型(HMM)相关的知识,希望对你有一定的参考价值。

一、基本定义

隐马尔科夫模型(HMM)是可用于标注问题的统计学习模型,描述由隐藏的马尔科夫链随机生成观测序列的过程,即描述一个含有隐含未知参数的马尔可夫过程,属于生成模型。

马尔可夫性质:无记忆性。也就是说,这一时刻的状态,受且只受前一时刻的影响,而不受更往前时刻的状态的影响。

状态序列:隐藏的马尔科夫链随机生成的状态的序列
观测序列:每个状态生成一个观测,由此产生的观测的随机序列

隐马尔科夫模型由初始概率分布、状态转移概率分布和观测概率分布确定。即由初始状态概率向量Π、状态转移概率矩阵A和观测概率矩阵B决定,因此隐马尔科夫模型可以写成λ=(A,B,Π)。

如何理解隐马尔科夫模型

举个例子,我的女朋友现在在北京工作,而我还在英国读书。每天下班之后,她会根据天气情况有相应的活动:或是去商场购物,或是去公园散步,或是回家收拾房间。我们有时候会通电话,她会告诉我她这几天做了什么,而我则要通过她的行为猜测这几天对应的天气最有可能是什么样子的。

以上就是一个简单的 HMM,天气状况属于状态序列,而女朋友的行为则属于观测序列。天气状况的转换是一个马尔可夫序列(隐马尔科夫链)。而根据天气的不同,有相对应的概率产生不同的行为。假设天气情况只有晴天和雨天两种,雨天她选择去散步,购物,收拾的概率分别是0.1,0.4,0.5;晴天她选择去散步,购物,收拾的概率分别是0.6,0.3,0.1。而天气的转换情况如下:这一天下雨,则下一天依然下雨的概率是0.7,而转换成晴天的概率是0.3;这一天是晴天,则下一天依然是晴天的概率是0.6,而转换成雨天的概率是0.4。同时还存在一个初始概率,也就是第一天下雨的概率是0.6, 晴天的概率是0.4。

对于上述的例子而言,如果连续持续多天,我的女朋友可能根据不同的天气进行不同的活动(当然,这里有一个前提,女朋友在同一天只能进行一种活动),这几天天气的变化的就是一个隐藏的状态序列,比如说连续五天的天气为[“晴”,“雨”,“雨”,“晴”,“雨”],我就可以通过女朋友的行为做出预测。

(PS:上述例子来自某个大佬的思路)

二、隐马尔科夫模型三个基本问题

1、概率计算问题。给定模型和观测序列,计算在该模型下产生观测序列的概率?换言之,如何评估模型与观测序列之间的匹配程度?

2、学习问题。给定模型和观测序列,用极大似然估计模型参数,使得在该模型下观测序列概率最大。换言之,如何训练模型使其能最好地描述观测数据?

3、预测问题(解码问题)。给定观测序列,如何找到与此观测序列最匹配的状态序列?换言之,如何根据观测序列推断出隐藏的模型状态?

三、概率计算算法

1、前向算法、后向算法

在这里插入图片描述在这里插入图片描述

利用前向概率和后向概率可以将观测序列概率P(O|λ)统一写成:

在这里插入图片描述

2、Baum-Welch算法(就是EM算法)
略。就是EM算法的推导。

3、维特比算法(笔者没学懂,待理解)
维特比算法利用动态规划解隐马尔科夫模型预测问题,即用动态规划球概率最大路径(最优路径)。

在这里插入图片描述

在这里插入图片描述

四、书本例题

1、例10.1
在这里插入图片描述

2、例10.2
在这里插入图片描述

以上是关于机器学习笔记十 隐马尔科夫模型(HMM)的主要内容,如果未能解决你的问题,请参考以下文章

隐马尔科夫模型HMMHMM模型

HMM隐马尔科夫模型及MATLAB实现

机器学习算法之——隐马尔可夫模型(Hidden Markov Models,HMM) 代码实现

大道至简机器学习算法之隐马尔科夫模型(Hidden Markov Model, HMM)详解---学习问题:Baum-Welch算法推导

Python实现HMM(隐马尔可夫模型)

简单易懂的隐马尔可夫模型(HMM)讲解