隐马尔科夫模型(Hidden Markov Model,HMM),和回归、分类那些处理相互独立的样本数据的模型不同,它用于处理时间序列数据,即样本之间有时间序列关系的数据。从这一点来说,它和卡尔曼滤波算法很像。事实上,HMM和卡尔曼滤波的算法本质是一模一样的,只不过HMM要假设隐藏变量是离散的,而卡尔曼滤波假设隐藏变量是连续的。隐藏变量是HMM里的关键概念之一,可以理解为无法直接观测到的变量,即HMM中Hidden一词的含义;与之相对的是观测变量,即可以直接观测到的变量;HMM的能力在于能够根据给出的观测变量序列,估计对应的隐藏变量序列是什么,并对未来的观测变量做预测。比如语音识别,给你一段音频数据,需要识别出该音频数据对应的文字。这里音频数据就是观测变量,文字就是隐藏变量。我们知道,对单个文字而言,虽然在不同语境下有轻微变音,但大致发音是有统计规律的。当我们说出一句话时,文字与文字之间也是有一些转移规律的。比如,当我们说出“比”这个字时,下一个大概率的字一般是“如”“较”等。虽然文字千千万,但文字与文字之间的转移却是有章可循的。有了文字的发音特征,以及文字与文字之间的转移规律,那么从一段音频中推测出对应的文字也就可以一试了,在当前深度学习一统江湖的时代,已经很少有人还在用HMM做语音识别了。
假设你有一个住得很远的朋友,他每天跟你打电话告诉你他那天做了什么。你的朋友仅仅对三种活动感兴趣:公园散步,购物以及清理房间。他选择做什么事情只凭天气。你对于他所住的地方的天气情况并不了解,但是你知道总的趋势。在他告诉你每天所做的事情基础上,你想要猜测他所在地的天气情况。你认为天气的运行就像一个马尔可夫链.其有两个状态"雨"和"晴",但是你无法直接观察它们,也就是说,它们对于你是隐藏的。每天,你的朋友有一定的概率进行下列活动:"散步", "购物", 或 "清理". 因为你朋友告诉你他的活动,所以这些活动就是你的观察数据。这整个系统就是一个隐马尔可夫模型HMM。同样在计算机中语音识别和翻译之类用的很多,就是说通过你说的话或者提供的句子,这些是可以观察的,通过隐马模型推断出你说的话或者写的句子的实际意义,这个就是隐藏的内容。通过已知推断出未知。