从马尔可夫到RNN:深入理解序列预测的核心演进之路
本文整理自学习笔记,旨在深入探讨序列数据预测的核心问题,并梳理从简单的自回归模型、马尔可夫模型,到更强大的隐变量自回归模型(以RNN为代表)的演进思想。
序言:序列预测的根本挑战
在机器学习领域,我们经常面对序列数据,例如一段文字、一首乐曲的音符、或者一支股票随时间变化的价格。对于这类数据,一个核心的任务就是 预测序列的下一个元素。
用数学语言来描述,假设我们有一个序列 ,我们的目标是建模以下概率分布:
当然,我们可以使用回归模型进行预测。但这个模型的挑战在于,随着时间的推移, 会不断增大,模型的输入序列 会变得越来越长。我们需要一个有效的方法来处理这种可变长度的、可能无限增长的依赖关系。
方法一:目光短浅的“马尔可夫”模型(自回归模型)
一个最直观、最简单的想法是:未来只与最近的过去有关。
我们不必追溯到“宇宙大爆炸”时期的数据来预测下一秒的股价,也许只看最近几分钟或几小时的数据就足够了。这就是著名的 马尔可夫假设(Markov Assumption) 。
基于这个假设,我们将无限长的历史依赖简化为一个固定长度的依赖。我们假设序列的下一个元素 只依赖于它前面的 个元素。
这种模型通常被称为 自回归模型(Autoregressive Model, AR) 。当 时,它就是最简单的 一阶马尔可夫模型。
优点 (Pros):
- 简单高效:模型需要处理的输入维度是固定的 (),这使得我们可以直接使用标准的前馈神经网络(如MLP)进行建模,结构简单,训练直接。
缺点 (Cons):
- 目光短浅,记忆力有限:这种模型无法捕捉长期依赖关系。例如,在处理自然语言时,一句话的结尾可能依赖于句首的某个词。如果这个依赖超出了窗口 的范围,模型就会“遗忘”掉这个关键信息,从而做出错误的预测。
方法二:引入“记忆”的隐变量自回归模型
为了克服自回归模型的“健忘症”,我们需要一种机制来“记住”整个过去的历史信息。但我们又不想让模型的输入无限增长,怎么办呢?
答案是:将所有历史信息压缩成一个固定大小的“摘要”或“记忆” 。
这个“摘要”就是 隐变量(Latent Variable) ,我们通常用 来表示。 包含了从序列开始到当前时刻 的所有关键信息。
这种模型的运作方式如下:
- 记忆更新 (State Update) :在每个时间步 ,模型接收当前输入 和上一时刻的记忆 ,然后将它们整合起来,生成新的记忆 。
- 进行预测 (Prediction) :模型基于当前更新后的记忆 来预测下一个元素 。
这里的 是一个抽象的、由模型自行学习的变量。它就像一个黑匣子,通过复杂的计算和非线性变换,将历史的精髓存储在一个稠密的向量中。
优点 (Pros):
- 拥有记忆:理论上,隐变量 可以捕捉从开始到现在的全部历史信息,从而解决长期依赖问题。
缺点 (Cons):
- 模型复杂,训练困难:如何设计函数 和 ?如何确保 能够有效地“记住”信息并传递下去?这使得模型的设计和训练变得更加复杂。
循环神经网络(RNN):隐变量模型的经典实现
循环神经网络(Recurrent Neural Network, RNN)正是隐变量自回归模型的杰出代表。
方法二可以处理所有的数据并保留记忆,这也就造成了训练困难的问题。
RNN 的核心结构与我们上面描述的隐变量模型完全一致。在 RNN 中:
- 隐变量 就是 RNN 单元的 隐藏状态(Hidden State) 。
- 函数 就是 RNN 单元内部的计算逻辑(通常是一个线性变换加上一个非线性激活函数,如 Tanh)。
RNN 通过一个循环的结构,在每个时间步处理 (当前输入 Xt, 上一时刻隐藏状态 ht-1),并输出 (当前预测, 当前隐藏状态 ht)。这个循环的结构确保了输入序列的长度是固定的。
在这里我们有一个前提假设:平稳性假设。 序列背后的规律是不变的,也就是过去的数据背后的规律是可以预测明天的。
因此,我们的终极目标:拥有一个能预测任何序列的概率模型
马尔可夫模型:以自回归模型为例。在自回归模型中,使用跨度来代替,只要结果近似正确,则满足马尔可夫条件。
时,为一阶马尔可夫模型:
对于离散值有很好的效果,使用条件概率公式和全概率公式可以求得:
这个结果说明:已知一步转移概率可以推导出任意多步概率。
在笔记的推导中,我们看到了一个重要的结论:一个带有状态转移的隐变量模型,理论上可以拟合任意的序列概率分布。
而隐变量模型的核心在于,它假设当前时刻的预测 仅仅依赖于当前的隐藏状态 ,而 又仅仅依赖于上一时刻的隐藏状态 和上一时刻的输入 。通过引入这个隐藏状态作为中介,模型巧妙地将对整个历史的依赖,转化为了对上一时刻状态的依赖。
通过在所有可能的隐藏状态路径上进行求和(或积分),模型可以恢复出原始的、复杂的条件概率。这证明了其强大的表达能力。
PS:
一阶马尔可夫模型是一种最简单的自回归模型。
隐马尔可夫模型是一种经典且具体的隐变量自回归模型:状态之间的转移是通过明确的概率矩阵实现的。
RNN也是隐变量自回归模型:状态之间的转移是通过复杂的矩阵计算和非线性函数实现的,是一种“黑箱”。
总结与展望
让我们回顾一下这次的思维旅程:
- 我们从最基本的 序列预测问题 出发。
- 为了简化问题,我们提出了 自回归模型,它基于 马尔可夫假设,只看固定长度的过去。这很高效,但“记性不好”。
- 为了解决长期依赖问题,我们引入了 隐变量(隐藏状态) 的概念,用一个固定大小的“记忆”来压缩全部历史信息,这催生了 隐变量自回归模型。
- 我们发现,RNN 正是这种思想的完美物理载体,它通过循环更新隐藏状态来保留和传递记忆。
当然,基础的 RNN 自身也存在问题,比如梯度消失和梯度爆炸,这使得它在实践中仍然难以捕捉非常长的依赖。这也正是后续更强大的模型,如 长短期记忆网络(LSTM) 和 门控循环单元(GRU) ,乃至彻底改变序列建模领域的 Transformer 诞生的原因。
但理解从马尔可夫到 RNN 的演进,是踏入现代序列建模世界的关键第一步。
声明: 除特殊注明外,本文中的所有插图均引自阿斯顿·张、扎卡里·C. 利普顿、李沐、亚历山大·J. 斯莫拉所著的《动手学深度学习》一书,并参考了其官方在线版本。强烈推荐读者阅读原著。
官方链接: zh.d2l.ai