上篇:那个隔墙听声的侦探——AI中的隐马尔可夫模型到底是什么,以及它为什么被发明出来
想象一下这样的场景你被关在一间屋子里隔壁房间有一个人在扔硬币。但你看不到那个房间也看不到那个人更看不到硬币。你唯一能做的就是竖起耳朵听——每隔一段时间你能听到一个声音“叮”或者“当”。“叮……叮……当……叮……当……当……”你听了很久发现了一些规律有时候“叮”会连着出现好几次有时候“当”会连续出现。但你始终不知道隔壁到底在干什么。后来你猜出来了隔壁可能有两枚硬币一枚是正常的正反面概率各半一枚是做了手脚的正面概率90%。那个人会偷偷地在两枚硬币之间切换但切换也有规律——比如大概率继续用同一枚小概率换另一枚。你虽然看不见他在用哪枚硬币但你听到的那一串“叮”和“当”其实就是这两枚硬币交替“表演”出来的结果。你做的这件事就是隐马尔可夫模型在做的事。先说清楚它到底是个什么东西?隐马尔可夫模型名字听着吓人拆开看就明白了模型一种对现实世界的简化描述。马尔可夫一个俄国数学家他发现了一种规律——下一时刻的状态只跟当前状态有关跟更早的历史无关。这叫“马尔可夫性”。翻译成人话就是明天天气怎么样只取决于今天跟昨天、前天没关系。虽然现实没这么简单但很多情况下这个假设够用。隐隐藏的、看不见的。合起来就是有一个你看不见的“状态”在按照马尔可夫规律变化这个状态每走一步就会对外产生一个你能看见的“观测值”。你要做的就是从这一串观测值里反推出那个隐藏状态的变化过程。这套东西有三个核心要素隐藏状态你真正关心但看不见的东西。比如隔壁在用的那枚硬币正常币还是作弊币、说话的人心里想说的那个词、患者真实的健康状态。观测值你能看到的东西。比如你听到的“叮”和“当”、麦克风录到的声音、病人的症状表现。状态转移隐藏状态怎么变化。比如从正常币切换到作弊币的概率是多少、从健康变成生病的概率是多少。隐马尔可夫模型要解决的就是从看得见的东西里推理出看不见的东西。它为什么会出现——三个绕不开的难题隐马尔可夫模型的诞生不是数学家凭空想出来的而是被三类实际问题逼出来的。第一个原因你关心的东西往往看不见在现实世界里我们真正关心的东西常常是“藏起来”的。你想知道一个人心里想说的是什么词——但你能看到的只有他的嘴唇动作或者声音波形。你想知道一个病人的真实健康状况——但你能看到的只有体温、血压这些表面指标。你想知道股票市场背后真正的“趋势”是什么——但你能看到的只有每天的价格波动。这些“隐藏状态”才是你真正想知道的但你不能直接测量它。你只能通过它产生的“观测值”来推测。隐马尔可夫模型就是为这种场景量身定做的——它给你一个数学框架让你能从观测值里反推出隐藏状态。第二个原因事情有前后顺序不能孤立地看前面聊过的很多机器学习模型都假设数据是“独立同分布”的——每一张图片、每一个用户、每一条记录之间没有关系。但在很多场景里顺序本身就是信息。一段语音里前一个字会影响后一个字怎么发音。一句文字里前一个词是动词后一个词是名词的概率就高。一段DNA序列里碱基的排列顺序决定了它的功能。如果你把“今天晴”和“明天雨”当成两个独立的事件来处理你就丢掉了“天气是连续变化”这个重要信息。隐马尔可夫模型专门处理这种“时序数据”——它知道前一个状态会影响到后一个状态所以它不是孤立地判断每一刻而是在一整条序列上做推理。第三个原因你要做的不只是“判断”而是“解码”传统分类问题问的是“这张图片是猫还是狗”答案是一个孤立的标签。但有些问题问的是“这段语音对应的是哪一句话”这不是一个孤立的判断而是一整串决策。每个时间点上都有一个隐藏状态而且这些状态之间互相约束——你不可能上一秒说“我”下一秒就蹦出一个完全不搭边的词。隐马尔可夫模型提供的不是“单点预测”而是“整条路径的最优推断”。它能在一堆可能的状态序列里找出最可能产生你看到的那串观测值的那一条。这个过程叫做“解码”是隐马尔可夫模型最核心的能力。它跟别的模型到底什么关系用一个对比来帮你定位分类模型比如决策树给你一个样本给你一个标签。样本之间没关系。聚类模型给你一堆样本帮你分成几堆。也不管顺序。循环神经网络RNN也能处理序列但它用神经网络来学是个“黑箱”。隐马尔可夫模型专门处理序列而且每一步都讲得清道理——状态转移概率是多少、观测概率是多少全是数字可解释性强。隐马尔可夫模型比深度学习早了几十年但至今没被淘汰原因就在于它结构清晰、参数有意义、计算高效。在数据量不大、需要可解释性、或者资源受限的场景里它依然是首选。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2469997.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!