目录
文章目录
- 目录
- 序列数据
- 序列模型
- [1990 年:RNN(循环神经网络)](#1990 年:RNN(循环神经网络))
-
- 模型结构
- 数学表达
- 训练算法:时间反向传播(BPTT)
- [RNN 的挑战:长期依赖问题](#RNN 的挑战:长期依赖问题)
- [1997 年:LSTM 网络](#1997 年:LSTM 网络)
- [2014 年:GRU(门控循环单元)](#2014 年:GRU(门控循环单元))
- [2017 年:Transformer 架构](#2017 年:Transformer 架构)
序列数据
在 AI 领域,文本翻译、语音识别、股价预测等场景都离不开序列模型和序列数据处理。
序列是数据点或事件的有序列表。与独立的图像或表格数据不同,序列数据中的元素具有内在的顺序和时间依赖性。 典型的例子包括:自然语言文本、语音、视频、股票价格、天气读数或传感器数据等。
传统的 FFN(Feedforward Neural Networks,前馈神经网络)或 CNN(卷积神经网络)在处理这类数据时会遇到根本性的困难,因为它们假设所有输入都是相互独立的,所以无法捕捉到数据点之间的时序关系。比如在处理一个句子时,FNN 会孤立地看待每个单词,从而丢失了至关重要的上下文信息。为了解决这个问题,我们需要一种能够 "记忆过去" 信息的模型,而这正是 RNN 的设计初衷。
相较于 Hopfield Network,虽然它也能 "记忆",但它属于 "联想记忆",而非 "历史记忆",所以并不适用于处理序列数据的场景。
序列模型
Sequence Model(序列模型)是一种用于处理序列数据的深度学习模型,具有 "历史记忆",能够用于解决输入数据为序列形式的各种问题。应用场景包括:
- 自然语言处理(NLP):处理文本序列,单词的顺序决定了句子的含义。如:机器翻译、情感分析、聊天机器人。
- 语音识别:音频转文本。
- 音乐生成:声波是随时间变化的连续信号。
- 视频生成:视频由一系列有序的图像帧组成。
- 时间序列分析:分析按时间顺序排列的数据点序列,如:股票价格、传感器读数、天气预报等,其当前值与历史值密切相关。
序列模型的目标是发现序列数据中的模式和依赖关系,进而进行预测、分类,甚至生成新的序列。现存的序列模型包括:RNN、LSTM、GRU 和 Transformer。

1990 年:RNN(循环神经网络)
1990 年,Jeffrey Elman 发表论文《Finding structure in time(在时间中寻找结构)》提出了 SRN(Simple Recurrent Network,简单循环网络),这是世界上第一个 RNN(Recurrent Neural Networks,循环神经网络)序列模型。它开启了对序列数据和序列模型的研究,开创了模型能够 "记忆历史信息" 的先河。
模型结构
RNN 的核心是让模型 "记住过去"。为了实现这一能力,RNN 模型结构具有以下 3 个关键特性:
- 信息持久化(Information Persistence):RNN 能够在隐藏层(Hidden Layer)节点中存储 "历史记忆",称之为隐藏状态。通过这个状态 RNN 可以在序列处理的过程中传递 "历史记忆",这是 RNN 能够学习到序列元素之间的长距离依赖关系的前提。
- 反馈循环(Feedback Loop):通过在隐藏层的每个节点上添加一个反馈循环连接,使得它在处理序列中的每个元素(如一个词、一个时间点的数据)时,它不仅要考虑当前的输入,还要考虑它从之前所有步骤中计算并保留下来的 "历史记忆"。所以这个状态会随着网络处理输入序列中的每个元素而更新,就像是不断被刷新的 "记忆",但该 "记忆容量" 有限且无法长期保存。
- 捕捉依赖关系(Captures Dependencies):RNN 的目的是捕捉序列数据中随时间分布的依赖关系和模式。但受限于梯度消失,仅能有效学习短距离依赖,无法处理长序列(如超过 10 个时间步)的长期关联。
如下图所示,RNN 和 FFN 结构的主要区别就是 RNN 引入了一个循环结构,RNN 在每个时间步(t)处理一个序列元素时,不仅会接收当前的输入,还会接收来自上一个时间步(t-1)的隐藏状态(Hidden State)。 这个隐藏状态就是 "历史记忆",是 RNN 到目前为止所被处理过的序列数据的一个 "历史记忆"。
可见,每一个隐藏层节点的 "当前记忆" 都由 "当前输入" 和 "历史记忆" 来共同决定的。
注:FNN(Feedforward Neural Network,前馈神经网络)是最基础的神经网络结构之一。其核心特点是:信息只能沿着输入到输出的方向单向传播,不存在循环或反馈连接。也就是说,数据从输入层进入,经过中间的隐藏层逐层处理后,最终由输出层输出结果,层与层之间的连接是 "前馈" 的,没有反向的信息流动。
注:时间步:在序列模型中,时间步是处理序列数据的基本单位。它代表了模型按顺序处理输入数据的一个 "步骤" 或 "瞬间"。

如下图所示,一个 RNN 单元看起来就像是一个环路的人工神经元。对于每个时间步 t,该单元接收当前输入 x_t 和前一时间步的隐藏状态 h_t-1,然后计算出当前时间步的隐藏状态 h_t 和输出 y_t。
再把这个循环的过程可 unfold(展开),就可以看见一个具有时间属性的 "神经元序列",这样更容易理解序列数据是如何在不同的时间步之间进行 "有序" 传递的。

同时,展开后的 RNN 网络看起来像一个很深的 FFN 网络,其中每一层都代表一个时间步,并且所有时间步共享相同的权重矩阵。

数学表达
简单 RNN 的核心计算可以用以下两个公式来描述:
- 隐藏状态的计算:
bash
h_t = f(W_hh * h_t-1 + W_xh * x_t + b_h)
- 输出的计算:
bash
y_t = W_hy * h_t + b_y
其中:
- x_t:在时间步 t 的输入向量,如文本中的词向量。
- h_t, h_t-1:在时间步 h_t 或 t-1 的隐藏状态,即:历史信息,是核心的记忆载体。
- y_t:在时间步 t 的输出。
- W_xh, W_hh, W_hy :分别是输入层到隐藏层、隐藏层到自循环隐藏层、隐藏层到输出层的权重矩阵。作为共享参数,在所有时间步中是共享的。
- W_xh 形状:隐藏层维度 × 输入维度
- W_hh 形状:隐藏层维度 × 隐藏层维度(关键)
- W_hy 形状:输出维度 × 隐藏层维度
- b_h, b_y :分别是隐藏层和输出层的偏置量。
- b_h 形状:隐藏层维度 × 1
- b_y 形状:输出维度 × 1
- f:激活函数
- 隐藏层用 tanh,值缩至 [-1,1]。
- 输出层用 Softmax(分类)或线性激活(回归)
训练算法:时间反向传播(BPTT)
RNN 的训练通过 BPTT(Backpropagation Through Time,时间反向传播)来完成,本质上是标准 BP 反向传播算法在 Unfold 展开后的 RNN 上的具体应用。Loss 损失函数在每个时间步 t 计算,然后将梯度从最后一个时间步开始,沿着时间序列反向传播,并用这些梯度来更新共享的 W_xh, W_hh, W_hy 权重矩阵。

RNN 的挑战:长期依赖问题
尽管 RNN 的设计在理论上能够捕捉任意长度的序列依赖关系,但在实践中,它们很难学习到 "长期依赖"(Long-Term Dependencies)。即:当序列过长时,早期信息的梯度会逐渐消失,导致模型无法记住早期信息,例如:在句子 "I grew up in China...(20 个词后)...so I speak fluent Chinese" 中,RNN 难以关联单词 China 和 Chinese。
长期依赖问题主要源于梯度消失(Vanishing Gradients)和梯度爆炸(Exploding Gradients):
-
梯度消失:1991 年,Sepp Hochreiter 在他的毕业论文中阐述了梯度消失问题,当梯度在稍微深一点的网络中(如超过 10 个时间步)进行反向传播时就会发现训练过程中前面层的参数几乎不更新,即梯度几乎为零,核心的原因是 "累乘衰减"。具体而言,在通过 BPTT 反向传播梯度时,如果激活函数(如 tanh)的导数持续小于 1,那么梯度在每一步传播时都会被乘以一个小于 1 的权重矩阵。经过许多时间步后,梯度会变得非常小,几乎接近于零。这导致网络无法有效地更新与早期时间步相关的权重,从而 "忘记" 了久远的信息。
-
梯度爆炸:相反,如果权重矩阵的值很大,梯度在反向传播过程中可能会指数级增长,导致数值溢出和训练过程的不稳定。 虽然梯度爆炸可以通过梯度裁剪(Gradient Clipping)等技术相对容易地解决,但梯度消失问题则更为棘手。
可见,由于梯度消失问题,RNN 的 "历史记忆" 实际上是短暂的,这限制了它在需要理解长篇文本或分析长期时间序列等任务中的应用。
1997 年:LSTM 网络
1997 年,Sepp Hochreiter 和 Jürgen Schmidhuber 发表了论文《Long Short-Term Memory》提出了 LSTM(长短期记忆网络)。
LSTM 是一种特殊且复杂的 RNN,它通过使用专门的记忆单元和门控机制来序列数据中的长期依赖关系,能够学习到 "何时" 记忆信息、何时遗忘信息以及何时输出信息。解决了 RNN 的梯度消失问题。
模型结构与数学表达
LSTM 的核心思想是随时间选择性地记住或遗忘信息,通过细胞状态的线性传递路径(类似信息高速公路)和门控机制,避免梯度在长序列中衰减,相当于为梯度传递安装了中继器。
如下图所示,LSTM 在模型结构的关键创新是引入了一个 Memory Cell(记忆细胞),并在内部实现了 "输入 => 门控 => 输出" 的控制机制,以此来解决梯度消失的问题。
- 输入:包括当前输入、上一时间步的隐藏状态(Hidden State)、上一时间步的细胞状态(Cell State)。
- 门控:每个 Cell 包含了 "记忆、遗忘、输出" 这 3 个关键的门,它们互相协作共同更新当前时间步的细胞状态(如图最上方连线)。门的本质是一个由 Sigmoid 激活函数和一个点积乘法操作组成的神经网络层。Sigmoid 函数的输出在 0~1 之间,这个值决定了有多少信息可以通过。0 表示 "完全不允许通过",而 1 表示 "完全允许通过"。
- 输出 :包括当前细胞状态和当前输出。

- 遗忘门(Forget Gate):决定应该从细胞状态中丢弃哪些旧信息。它查看 h_t-1 和 x_t,并为 C_t-1 中的每个数字输出一个 0~1 之间的值。这个值代表了保留或遗忘的程度。
bash
f_t = σ(W_f * [h_t-1, x_t] + b_f)
- 输入门(Input Gate):决定哪些新信息应该被存放在细胞状态中。首先 sigmoid 层决定需要更新哪些值。然后 tanh 层创建一个新的候选值向量 C̃_t,该向量可以被添加到细胞状态中。
bash
i_t = σ(W_i * [h_t-1, x_t] + b_i)
C̃_t = tanh(W_c * [h_t-1, x_t] + b_c)
- 细胞状态更新:更新旧的细胞状态 C_t-1 为新的细胞状态 C_t。先将 C_t-1* f_t(要遗忘的旧信息),然后 "+" 加上 i_t * C̃_t(要添加的新信息)。
bash
C_t = f_t * C_t-1 + i_t * C̃_t
- 输出门 (Output Gate):决定细胞要输出什么。首先 sigmoid 层决定细胞状态 C_t 的哪些部分将要输出。然后 C_t 通过 tanh 函数(将其值缩放到 -1~1 之间),并将其与 sigmoid 层的输出相乘,从而只会输出了想要输出的部分。这个输出就是新的隐藏状态 h_t。
bash
o_t = σ(W_o * [h_t-1, x_t] + b_o)
h_t = o_t * tanh(C_t)

解决梯度消失问题
上述过程可知,LSTM Memory Cell 中的门控机制约束了哪些信息是可以遗忘的、哪些信息是可以记住的、哪些信息是可以输出的。
其独特的 Cell State 更新公式 C_t = f_t * C_t-1 + ...,让 C_t 的梯度包含一个 f_t 因子,通过学习,遗忘门可以设置 f_t 为接近 1 的值,从而允许梯度在许多时间步内几乎无衰减地流动,这样就解决了 RNN "累积衰减" 的问题。这种结构使得网络更容易学习和保持长期依赖关系。
RNN v.s LSTM
RNN 作为序列建模的 "基石",以简单的循环结构开创了历史信息复用的思路,但受限于梯度消失无法处理长序列;LSTM 则通过记忆细胞和门控机制的创新,从梯度传递路径上解决了长期依赖问题,成为长序列任务的经典方案。

2014 年:GRU(门控循环单元)
2014 年,Cho 等人提出了 GRU(门控循环单元),是 LSTM 的一个简化版本。它保持了与 LSTM 相当性能的同时,结构更简单,参数更少,计算效率更高。
模型结构和数据表达

GRU 在模型结构上的主要创新在于它将 LSTM 的遗忘门和输入门合并为了一个单一的更新门(Update Gate),并且它还合并了细胞状态和隐藏状态。所以 GRU 只有两个门:
- 更新门(Update Gate):决定了应该在多大程度上保留前一个时间步的信息,以及在多大程度上接收新生成的信息。 它类似于 LSTM 中遗忘门和输入门的组合。
bash
z_t = σ(W_z * [h_t-1, x_t] + b_z)
- 重置门(Reset Gate):决定了在计算新的候选隐藏状态时,应该忽略多少过去的信息。 如果重置门的输出接近 0,那么模型在计算候选状态时将主要依赖于当前输入 x_t。
bash
r_t = σ(W_r * [h_t-1, x_t] + b_r)
- 候选隐藏状态与最终隐藏状态:首先,使用重置门计算一个候选隐藏状态 h̃_t 重置门 r_t 作用于 h_{t-1},控制了前一状态对候选状态的影响。然后,更新门 z_t 在 h_{t-1} 和 h̃_t 之间进行线性插值,以产生最终的隐藏状态 h_t。
bash
h̃_t = tanh(W_h * [r_t * h_t-1, x_t] + b_h)
h_t = (1 - z_t) * h_t-1 + z_t * h̃_t
当 z_t 接近 1 时,新的隐藏状态 h_t 主要由候选状态 h̃_t 构成;当 z_t 接近 0 时,新的隐藏状态 h_t 则几乎完全保留了前一个状态 h_{t-1}。这种机制使得 GRU 也能有效地捕捉长期依赖。
2017 年:Transformer 架构
时至今日,虽然像 Transformer 这样的基于注意力机制的新架构在许多 NLP 任务中(尤其是在处理超长序列时)表现出了更强的性能和更好的并行性,但 RNN、LSTM 和 GRU 仍然是序列建模领域不可或缺的基础工具。 它们在计算效率、对实时流数据的处理以及在某些特定任务上的表现依然具有优势。

2017年,Google Brain发表了Attention is All You Need,提出了Transformer,彻底放弃了传统的循环神经网络(RNN)和卷积神经网络(CNN)结构,转而完全采用注意力机制来执行机器翻译任务。这一创新犹如火星撞地球一般迅速横扫了整个自然语言处理学术界。彻底改变了自然语言处理(NLP)领域。对后续的BERT、GPT等模型产生了深远影响。

Google 的 Vaswani 等人发明了 Transformer 架构。
Transformer 架构基于自注意力机制(Self-Attention),计算输入序列中每个位置的关系权重如下,并行化处理序列数据,取代 RNN 的时序依赖,成为 GPT 和 BERT 等 AI 模型的核心。

OpenAI 团队,基于 Transformer 的生成式预训练(GPT-3.5 架构),使用人类反馈强化学习(RLHF)对齐模型输出与人类价值观,参数量达 1750 亿,支持多轮对话和复杂任务推理。被称为大模型。
2018年6月,OpenAI 发表了Improving Language Understanding by Generative Pre-Training,提出了GPT,这是一个具有里程碑意义的大规模预训练模型。
2018年10月11日,Google AI Language发表了BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding,提出了BERT,GPT 和 BERT,它们分别使用自回归语言建模和自编码语言建模作为预训练目标。所有后续的大规模预训练模型都是这两个模型的变体。

2020年10月22日,Google团队发表An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale,提出了Vision Transformer(ViT),虽然不是第一篇将Transformer应用在视觉任务的论文,但是因为其模型"简单"且效果好,可扩展性强(scalable,模型越大效果越好),成为了transformer在CV领域应用的里程碑著作,也引爆了后续相关研究。
2021年2月26日,OpenAI发表了Learning Transferable Visual Models From Natural Language Supervision,提出了CLIP,通过对比学习方法,将图像与自然语言文本进行配对,实现了多模态学习。具备零样本学习能力。为多模态AI的研究和应用奠定了基础,推动了图像生成、理解和交互等领域的发展。
2021年7月15日和7月22日,Google DeepMind在Natrue分别发表论文Highly accurate protein structure prediction with AlphaFold,Highly accurate protein structure prediction for the human proteome,发布了AlphaFold 2,AlphaFold 2在第十四届国际蛋白质结构预测竞赛(CASP)上取得惊人的准确度,多数预测模型与实验测得的蛋白质结构模型高度一致,引起举世瞩目。对生物医学研究、药物设计和生命科学产生了深远影响。
2022年12月20日,Stability AI发表论文High-Resolution Image Synthesis with Latent Diffusion Models,发布了完全开源的Stable Diffusion,展示了一种利用扩散过程生成图像的方法,是AI绘画领域的一个核心模型,能够进行文生图(txt2img)和图生图(img2img)等图像生成任务。

2022年7月12日,David Holz发布了Midjourney,一个基于生成对抗网络(GANs)和深度学习的AI平台,通过用户提供的文本描述生成高质量图像。
2022年11月30日,OpenAI发布了GPT-3.5,其产品ChatGPT瞬间成为全球爆品。引起了全球学术界和工业界的大语言模型热潮。以ChatGPT为代表的大语言模型向世人展露出了前所未有的能力。一大波大语言、多模态的预训练模型如雨后春笋般迅速出现。
2023年12月1日,Albert Gu和Tri Dao发表了论文Mamba: Linear-Time Sequence Modeling with Selective State Spaces,提出了Mamba,这是一种新的不同于Transformer的处理长序列数据的神经网络架构,能够在保持高效率的同时,提供出色的性能。对于需要处理大量数据的应用场景,如自然语言处理、语音识别和生物信息学等领域,具有重要的实际应用价值。
