前几讲中介绍概率图模型都没有涉及“时间”尺度,模型所表示的都是同一时刻下的状态,因而不能建模随机变量的动态特性。如果要定义系统在时间尺度上的演化,就需要引入系统状态(system state)的概念,每一时刻的系统状态都是表示系统属性的随机变量。

将图模型中的结点用表示时间流动的有向边连接起来,得到的是动态贝叶斯网络(dynamic Bayesian nework),其最简单的实现是隐马尔可夫模型(hidden Markov model)。

隐马尔可夫模型实现的是序列化的建模,它打破了对数据独立同分布的固有假设,侧重于时序上的依赖关系。在自然语言和金融市场数据这类时间序列(time series)中,某个数据往往会受到之前数据的影响,这种情况下还要强行套用独立同分布假设的话,肯定不会符合实际情况。隐马尔可夫模型正是将过去对现在的影响纳入模型中,以此来实现更加准确的预测。

隐马尔可夫模型则是通过隐藏状态生成观测序列的马尔可夫过程。在更简单的马尔可夫链(Markov chain)里,所有状态是都直接可见的,因此状态转移概率是唯一的参数。而在隐马尔可夫模型中,状态本身不是直接可见的,可见的是取决于状态的输出。由于每个状态都有和输出相关的概率分布,因而隐马尔可夫模型的输出就能够提供关于隐藏状态的信息。

隐马尔可夫模型可以通过下面这个例子来直观地描述,这个例子来自维基百科,是匈牙利数学家乔治·波利亚(George Polya)所提出的罐子问题(urn problem)的变种。

罐子问题表示的隐马尔可夫模型(图片来自维基百科)

上图给出了这个例子的图示:一个观察者不能靠近的房间里有 3 个罐子 X1,X2,X3X1,X2,X3