马尔可夫链对我来说很有意义,我可以用它们来模拟现实生活问题中的概率状态变化。然后是 HMM。据说 HMM 比 MC 更适合模拟许多问题。然而,人们提到的问题在理解上有些复杂,比如语音处理。所以我的问题是你能描述一个 HMM 比 MC 更适合的“真实而简单”的问题吗?并解释为什么?谢谢
马尔可夫链与 HMM
语音识别并不像你想象的那么复杂。
首先,想象一下创建一个进行文本识别的马尔可夫链 (MC)。您的程序读取一堆(完美,没有错误)文本并计算状态(单词)和状态变化(下一个单词)。听起来你已经搞定了。您现在可以生成文本,或者给定一些文本,使用 MC 的状态和转移概率预测下一个单词。
现在想象一下,您想将 MC 用于语音。您只需让人们阅读与您的 MC 相似的文本,然后您就准备好了,对吧?嗯......除了他们会以不同的方式发音:书面文字说“土豆”的地方,你实际上会听到“po-TAY-toh”和“po-TAH-toh”和“pu-TAY” -to”等。反之亦然:文本“ate”和“eight”代表两种不同的状态,但(通常)发音相同。
您的算法不再看到基本状态(单词),而是看到每个单词发音的概率分布。你原来的 MC 隐藏在发音后面,现在你的模型需要是两层的。
因此,您可以让很多人大声朗读您用于原始训练的文本,您可以获得每个单词的发音分布,然后将您的原始模型与发音模型结合起来,您就有了一个隐马尔可夫模型 (嗯)。
大多数现实世界的问题都是这样的,因为现实世界往往是嘈杂的。您实际上不会知道某物处于什么状态。相反,您将获得每种状态的各种指标:有时针对不同状态的相同指标(“ate”和“eight”),有时针对同一状态的不同指标(“pu-TAY-toe”和“pah-tah-TOE”)。因此,HMM 更适合解决实际问题。
[两个旁注:1)实际的语音识别工作在音素级别,而不是单词级别,2)我相信 HMM 是语音识别的王者,但最近被深度神经网络取代。]
基本上,HMM 是一种马尔可夫模型,其中状态不是完全可观察的,而是只能通过一些嘈杂的观察间接观察到。马尔可夫模型部分是一种在状态中施加时间依赖性的简单方法。相应地,HMM 有用的问题是状态遵循马尔可夫模型的问题,但您不直接观察状态。
您可以使用 HMM 执行各种操作。您可以做的一件有用的事情如下——给定到目前为止的一组嘈杂的观察结果,也许您想知道系统最可能的当前状态是什么。为此,您可以适当地将马尔可夫链结构与观察结果结合起来以推断状态。同样,您可以扩展它以从观察序列中推断出整个状态序列(这是标准的)。
在科学和工程中,这种模型一直被使用。例如,也许您正在录制像c 这样的简单动物的视频。线虫(蠕虫),它只有少数离散的行为状态。从视频中,您想用动物的行为状态标记每一帧。从单帧来看,标记算法有一些错误/噪声。但是,您也可以使用马尔可夫链建模时间相关性......如果在一帧中动物处于一种状态,则下一帧可能处于相同状态(也许某些状态只允许转换到某些其他州)。基本上,通过将嘈杂的单帧观察结果与转换结构(通过 HMM)相结合,您可以获得平滑且更好受约束的状态估计序列。
HMM 是一个混合模型。就像高斯模型的混合。除了马尔可夫链之外,我们使用它的原因是捕获数据模式更复杂。
类似于如果我们使用单个高斯来模拟有争议的变量,或者我们使用混合高斯来模拟连续变量。
我会用一个连续变量来演示这个想法:假设我们有这个数据
最好用 2 个高斯和不同的比例对其进行建模。在离散情况下这是“等价的”:我们构建了一个具有 2 个隐藏状态的 HMM。