https://www.cnblogs.com/vpegasus/p/hmm.html

引言

大家都用过Siri,Cortana之类的语音助手吧? 当你对着手机说出'我的女朋友温柔吗?',Siri 或Cortana就会根据你说的这句话翻译成一段文字,然后再作应答. 先不管应答部分, 你可曾想过: Siri是如何将你说的话翻译成一段文字的?嗯,猜对了, 这里就用到了隐马尔可夫模型(Hiden Markov Model, HMM).

例子

假设你有三个女朋友(嘿~,现实不可以,想想总可以吧~,/躲拖鞋…), 你每周末只能选择陪其中一位(为了世界和平…). 而作为程序员的你,也没有什么情调,只会与女朋友做二种事情: 吃饭,看电影, 而因为工作繁忙,你每周也只能做其中一件事,三位美丽的女士也很理解,体谅你,也都很配合,很高兴.

那么问题来了, 你是如何选择周末去陪哪个女朋友呢? 三位女士都很可爱,你不想冷落每一个人,但第一个女朋友(记为A女朋友)有点聒噪,因此你会稍微少去一点她那里. 第二,第三个女朋友去都比较安静(分别记为B,C). 于是,你在心里默默地(或者是潜意识地)定下了去陪三位女朋友的概率:

女朋友 A B C
概率 0.2 0.4 0.4

比如,陪A女朋友的概率是0.2,可简单的理解为十次大约有二次会去陪她. 然而这只是你刚开始考虑的事,因为当你周末陪女朋友结束之后,你会根据本次的约会体验选择下一周要陪伴的女朋友.之前初始的'选择'概率就不再起作用了.

那约会结束后你是如何选择下一周的女士呢? 因为三位女士的性格比较稳定,因此每次的体验都会差不多,于是你的内心又有了一个下周去哪个女朋友的概率了:

本周陪伴\下周陪伴 A B C
A 0.5 0.2 0.3
B 0.3 0.5 0.2
C 0.2 0.3 0.5

什么意思呢? 比如你本周陪伴A了,那下周你继续陪A的概率是0.5, 而下周去陪B的概率则为0.2, 而去陪伴C的为0.3.

还没完~, 因为每个女朋友的喜好不一样,因此你们在一起做的事也不一样: A比较随意,吃饭,看电影都可没,没差; B比较文艺,则喜欢看电影会稍微多一些; C 则是个吃货,比较喜欢吃饭,但也会看电影.于是,你的心里又有谱了:

女朋友 吃饭 看电影
A 0.5 0.5
B 0.4 0.6
C 0.7 0.3

也就是说,比如对于C来说, 你们在一起呢,0.7的概率会去吃饭,也即十次大约有7次会去吃饭, 而有约三次会去看电影.

有一天,你在朋友圈发了个状态: 吃,吃,看,看,吃.

这引起了你朋友圈的三个人的兴趣:

你老妈, 你老妈对你的情况比较了解,她知道你对这三位女朋友的想法(即知道上面三张表), 她现在比较感兴趣的是,下周她儿子去干嘛(也比较八卦~).

你表姐, 你表姐因为住在另一个城市,所以沟通比较少,因而你对三位女朋友的感觉(上面三张表)她并不知道,只知道你同时和三位女生谈恋爱,所以她现在想根据你的发出的状态判断出你对三位女生的感觉(上面三张表).

你同事, 你同事也是你的基友,因此对你的事比较了解,没事你会跟说说三个女生在你心里的感受(上面三张表),但为防止他八卦,你并没有把每周去哪位女朋友那里告诉他.这下可勾起了他的好奇心,于是想根据你的状态猜出你每周都是陪伴的谁.

好了,隐马尔可夫模型讲完了~

什么? Are you kidding me ?

没有,真的,这就是马尔可夫模型. 下面个图来表示下.

描述模型

高冷贵族: 隐马尔可夫模型

这张图表示的就是你这五周以来与女朋友们的互动情况. 在隐马尔可夫模型中, 粉色圈圈那一行代表的是女朋友的情况,从微信状态的角度,它是一个隐藏在后面的状态(没有发在状态里啊~). 因此称为(隐)状态序列(这就是HMM中'隐'字的意思),而且这个状态链呢么是一个马尔可夫模型或叫做马尔可夫链. 什么是马尔可夫链? 就是说当前状态只决定于前一个状态. 在本本例中,你本周去哪个女朋友那里,完全由你上周在哪个女朋友那里来决定. 而绿色框框则被称为观测序列, 即别人从朋友圈能看到你什么都做了什么.

上面的三张表,即是描述模型的变量,第一张表我们称为初始状态向量,第二张表称为转移概率矩阵,第三张表则是观测概率矩阵.

而后面三个人的想要知道的东西就是HMM的三个基本问题:概率计算问题,学习问题,以及预测问题.

(三个问题的求解方式在后面~~~)

HMM 应用非常广泛,特别是在自然语言处理,语音识别,信号处理,生物序列分析(DNA, 蛋白质等)等等大放异彩.HMM是时间序列模型,处理时间序列是其本职工作.

PS: 一如既往, 只做了解的,读到这里就可停下了,想深入一些的,请继续~

基本概念*

HMM是一个时序概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程.具体请看上图.

现在咱们一般化地讨论一下, 设:

)


分别为状态序列与观测序列, 因状态序列是一个马尔可夫链,故 所有变量的联合概率分布为:

)


欲得到联合概率分布,其需要右边三个部分,)

则为观测条件. 因此,

设:

Q 是所有可能的状态集合, V 是所有可能的观测集合.

}


其中,N 是所有可能的状态数, M 是所有可能的观测数.

I 是长度为T 的状态序列, O 是对应的观测序列:

)


A 是状态转移概率矩阵:

????


其中,

????


是在 t 时刻 处于状态 qi 的条件下在 时间 t+1 转移到状态 qj 的概率.

B 是观测概率矩阵

????


其中

????


是在 t 时刻 处于状态 q_j 的条件下生成观测数 vk 的概率.

????

是初始状态概率向量

)


其中

????


是时刻 t = 1处于状态 qi 概率.

有了上述准确, HMM就基本上搞定了:

定义

 

)

 

这就是HMM,其中括号内的三个部分称为HMM三元素.

基本假设

  1. 齐次马尔可夫性假设, 即假设 在任意时刻 t 的状态 只有前一状态有关,与其他任何状态,观测都无关:

    )
  1.  

基本问题

  1. 概率计算问题, 给定定 )

和观测序列) ,估计模型 ) 和观测序列)

  1. ,即最有可能的状态序列.

接下来,对于这三个问题,我们将各个击破.

前向,后向算法

对于第一个问题, 最简单的方法就是暴力计算,把每种情况都考虑一遍, 不用我说,你也知道这不可行. 倒不是因为复杂,是因为算不起,它的时间复杂度是恐怖的 )

.

不过还真有比较不错的算法,而且还有两种!

高冷贵族: 隐马尔可夫模型

上图可表示为一HMM列.左,右两边虚线内我们分别用)

来表示,其中

)


这两个就是我们分别用于前向,后向算法的关键因子.

再明确一下,我们的目标是求解 )

.

前向算法

  1. 初始状态 1

, 考虑出现 概率:

)

, 现在要求)

  1. 出发:

 

https://www.cnblogs.com/vpegasus/p/hmm.html

引言

大家都用过Siri,Cortana之类的语音助手吧? 当你对着手机说出'我的女朋友温柔吗?',Siri 或Cortana就会根据你说的这句话翻译成一段文字,然后再作应答. 先不管应答部分, 你可曾想过: Siri是如何将你说的话翻译成一段文字的?嗯,猜对了, 这里就用到了隐马尔可夫模型(Hiden Markov Model, HMM).

例子

假设你有三个女朋友(嘿~,现实不可以,想想总可以吧~,/躲拖鞋…), 你每周末只能选择陪其中一位(为了世界和平…). 而作为程序员的你,也没有什么情调,只会与女朋友做二种事情: 吃饭,看电影, 而因为工作繁忙,你每周也只能做其中一件事,三位美丽的女士也很理解,体谅你,也都很配合,很高兴.

那么问题来了, 你是如何选择周末去陪哪个女朋友呢? 三位女士都很可爱,你不想冷落每一个人,但第一个女朋友(记为A女朋友)有点聒噪,因此你会稍微少去一点她那里. 第二,第三个女朋友去都比较安静(分别记为B,C). 于是,你在心里默默地(或者是潜意识地)定下了去陪三位女朋友的概率:

女朋友 A B C
概率 0.2 0.4 0.4

比如,陪A女朋友的概率是0.2,可简单的理解为十次大约有二次会去陪她. 然而这只是你刚开始考虑的事,因为当你周末陪女朋友结束之后,你会根据本次的约会体验选择下一周要陪伴的女朋友.之前初始的'选择'概率就不再起作用了.

那约会结束后你是如何选择下一周的女士呢? 因为三位女士的性格比较稳定,因此每次的体验都会差不多,于是你的内心又有了一个下周去哪个女朋友的概率了:

本周陪伴\下周陪伴 A B C
A 0.5 0.2 0.3
B 0.3 0.5 0.2
C 0.2 0.3 0.5

什么意思呢? 比如你本周陪伴A了,那下周你继续陪A的概率是0.5, 而下周去陪B的概率则为0.2, 而去陪伴C的为0.3.

还没完~, 因为每个女朋友的喜好不一样,因此你们在一起做的事也不一样: A比较随意,吃饭,看电影都可没,没差; B比较文艺,则喜欢看电影会稍微多一些; C 则是个吃货,比较喜欢吃饭,但也会看电影.于是,你的心里又有谱了:

女朋友 吃饭 看电影
A 0.5 0.5
B 0.4 0.6
C 0.7 0.3

也就是说,比如对于C来说, 你们在一起呢,0.7的概率会去吃饭,也即十次大约有7次会去吃饭, 而有约三次会去看电影.

有一天,你在朋友圈发了个状态: 吃,吃,看,看,吃.

这引起了你朋友圈的三个人的兴趣:

你老妈, 你老妈对你的情况比较了解,她知道你对这三位女朋友的想法(即知道上面三张表), 她现在比较感兴趣的是,下周她儿子去干嘛(也比较八卦~).

你表姐, 你表姐因为住在另一个城市,所以沟通比较少,因而你对三位女朋友的感觉(上面三张表)她并不知道,只知道你同时和三位女生谈恋爱,所以她现在想根据你的发出的状态判断出你对三位女生的感觉(上面三张表).

你同事, 你同事也是你的基友,因此对你的事比较了解,没事你会跟说说三个女生在你心里的感受(上面三张表),但为防止他八卦,你并没有把每周去哪位女朋友那里告诉他.这下可勾起了他的好奇心,于是想根据你的状态猜出你每周都是陪伴的谁.

好了,隐马尔可夫模型讲完了~

什么? Are you kidding me ?

没有,真的,这就是马尔可夫模型. 下面个图来表示下.

描述模型

高冷贵族: 隐马尔可夫模型

这张图表示的就是你这五周以来与女朋友们的互动情况. 在隐马尔可夫模型中, 粉色圈圈那一行代表的是女朋友的情况,从微信状态的角度,它是一个隐藏在后面的状态(没有发在状态里啊~). 因此称为(隐)状态序列(这就是HMM中'隐'字的意思),而且这个状态链呢么是一个马尔可夫模型或叫做马尔可夫链. 什么是马尔可夫链? 就是说当前状态只决定于前一个状态. 在本本例中,你本周去哪个女朋友那里,完全由你上周在哪个女朋友那里来决定. 而绿色框框则被称为观测序列, 即别人从朋友圈能看到你什么都做了什么.

上面的三张表,即是描述模型的变量,第一张表我们称为初始状态向量,第二张表称为转移概率矩阵,第三张表则是观测概率矩阵.

而后面三个人的想要知道的东西就是HMM的三个基本问题:概率计算问题,学习问题,以及预测问题.

(三个问题的求解方式在后面~~~)

HMM 应用非常广泛,特别是在自然语言处理,语音识别,信号处理,生物序列分析(DNA, 蛋白质等)等等大放异彩.HMM是时间序列模型,处理时间序列是其本职工作.

PS: 一如既往, 只做了解的,读到这里就可停下了,想深入一些的,请继续~

基本概念*

HMM是一个时序概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程.具体请看上图.

现在咱们一般化地讨论一下, 设:

)

相关文章:

猜你喜欢
  • 2021-03-31
  • 2021-07-12
  • 2021-11-16
  • 2022-12-23
  • 2021-12-23
相关资源
相似解决方案