机器学习入门之隐马尔科夫模型

云脑智库 2021-10-12 00:00


来源 | 焉知智能汽车

智库 | 云脑智库(CloudBrain-TT)

云圈 | “云脑智库微信群”,请加微信:15881101905,备注研究方向


一个生活中的例子


假设你想捉摸老板每天的心情是好是坏,以此选择一个合适的汇报时机。你每天中午都会和老板一起吃食堂,而食堂午餐只能从川菜、粤菜、东北菜和淮扬菜四种中选择一种。你感觉老板每天心情和午餐吃什么有关系,想通过观测老板每天选择的午餐来猜测他每天心情的好坏。

 

接下来我们聊聊如何利用隐马尔科夫模型(HMM)来处理这个问题。


对生活中的例子建模


讲隐马尔科夫模型之前先介绍马尔科夫模型。

 

马尔科夫模型是指序列中的任何一个随机变量的概率分布仅与其上一个变量有关,与更早的变量无关。


说人话就是假设老板是个善忘的人,他今天心情的好坏只与昨天心情好坏有关,与前天及再早前的心情无关。


设老板第n天的心情为xn,那么老板N天以来的心情概率分布p可以简化为:


                           

老板心情隐藏在心底,只有每天中午吃什么可以被我们观测。我们称为老板心情为隐变量,每天午餐选择的菜系为观测变量。使用隐马尔科夫模型时,有两个重要的假设:


(1)齐次马尔科夫性假设,隐变量具有马尔科夫性,即老板当天心情只与昨天心情有关。


(2)观测独立性假设,观测只和当前时刻状态有关,即老板当天选什么午餐只和当天心情有关。

 

设老板第n天的午餐选择为zn,那么满足这两个假设的隐马尔科夫模型可以如下图表示,



而其公式表达为:



这个复杂的公式指的是N天以来,老板的心情序列(隐变量)分别为,以及每天中午选菜序列(观测变量)分别为的概率可以由等号右边的三部分的乘积来计算。这三部分分别是:


(1)初始概率模型,即,对应老板第一天心情的概率。假设可以有M种可能的状态,那么初始概率可以表示为1*M的概率矩阵。在我们的例子中M=2,这个向量的两个元素分别对应老板第一天心情好的概率和坏的概率。


(2) 转移概率模型,即公式中等号右边的第一套中括号内的乘积,对应老板每天心情转移的概率,亦即上面图片中上面一行状态从左往右的过程。假设以有M种可能的状态,那么转移概率矩阵A的大小为M*M,表示为:



该矩阵中第i行第j列的元素对应的是第n天隐变量为时,第n+1天隐变量转移的条件概率。说人话就是第n天老板心情时的前提下,下一天老板心情变为的概率。


在我们的例子中,只有好和坏两种状态,M=2。那么转移概率矩阵就是一个2*2的矩阵,四个元素分别对应老板心情今好明好、今好明坏、今坏明好、今坏明坏的概率。

 

(3)发射概率模型,即公式中等号右边的第二套中括号内的乘积,对应老板每天心情和中午选菜的概率,亦即上面图片中每次上面一行状态从上往下跳转到下面一行的过程。假设观测变量有T种状态,那么发射概率矩阵B的大小为M*T,表示为:



该矩阵中第j行第k列的元素对应的是第n天隐变量为时,观测变量为的概率。说人话就是第n天老板心情为时,他选择午餐为的概率。


在我们例子中,有川菜、粤菜、东北菜和淮扬菜四种状态,T=4。那么发射概率矩阵就是一个2*4的矩阵。矩阵每个元素分别对应老板当天心情好或者坏时,分别选择每种菜系当午餐的概率。

 

通过转移概率和发射概率的分拆,具有马尔科夫性的只有隐变量,而观测变量之间不再具有马尔科夫性,这其实刚好对应之前说的模型假设。这也是它为什么叫“隐马尔科夫模型”的原因,具有马尔科夫性的变量是“隐藏”起来的不被观测的变量。而观测变量通过每个时刻都独立地与隐变量关联,实际上也将观测变量与之前的历史状态关联起来了。这就是“隐马尔科夫”的厉害之处。

 

隐马尔科夫模型可以用来解决三大问题:


(1)第一种是计算概率:已知整个模型和观测序列,计算出现该观测序列的概率。说人话就是已知模型和参数,而且已经观察到上一周老板每天中午都吃了什么菜系,推算老板一周里选择这种菜系的概率。

 

(2)第二种是学习问题:已知观测序列和模型,调整模型参数使出现观测序列的概率最大。说人话就是,已经建好模型而且观察到老板上一周吃了什么,通过调参优化模型。

 

(3)第三种是预测问题:已知整个模型和观测序列,推算隐状态序列。说人话就是按照模型参数推算老板的心情。

 

回到我们开头的生活中的例子,利用隐马尔科夫模型推算老板心情,大致需要进行以下步骤:


(1)建立公用的隐马尔科夫模型

(2)隐马尔科夫模型初始参数确定

(3)初始模型参数训练,直到模型收敛为止

(4)将观察到的老板的历史午餐选择序列代入(3)中得到的模型参数进行训练,使用迭代方法调整模型参数达到最优

(5)利用(4)中优化的模型和参数,根据老板今天中午吃什么菜系,推算老板今天心情是好是坏。

 

第(1)步实际上就是对应这一章节介绍的数据建模。对(2)到(5)步,下面以Python的Hmmlearn为例,进一步学习马尔科夫模型。


Python实例


Hmmlearn的安装很简单,"pipinstall hmmlearn"即可完成。


Hmmlearn实现了三种隐马尔科夫模型类,按照观测状态是连续状态还是离散状态,可以分为两类。GaussianHMM和GMMHMM是连续观测状态的模型,而MultinomialHMM是离散观测状态的模型。针对本文开头的例子,我们采用离散的MultinomialHMM。


(1)导入MultinomialHMM并定义变量:



(2)用MultinomialHMM建模。其函数的变量n_components是隐状态的数量,变量n_iter是最大的迭代次数,tol是收敛阈值。



(3)与其他机器学习类似,隐马尔科夫模型的训练也分为监督学习和非监督学习。监督学习是指学习样本包含观测序列和隐状态序列,非监督是指样本只有观测序列。

 

说人话就是如果除了观察老板每天午餐,你还能通过其他同事获知过往老板的实际心情,那么就可以用监督学习。否则只知道老板每天午餐选择,但无从确认过往老板实际心情的,就用非监督学习。实际应用中,监督学习往往需要更多的数据标注量,建议优先选择非监督。这里Python例子也是选用非监督。


 

(4)用MultinomialHMM的decode函数来推测老板的心情。这里采用的预测算法是Viterbi算法,本文不详细展开。简单来说,该算法就是用动态规划解概率最大路径,即在每个时刻递推计算每个状态转移的最大概率路径,递推到终点后再回溯最大概率路径的每个状态。

 

说人话就是每天推算时,只基于昨天推算出来的老板心情好坏的概率以及今天老板吃了什么午餐来推算老板今天的心情。当天算出来的不是最大概率的其他路径就把它们忘记(删除)掉。如此类推,到按照最后一天的老板午餐就可以推算出老板心情,而且往前的心情历史路径也只会剩下一条。当然不用Viterbi算法,也可以暴力计算所有路径找出概率最大的,但对样本数量多的情况来说明显效率更低。

 

假设前6天老板午餐分别是(川,川,粤,东北,淮,粤),今天午餐老板选了粤菜。那么模型推算出来这7天老板的心情就是[坏, 坏, 好, 好, 坏, 好, 好]。当然初始


 

写在最后


当然本文的实例只是方便初学者理解,隐状态只是一阶的马尔科夫链,观测状态也是离散的,实际问题往往更复杂。例如老板今天的心情可能和之前的M天的心情都有关,这种就对应M阶马尔科夫模型。观测序列也可能是连续的,比如方向盘转角。

 

实际上隐马尔可夫模型可以有更高阶的建模,结合其他数据处理方法,拓展到智能汽车,还可以用于很多方面,例如:


  1. 通过输入的语音推算驾驶员意图
  2. 通过观测前车运动变量推算前车换道意图
  3. 通过观测输入的轨迹点推算真实道路线
 
隐马尔科夫模型的精髓在于通过建立“隐藏“变量,将观测变量的时序相关性抽象到隐藏变量上。在日常生活中,我们常称这种感觉为”第六感“。在机器学习中,我们称这种感觉为”隐马尔科夫模型“。

当然隐马尔可夫模型也不是万能的,实际中往往需要花费大量的时间优化模型和调参,才能达到“能用“的程度。最后引用George Box的一句名言作为结尾:“All models are wrong,but some are useful.”
 

参考来源:

  1. Hidden Markov ModelsFundamentals,http://cs229.stanford.edu/section/cs229-hmm.pdf

  2. https://hmmlearn.readthedocs.io/en/latest/api.html#hmmlearn-base

- The End

声明:欢迎转发本号原创内容,转载和摘编需经本号授权并标注原作者和信息来源为云脑智库。本公众号目前所载内容为本公众号原创、网络转载或根据非密公开性信息资料编辑整理,相关内容仅供参考及学习交流使用。由于部分文字、图片等来源于互联网,无法核实真实出处,如涉及相关争议,请跟我们联系。我们致力于保护作者知识产权或作品版权,本公众号所载内容的知识产权或作品版权归原作者所有。本公众号拥有对此声明的最终解释权。

投稿/招聘/推广/合作/入群/赞助 请加微信:15881101905,备注关键词

微群关键词:天线、射频微波、雷达通信电子战、芯片半导体、信号处理、软件无线电、测试制造、相控阵、EDA仿真、通导遥、学术前沿、知识服务、合作投资.

“阅读是一种习惯,分享是一种美德,我们是一群专业、有态度的知识传播者.”

 阅读原文加入知识星球,发现更多精彩内容.

   ///  先别走,安排点个“赞”和“在看” ↓  

云脑智库 努力是一种生活态度,与年龄无关!专注搬运、分享、发表雷达、卫通、通信、化合物半导体等技术应用、行业调研、前沿技术探索!专注相控阵、太赫兹、微波光子、光学等前沿技术学习、分享
评论
  • 临近春节,各方社交及应酬也变得多起来了,甚至一月份就排满了各式约见。有的是关系好的专业朋友的周末“恳谈会”,基本是关于2025年经济预判的话题,以及如何稳定工作等话题;但更多的预约是来自几个客户老板及副总裁们的见面,他们为今年的经济预判与企业发展焦虑而来。在聊天过程中,我发现今年的聊天有个很有意思的“点”,挺多人尤其关心我到底是怎么成长成现在的多领域风格的,还能掌握一些经济趋势的分析能力,到底学过哪些专业、在企业管过哪些具体事情?单单就这个一个月内,我就重复了数次“为什么”,再辅以我上次写的:《
    牛言喵语 2025-01-22 17:10 191浏览
  • 嘿,咱来聊聊RISC-V MCU技术哈。 这RISC-V MCU技术呢,简单来说就是基于一个叫RISC-V的指令集架构做出的微控制器技术。RISC-V这个啊,2010年的时候,是加州大学伯克利分校的研究团队弄出来的,目的就是想搞个新的、开放的指令集架构,能跟上现代计算的需要。到了2015年,专门成立了个RISC-V基金会,让这个架构更标准,也更好地推广开了。这几年啊,这个RISC-V的生态系统发展得可快了,好多公司和机构都加入了RISC-V International,还推出了不少RISC-V
    丙丁先生 2025-01-21 12:10 701浏览
  • 2024年是很平淡的一年,能保住饭碗就是万幸了,公司业绩不好,跳槽又不敢跳,还有一个原因就是老板对我们这些员工还是很好的,碍于人情也不能在公司困难时去雪上加霜。在工作其间遇到的大问题没有,小问题还是有不少,这里就举一两个来说一下。第一个就是,先看下下面的这个封装,你能猜出它的引脚间距是多少吗?这种排线座比较常规的是0.6mm间距(即排线是0.3mm间距)的,而这个规格也是我们用得最多的,所以我们按惯性思维来看的话,就会认为这个座子就是0.6mm间距的,这样往往就不会去细看规格书了,所以这次的运气
    wuliangu 2025-01-21 00:15 340浏览
  • 故障现象 一辆2007款日产天籁车,搭载VQ23发动机(气缸编号如图1所示,点火顺序为1-2-3-4-5-6),累计行驶里程约为21万km。车主反映,该车起步加速时偶尔抖动,且行驶中加速无力。 图1 VQ23发动机的气缸编号 故障诊断接车后试车,发动机怠速运转平稳,但只要换挡起步,稍微踩下一点加速踏板,就能感觉到车身明显抖动。用故障检测仪检测,发动机控制模块(ECM)无故障代码存储,且无失火数据流。用虹科Pico汽车示波器测量气缸1点火信号(COP点火信号)和曲轴位置传感器信
    虹科Pico汽车示波器 2025-01-23 10:46 87浏览
  • 数字隔离芯片是一种实现电气隔离功能的集成电路,在工业自动化、汽车电子、光伏储能与电力通信等领域的电气系统中发挥着至关重要的作用。其不仅可令高、低压系统之间相互独立,提高低压系统的抗干扰能力,同时还可确保高、低压系统之间的安全交互,使系统稳定工作,并避免操作者遭受来自高压系统的电击伤害。典型数字隔离芯片的简化原理图值得一提的是,数字隔离芯片历经多年发展,其应用范围已十分广泛,凡涉及到在高、低压系统之间进行信号传输的场景中基本都需要应用到此种芯片。那么,电气工程师在进行电路设计时到底该如何评估选择一
    华普微HOPERF 2025-01-20 16:50 127浏览
  • 现在为止,我们已经完成了Purple Pi OH主板的串口调试和部分配件的连接,接下来,让我们趁热打铁,完成剩余配件的连接!注:配件连接前请断开主板所有供电,避免敏感电路损坏!1.1 耳机接口主板有一路OTMP 标准四节耳机座J6,具备进行音频输出及录音功能,接入耳机后声音将优先从耳机输出,如下图所示:1.21.2 相机接口MIPI CSI 接口如上图所示,支持OV5648 和OV8858 摄像头模组。接入摄像头模组后,使用系统相机软件打开相机拍照和录像,如下图所示:1.3 以太网接口主板有一路
    Industio_触觉智能 2025-01-20 11:04 199浏览
  • Ubuntu20.04默认情况下为root账号自动登录,本文介绍如何取消root账号自动登录,改为通过输入账号密码登录,使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、Android等操作系统,接口丰富,开发评估快人一步!添加新账号1、使用adduser命令来添加新用户,用户名以industio为例,系统会提示设置密码以及其他信息,您可以根据需要填写或跳过,命令如下:root@id
    Industio_触觉智能 2025-01-17 14:14 150浏览
  •     IPC-2581是基于ODB++标准、结合PCB行业特点而指定的PCB加工文件规范。    IPC-2581旨在替代CAM350格式,成为PCB加工行业的新的工业规范。    有一些免费软件,可以查看(不可修改)IPC-2581数据文件。这些软件典型用途是工艺校核。    1. Vu2581        出品:Downstream     
    电子知识打边炉 2025-01-22 11:12 143浏览
  • 高速先生成员--黄刚这不马上就要过年了嘛,高速先生就不打算给大家上难度了,整一篇简单但很实用的文章给大伙瞧瞧好了。相信这个标题一出来,尤其对于PCB设计工程师来说,心就立马凉了半截。他们辛辛苦苦进行PCB的过孔设计,高速先生居然说设计多大的过孔他们不关心!另外估计这时候就跳出很多“挑刺”的粉丝了哈,因为翻看很多以往的文章,高速先生都表达了过孔孔径对高速性能的影响是很大的哦!咋滴,今天居然说孔径不关心了?别,别急哈,听高速先生在这篇文章中娓娓道来。首先还是要对各位设计工程师的设计表示肯定,毕竟像我
    一博科技 2025-01-21 16:17 165浏览
  • 飞凌嵌入式基于瑞芯微RK3562系列处理器打造的FET3562J-C全国产核心板,是一款专为工业自动化及消费类电子设备设计的产品,凭借其强大的功能和灵活性,自上市以来得到了各行业客户的广泛关注。本文将详细介绍如何启动并测试RK3562J处理器的MCU,通过实际操作步骤,帮助各位工程师朋友更好地了解这款芯片。1、RK3562J处理器概述RK3562J处理器采用了4*Cortex-A53@1.8GHz+Cortex-M0@200MHz架构。其中,4个Cortex-A53核心作为主要核心,负责处理复杂
    飞凌嵌入式 2025-01-24 11:21 66浏览
  •  万万没想到!科幻电影中的人形机器人,正在一步步走进我们人类的日常生活中来了。1月17日,乐聚将第100台全尺寸人形机器人交付北汽越野车,再次吹响了人形机器人疯狂进厂打工的号角。无独有尔,银河通用机器人作为一家成立不到两年时间的创业公司,在短短一年多时间内推出革命性的第一代产品Galbot G1,这是一款轮式、双臂、身体可折叠的人形机器人,得到了美团战投、经纬创投、IDG资本等众多投资方的认可。作为一家成立仅仅只有两年多时间的企业,智元机器人也把机器人从梦想带进了现实。2024年8月1
    刘旷 2025-01-21 11:15 684浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦