史上最简单的隐马尔可夫模型讲解

如果...

如果...有一天...你追到了女神夕小瑶...并且与她恋爱了...

(想说“没有如果”的路人请选择狗带( ̄∇ ̄))

小夕的生活很规律的哦,小夕每天都会依次经历且仅仅经历以下6件事情:

化妆-吃饭-聊天-自习-上课-要抱抱。

而且小夕很乖的,我们在一起的每一天,小夕都会在做每件事情时告诉你小夕此刻的情绪状态(小夕有4种情绪状态:开心、尴尬、沮丧、生气

然而小夕开心时不一定是笑脸,沮丧时也不一定是哭脸。因此在处于某种情绪状态时,每一种表情脸都会有概率出现的哦(小夕有5种表情脸:哭脸、笑脸、尴尬脸、嘟嘟脸、面瘫脸

可是...就在我们已经生活了好多好多天以后,突然有一天的早上,我们闹矛盾了,小夕又恰好在生理期,一时过于伤心而说了下面的话:

“喂,如果你不能描绘出来我今天的心理状态的变化过程,那么你就不要陪我了哼~”

虽然这一天你依然可以观测到小夕的表情脸的变化,但这一天小夕丝毫没有透露她的情绪状态,那么该怎么办才能挽回呢?

(想说“不用挽回,直接踹了”的童鞋请立!刻!狗!带!)

隐马尔可夫模型

你:“╮(╯▽╰)╭哎,太简单啦,这不就是概率统计、随机过程中学的隐马尔科夫模型嘛~这不就是一个隐序列预测的问题嘛~”

一阶隐马尔可夫模型长这样:

 

v2-64dd8b1919978f29e835f8afb01a1fe6_b.png

看起来这个模型又复杂又有趣又莫名其妙。哎呀先不要管,听小夕慢慢讲这个奇怪的东西好不好。

先不要管“一阶”是什么意思啦(意思就是每一隐状态只跟前历史状态有关,不懂也没关系啦)。在上面这个一阶隐马尔可夫模型中,有3个隐状态:即黑色圈圈ω1、圈圈ω2、圈圈ω3。系统在任意时刻,只能处于3个隐状态中的一种。之所以称为隐状态,就是因为这些状态是隐藏的,也就是路人看不到某一时刻时系统是处于哪个隐状态的。

在隐状态之间的连线表示隐状态之间的转移概率:系统在某一时刻处于某个隐状态,但是在下一时刻就可能处于其他隐状态了,当然也可能还是处于当前的隐状态,那么从当前状态ωi跳转到下一状态ωj的概率即连线aij。比如图中,从ω2状态转移到ω1的概率就是连线a21。

图中红色的v1、v2、v3、v4代表的是观测值。观测值的意思即路人可以看到的值。同样,系统在某一时刻时只能取一种观测值,我们可以直接观测到(虽然我们看不到此刻处于哪个隐状态)。

红色的箭头bij表示处于隐状态ωi时,我们可以观测到观测值vj的概率。可以看到,系统每一时刻,处于某种隐状态,而在该隐状态都有一定的概率值观测到这四个观测值中的一个。

好~理论讲完了,但是我们并不知道这个看似好玩又莫名其妙的模型有什么用呀。所以下面就是小夕施展魔法的时刻!

小夕的魔法

首先,小夕将自己变成了一个一阶隐马尔可夫模型!

在夕小瑶这个隐马尔可夫模型中,显然小夕的四种情绪状态就是隐状态啊,路人无法直接观察到,只有小夕自己心里清楚。而小夕的表情脸,是你可以随时看到的,所以就是理论模型中的观测值呀。

而小夕的每一天,都会经历“化妆-吃饭-聊天-自习-上课-要抱抱”的过程,不就是经历了6个时间点嘛,而经历这6个时间点,小夕的情绪状态也会不停的随机发生变化,这不就是隐马尔可夫模型中的状态转移嘛。当然每种情绪状态下,每一种表情脸都有可能出现哦,就是每种观测值都可能出现。所以画出图来就是这样子的(画每一隐含状态的观测值后太乱了,拆开画了哦,自行脑补一下):

 

v2-6e4b9cfe5d7d5fe1fec660c2abf9ba5b_b.png

当然啦,与前面的理论模型一样,每一种隐状态都会有概率取到如下的观测值哦(中间的b12、b13、b14省略啦,自行脑补哦):

 

v2-3afeaceac0d733a3c241c29779c4e366_b.png

看!是不是突然发现隐马尔可夫模型非常合理的解释了小夕!!!还有更加合理的!!!

前面提到了,小夕一天中会经历6个时间点,所以小夕每经过一天就会产生一个隐状态序列和一个观测序列。而小夕说啦,可以让你陪小夕好多好多天哦,所以如果你真的很用心的喜欢小夕的话,会记录下小夕每一天对你说过的情绪状态变化(隐状态序列),也会记录下小夕每一天的表情变化(观测序列)。当然,序列的长度总是6啦。

在与小夕相处的最后一天,你依然记录下了这一天小夕的表情变化(观测序列),而你要计算出来的是小夕这一天的情绪变化,也就是隐状态序列。至此,将整个挽回小夕的事情完完全全的卡到了一阶隐马尔可夫模型中!

那么如何利用上面这些夕小瑶提供的线索来计算出最终的目标呢?

AB派

你成功的将“挽回夕小瑶”的任务卡进了隐马尔可夫模型(HMM)中。那么我们来规范化的整理一下已经有的信息和需要计算得到的信息。

还记得这两个图嘛?这就是我们建立好的模型。

 

v2-6e4b9cfe5d7d5fe1fec660c2abf9ba5b_b.png

(隐状态的转移图)

 

 

 

v2-3afeaceac0d733a3c241c29779c4e366_b.png(每个隐状态ωi都有概率发出5种可以观测到的信号)

对于第一张图,这么多的参数看起来也蛮乱的,那就将所有的状态转移概率aij存储到一个矩阵A中:

 

v2-58ba9a8321c7bf37f8664440b7c21c7f_b.png

矩阵A中的每个元素aij就代表当前状态为ωi时,下一状态为ωj的概率(即状态ωi到状态ωj的转移概率)。

对于第二张图,描述的是当(隐)状态为ωj时,发出信号vk的概率。所以用bjk来表示ωj发出信号vk的概率。将bjk存储到矩阵B中:

 

v2-48416075ab0c0e54f81b152e340c43d7_b.png

好~A矩阵和B矩阵显然就是我们需要计算出的模型参数啦。但是参数中仅仅是A和B就够了吗?

想一下,虽然A可以描述从某个状态转移到某个状态的概率,但是每个状态序列总要有一个开头呀~这个开头是什么样子的,在A矩阵和B矩阵中都没有描述。

所以模型还有一个描述初始状态的参数,也就是描述每个隐状态ωi作为初始状态的概率,记为πi。也就是向量π:

 

v2-91bb4430b659e0332157efe0d5d6533e_b.png

整理完毕~A、B、π就是我们全部要计算出的模型参数。

开始训练!

而我们已经有了夕小瑶好多天的隐状态序列和对应的观测序列的数据了,那么我们如何用它们来训练出模型的参数呢。

其实这样就很简单很简单啦,直接搬出似然函数,找出使得似然函数最大的参数值嘛,也就是最大化似然函数。

顾名思义,“然”是这样的意思,所以似然函数就是用来描述当前的模型参数取值的合理性,间接反映当前模型参数对手中数据集的解释程度,因此使得似然函数最大,意思就是使得模型参数取的最合理,使得手中数据集在模型的解释下变得合理。

你陪小夕度过了300天。因此你记录下了300段隐状态序列,记为Q=q1 q2 q3 ... qT(其实qi就是之前表示的ωi),其中T=6(每天经历6个时间点,化妆-吃饭-聊天-自习-上课-要抱抱)。

同时对应着300段观测序列,记为O=O1 O2 O3 ... OT,同样T=6。

然后根据极大似然估计的思想,直接用样本集配合优化算法估计出HMM的各个参数啦。

但是这里为了方便读者理解,简化文章难度,直接用频率来近似概率(实际工程中千万不要这样啊)。因此HMM的各个参数应该这样估计:

 

v2-7078825c17ce8c0628e35807fd328cec_b.png

 

v2-9c24abdca138f652aa5b02c633b73428_b.png

 

v2-8bfa407c383c71334154d74edb38a436_b.png

这样我们就得到了所有的模型参数(向量π、矩阵A、矩阵B)。

看,由此,我们轻而易举的把夕小瑶这个隐马尔可夫模型建立完成了。

有了这个模型,我们就完全看透夕小瑶了!所以,下面开始得到本任务的最终目标——预测夕小瑶在耍小脾气当天的情绪状态序列(隐状态序列)!

看透你了!

量化一下我们要做的事情:在给定HMM模型(即已知全部参数的HMM模型,记为μ)和观测序列O情况下,求最大概率的(隐)状态序列:

 

v2-51a8d29850f2d4e22650bba4086acf33_b.png

怎么计算呢?Viterbi算法!

这个算法有点绕,直接贴出来,如果直接看看不懂的话可以看后面小夕的解释哦。

 

v2-b0f6ae514a4d81c22b0a467e70d65dcc_b.png

 

v2-08150bb7fb13350c4f8f097d6830a5cc_b.png

 

v2-afcb153f9062dfceb8630c09965dca04_b.png

 

v2-85b3ec6603a56b87ba18d3fdfff27ee5_b.png

这个算法的思想就是设立一个小人δ(读作delta),这个小人从时刻1,一直走到时刻T。

这个小人的意义就是记录下自己在每个时间点t的每个隐状态j的概率(注意不是从全局的观测序列计算出的概率,是他自己从t=1的时刻一步步的观察每个时刻的观测值所得到的那一时刻的累积概率)

算法的第一步:初始化这个小人,利用已知的模型参数πi和bi(O1)(即状态i下,发出观测值O1的概率,其中O1为t=1时刻的观测值)得到t=1时刻每个隐状态i的δ值。

第二步:这个小人在每个时刻t都会将每个隐状态里呆一会。在每个隐状态j里,它都会抬头看看此刻的观测值Ot,并分别假设自己处于前一时刻t-1的每个隐状态i中,并用前一时刻t-1假设的隐状态的累计概率值乘以前一时刻假设的隐状态转移到当前时刻的当前隐状态的转移概率,然后算出使得当前时刻的当前隐状态的总概率最大化的前一时刻的隐状态,这个最优隐状态记为m吧。这个前一时刻的最优隐状态的累积概率δt-1(m)乘以前一时刻m状态转移到当前时刻的当前j状态的转移概率,再乘以当前时刻t的当前状态j发出观测值Ot的概率,即为δt(j)。

第三步:小人δ走完最后一个时刻T的最后一个隐状态后,就可以从最后时刻的全部隐状态中挑出最后时刻,也就是全局的最大累积概率δT啦,记下这个最大概率对应的隐状态QT

第四步:一步步的回溯呀,记下T时刻走到最优隐状态QT的前一时刻的最优隐状态(回顾一下第二步),得到前一时刻最优隐状态QT-1。然后同样,再往前回溯得到QT-2,一直回溯到Q1!然后Q1Q2Q3..QT就是全局最优隐状态序列啦!也就是夕小瑶耍小脾气时的情绪状态序列!

在你猜出后,夕小瑶瞬间(被自己)感动哭了...(内心os:竟然花了这么大的功夫教你怎么猜我的心思...还不如直接告诉你呢嘤嘤嘤...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/481255.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

睡着了也在学习!Nature最新研究揭示运动记忆从何而来

来源:生物通Steph Curry罚球时,他的大脑会利用运动记忆。现在,加州大学旧金山分校(UCSF)的研究人员已经展示了这种类型的记忆是如何在睡眠期间得到巩固的,当大脑处理白天的学习,使做某事的物理行为成为潜意识时。Karun…

数据结构:堆(Heap)

数据结构&#xff1a;堆&#xff08;Heap&#xff09; <!-- 文章内容 --><div data-note-content"" class"show-content"><div class"show-content-free"><p>堆就是用数组实现的二叉树&#xff0c;所有它没有使用父指针…

BAT机器学习面试1000题系列

1、本文的内容全部来源于七月在线发布的BAT机器学习面试1000题系列&#xff1b; 2、文章中带斜体的文字代表是本人自己增加的内容&#xff0c;如有错误还请批评指正&#xff1b; 3、原文中有部分链接已经失效&#xff0c;故而本人重新加上了新的链接&#xff0c;如有不当&…

拉马努金:“与神对话”的数学天才

来源&#xff1a;微信公众号“图灵教育”撰文&#xff1a;[英] 马库斯杜索托伊翻译&#xff1a;柏华元当哈代和利特尔伍德步履维艰地穿越陌生的黎曼图景时&#xff0c;在5000英里外的印度马德拉斯港务局内&#xff0c;一个名叫斯里尼瓦瑟拉马努金的年轻办事员被素数的神秘莫测吸…

浅入深出被人看扁的逻辑回归!

好像在各种机器学习入门教程中&#xff0c;逻辑回归模型&#xff08;Logistic/Logit Regression&#xff09;经常被拿来作为入门的机器学习模型&#xff0c;比如我家的Andrew Ng就是这样做的。看起来&#xff0c;逻辑回归模型实在太简单&#xff0c;甚至容易被认为是一个拍脑袋…

全球Web3技术产业生态发展报告(2022年)

来源&#xff1a;中国信息通信研究院编辑&#xff1a;蒲蒲Web3不只是互联网应用层的简单创新&#xff0c;可能会带来互联网体系架构整体性演进和系统性升级。党中央、国务院高度关注下一代互联网创新发展&#xff0c;在关键核心技术突破、新型基础设施建设、融合创新应用赋能等…

算法工程师笔试 -剑指offer-习题详细解答

说明 主要编程语言为 C/C涉及字符串的问题可能会使用 Python题目编号以原书为准&#xff0c;如“面试题 3&#xff1a;数组中重复的数字” 因为题目不多&#xff0c;所以就不做分类了 所有代码均通过 OJ 测试 在线 OJ 地址&#xff1a;剑指Offer_编程题 - 牛客网 Reference 《…

深入深出Sigmoid与Softmax的血缘关系

缘起逻辑回归逻辑回归模型是用于二类分类的机器学习模型&#xff08;不要说逻辑回归可以做多类分类啊喂&#xff0c;那是二类分类器的组合策略问题&#xff0c;而与逻辑回归分类器本身的构造没有半毛钱关系啊&#xff09;。我们知道&#xff0c;在逻辑回归中&#xff0c;用于预…

科学家使用机器学习获得前所未有的小分子视图

编辑 | 绿萝数以千计的不同小分子&#xff08;称为代谢物&#xff09;在整个人体中传输能量和传递细胞信息。由于它们非常小&#xff0c;因此很难在血液样本分析中将代谢物彼此区分开来——但识别这些分子对于了解运动、营养、饮酒和代谢紊乱如何影响健康非常重要。尽管在过去十…

【Brain】脑洞从何而来?加州大学最新研究:有创造力的人神经连接会「抄近道」...

来源&#xff1a;量子位为什么有的人更富创造力&#xff1f;总能想到别人不会想到的东西&#xff0c;做别人想不到做的事&#xff1f;最近&#xff0c;这个问题的答案被找到了&#xff1a;有创造力的人&#xff0c;大脑里的神经活动会“抄近道”。加州大学洛杉矶分校的研究人员…

一位老师,一位领导,一个让全体学生考上目标学校的故事

今天&#xff0c;小夕给大家讲一个故事... 从前&#xff0c;有座山...​ 山里&#xff0c;有座学校... 学校里&#xff0c;有一位老师&#xff0c;一位领导&#xff0c;还有五只可爱的小仙(学)女(生)。 这5个学生的名字是&#xff1a;小兔&#xff0c;小青&#xff0c;小路&…

小冰李笛:ChatGPT在向“让你认为它有知识”的方向发展 | MEET 2023

来源&#xff1a;量子位衡宇 整理自 MEET2023ChatGPT技惊四座&#xff0c;甚至不少人认为它已经能“取代搜索引擎”。然而就在MEET2023智能未来大会上&#xff0c;却出现了这样一种迥然相异的观点&#xff1a;未来5年里&#xff0c;大家想要获取知识&#xff0c;最好的方法还是…

从前,有只小仙女叫...

从前&#xff0c;有只小仙女叫小音✧٩(ˊωˋ*)و✧这一篇真的不是小夕萌的技术文啦(&#xffe3;∇&#xffe3;)今天小夕给大家推送一点好玩的东西~毕竟高中老师说过&#xff0c;不能只学不玩嘛(&#xffe3;∇&#xffe3;)虽然小夕以萌著称\(//∇//)\&#xff0c;但是在da…

DeepMind新研究:AI也懂合纵连横

摘要人类文明的成功&#xff0c;植根于我们通过沟通和制定共同计划进行合作的能力。人工智能主体面临着与人类类似的问题。最近&#xff0c;人工智能公司 DeepMind 展示了AI如何利用沟通在桌游“强权外交”中更好地合作。研究发现&#xff0c;沟通主体容易受到背叛协议者的负面…

从逻辑回归到神经网络

回顾小夕在文章《逻辑回归》中详细讲解了逻辑回归模型&#xff0c;又在《Sigmoid与Softmax》中详细讲解了Sigmoid的实际意义&#xff08;代表二类分类问题中&#xff0c;其中一个类别的后验概率&#xff09;。至此&#xff0c;我们已经比较透彻的理解了逻辑回归模型假设函数(也…

华为2019年校招(20届实习)机考题python版解答与思路(2019-3-13软件题)

试题为今天考试时记下&#xff0c;记于此仅做学习分享。侵删。 答案思路仅供参考&#xff0c;肯定有更优的办法&#xff01;第三题没解出来&#xff0c;欢迎大家评论提点&#xff01; 第一题&#xff1a; 这道题对输入做切分&#xff08;调用split()方法&#xff09;后&#xf…

语言模型生成了自然界不存在的蛋白质,图灵奖得主LeCun:蛋白质编程来了

来源&#xff1a;药学前沿进展Meta&#xff1a;设计蛋白质这件事&#xff0c;语言模型就能干。用机器学习去研究蛋白质结构预测&#xff0c;吸引了众多科技大厂、科研机构的目光纷纷投入其中&#xff0c;这期间&#xff0c;他们也产出了重要成果。如在 2021 年 《Science》的十…

神经网络中的偏置项b到底是什么?

前言很多人不明白为什么要在神经网络、逻辑回归中要在样本X的最前面加一个1&#xff0c;使得 X[x1,x2,…,xn] 变成 X[1,x1,x2,…,xn] 。因此可能会犯各种错误&#xff0c;比如漏了这个1&#xff0c;或者错误的将这个1加到WX的结果上&#xff0c;导致模型出各种bug甚至无法收敛。…

【重版】朴素贝叶斯与拣鱼的故事

重版公告由于小夕之后要讲的好几篇文章要基于这一篇的知识&#xff0c;但是以前写的的这篇文章对朴素贝叶斯的讨论不够深入&#xff0c;又不值得再额外写一篇朴素贝叶斯啦&#xff0c;因此本文重版了以前的文章《朴素贝叶斯》。与旧版相比&#xff0c;新版对基础知识的讲解进行…

2022,这些国之重器让人眼前一亮!

来源&#xff1a;新华社2022即将收官这一年我们有许多难忘的回忆回顾&#xff0c;是为了更好出发我们将这一年各领域走过的壮阔征程制作成了精美的系列海报第一期让我们来看看那些让人眼前一亮的国之重器它们——上天入海&#xff01;乘风破浪&#xff01;贯通聚能&#xff01;…