详细摘要 摘要
生成:2025-05-15 22:17摘要详情
- 音频文件
- Stanford CS224N: NLP with Deep Learning | Spring 2024 | Lecture 6 - Sequence to Sequence Models
- 摘要类型
- 详细摘要
- LLM 提供商
- openai
- LLM 模型
- gemini-2.5-pro-exp-03-25
- 已创建
- 2025-05-15 22:17:43
摘要内容
核心摘要 (Executive Summary)
本讲座主要回顾并深化了语言模型和循环神经网络(RNNs)的知识,重点介绍了长短期记忆网络(LSTMs)作为一种先进的RNN形式,用以解决简单RNNs中存在的梯度消失和梯度爆炸问题。讲座详细阐述了LSTMs的内部结构,包括遗忘门、输入门和输出门,以及核心的细胞状态(cell state)和其加性更新机制,这使得LSTMs能够更有效地学习长距离依赖关系。此外,讲座还探讨了RNNs(特别是LSTMs)在词性标注、命名实体识别、句子编码等多种自然语言处理任务中的应用,并介绍了双向RNNs和多层RNNs的结构与优势。最后,讲座将焦点转向机器翻译(MT),回顾了从早期的基于规则和统计的机器翻译(SMT)方法(如基于贝叶斯规则分解为翻译模型和语言模型)到神经机器翻译(NMT)的演进。NMT采用端到端的序列到序列(sequence-to-sequence)模型,通常由编码器(Encoder)和解码器(Decoder)组成(均可采用LSTMs),这一架构显著提升了翻译质量,成为NLP领域深度学习的早期重大成功案例。
语言模型评估与RNN的挑战
语言模型评估:困惑度 (Perplexity)
- 概览:评估语言模型除直接观察生成文本效果外,更严谨的方法是使用困惑度 (Perplexity)。
- 原理:
- 衡量语言模型预测真实文本(未用于训练的评估数据)中词序列的能力。
- 计算方式:对模型预测概率的倒数在整个文本序列上取几何平均值。
- 等价于交叉熵 (cross-entropy) 的指数形式:
Perplexity = exp(cross-entropy)。 - 注意:计算时使用的对数底(如base 2或自然对数e)会影响困惑度数值,比较时需统一标准。
- 历史渊源:Fred Jelinek(IBM)提出困惑度是为了让当时不熟悉信息论的AI研究者更容易理解模型性能,可将其视为模型在每个时间步面临的等效均匀选择数。
- 趋势:更低的困惑度表示更好的模型性能。
- 发展数据:
- 传统n-gram模型(如Interpolated Kneser-Ney smoothing):约 67
- 早期RNN结合其他模型:约 51
- LSTM模型出现后:降至 43,甚至 30。
- 现代大型语言模型:困惑度可达个位数。
RNN的梯度问题:梯度消失与梯度爆炸
- 背景:在RNN中,损失函数通过时间反向传播 (Backpropagation Through Time, BPTT) 以更新权重。
- 梯度消失 (Vanishing Gradients):
- 原因:在反向传播过程中,梯度会连乘多个雅可比矩阵 (Jacobian matrices)(
∂h_k/∂h_{k-1})。如果这些矩阵的特征值(简化理解下,权重矩阵W_h的幂的特征值)小于1,梯度会指数级衰减,导致远离当前时间步的早期信息的梯度信号变得非常小。 - 影响:模型难以学习长距离依赖关系。例如,预测句子末尾的词可能依赖于20个词之前的信息,但由于梯度消失,模型可能只能有效利用约7个词的上下文。
- 讲座中提到一个例子:“When she tried to print her tickets, she found that the printer was out of toner... After installing the toner into the printer, she finally printed her tickets.” 人类可以轻易预测,但RNN可能因梯度消失无法关联远处的"tickets"。
- 原因:在反向传播过程中,梯度会连乘多个雅可比矩阵 (Jacobian matrices)(
- 梯度爆炸 (Exploding Gradients):
- 原因:若权重矩阵的特征值大于1,梯度在反向传播中会指数级增长。
- 影响:导致参数更新过大,可能使模型训练不稳定,甚至出现NaN或infinity值。
- 解决方案:梯度裁剪 (Gradient Clipping)。
- 计算梯度的范数 (norm)。
- 若范数超过预设阈值(如5, 10, 20),则按比例缩小梯度。
- 讲座中称此方法为一种直接但有效的技巧 (“crude hack”)。
- 非线性激活函数的影响:对于tanh等非线性激活函数,讲座指出其饱和特性可能对梯度爆炸有一定帮助,但不能解决梯度消失问题。
长短期记忆网络 (LSTMs)
LSTMs的动机与历史
- 动机:解决简单RNN难以保存长期信息的问题。简单RNN在每个时间步完全重写隐藏状态,难以学习如何“保持”信息。
- 目标:设计一种RNN结构,使其更容易保存和访问长期记忆。
- 命名来源:“Long Short-Term Memory” 指的是扩展简单RNNs有限的“短期记忆”能力,使其能够处理更“长”的依赖。
- 历史发展:
- Hochreiter & Schmidhuber (1997):首次提出LSTM。
- Gers & Schmidhuber (2000):引入了遗忘门 (forget gate),这是现代LSTM的关键组成部分。
- 早期研究未受重视,因当时神经网络处于低谷期。
- Alex Graves (Schmidhuber的学生) 的工作,及其后续与 Jeff Hinton 的合作,将LSTMs带入主流视野。
- Google (约2014-2016年):LSTMs在Google的应用使其成为当时NLP领域的主导模型。
LSTMs的核心结构
- 核心组件:
- 细胞状态 (Cell State,
c_t): LSTM的核心,信息高速公路,信息可以直接流过,只进行少量线性操作。这是解决梯度消失的关键。 - 隐藏状态 (Hidden State,
h_t): 与常规RNN的隐藏状态类似,是当前时间步的输出,并参与下一时间步的计算。 - 门 (Gates):控制信息流入和流出细胞状态以及如何输出到隐藏状态。门控单元通常使用sigmoid激活函数,输出值在0到1之间。
- 遗忘门 (Forget Gate,
f_t): 根据前一时刻的隐藏状态h_{t-1}和当前输入x_t,决定应从前一细胞状态c_{t-1}中保留或遗忘多少信息。f_t = σ(W_f h_{t-1} + U_f x_t + b_f)- 讲座中提及,或可称之为“记忆门 (remember gate)”,因为它决定了保留多少。
- 输入门 (Input Gate,
i_t): 决定将多少新的候选信息~c_t添加到细胞状态中。i_t = σ(W_i h_{t-1} + U_i x_t + b_i)- 候选细胞状态
~c_t = tanh(W_c h_{t-1} + U_c x_t + b_c)
- 输出门 (Output Gate,
o_t): 决定细胞状态c_t中的多少信息将输出到隐藏状态h_t。o_t = σ(W_o h_{t-1} + U_o x_t + b_o)
- 遗忘门 (Forget Gate,
- 细胞状态 (Cell State,
- 状态更新方程:
- 细胞状态更新:
c_t = f_t * c_{t-1} + i_t * ~c_t- 关键点:这里的加法操作 (
+) 是LSTM能够有效传递梯度、避免梯度消失的核心。它使得信息可以更容易地线性传递。
- 关键点:这里的加法操作 (
- 隐藏状态更新:
h_t = o_t * tanh(c_t)
- 细胞状态更新:
- 优势:
- 通过门控机制,LSTM可以学习在不同时间步选择性地读取、写入和遗忘信息。
- 加性的细胞状态更新机制显著缓解了梯度消失问题,使得模型能学习更长的依赖。
- 如果遗忘门设为1(全保留),输入门设为0(不输入新信息),则信息可以在细胞状态中无损传递。
其他解决梯度问题的网络结构
- 讲座简要提及,梯度消失/爆炸问题也存在于非常深的非循环神经网络中。
- 残差网络 (Residual Networks, ResNets):通过“跳跃连接 (skip connections)”将输入直接加到后续层的输出上,使得梯度更容易传播。
- 密集连接网络 (DenseNets):每一层都与所有后续层直接连接。
- 高速公路网络 (Highway Networks):一种门控的残差网络,允许网络学习调节通过跳跃连接的信息量。
RNNs (含LSTMs) 的其他应用
- 词性标注 (Part-of-Speech Tagging)
- 命名实体识别 (Named Entity Recognition, NER)
- 句子编码 (Sentence Encoding):
- 用于情感分类等任务。
- 可使用RNN(如LSTM)处理整个句子,取其最终隐藏状态作为句子表示。
- 实践中,对所有时间步的隐藏状态取平均或element-wise max可能效果更好。
- 条件语言模型 (Conditional Language Models):基于某些输入信息生成文本。
- 语音识别
- 文本摘要
- 机器翻译
双向与多层RNNs
双向RNNs (Bidirectional RNNs)
- 动机:标准RNN的隐藏状态
h_t只编码了到t时刻为止的过去信息。但在很多任务中,理解一个词需要同时考虑其左右上下文。 - 结构:
- 包含一个前向RNN(从左到右处理序列)和一个后向RNN(从右到左处理序列)。
- 在每个时间步
t,将前向RNN的隐藏状态和后向RNN的隐藏状态拼接 (concatenate) 起来,形成该位置的最终表示。
- 优点:能提供更丰富的上下文信息。
- 局限:不适用于需要实时生成文本的语言模型任务,因为生成时无法获取未来信息。
- 现状:在很多分析任务中曾非常流行,但目前很大程度上被Transformer模型取代。
多层RNNs (Multi-layer/Stacked RNNs)
- 动机:增加网络深度,以学习更复杂的特征表示。
- 结构:将多个RNN层堆叠起来,上一层的输出作为下一层的输入。
- 优点:
- 能够进行多层次的特征提取,提升模型能力。
- 通常2-3层的LSTM就能带来显著提升,但层数过多收益递减(这与后来Transformer模型可以构建非常深的结构不同)。
- 应用:在机器翻译等任务中,多层LSTMs被证明是有效的。
机器翻译 (Machine Translation, MT)
传统机器翻译:统计机器翻译 (SMT)
- 历史背景:
- MT是NLP最早的研究方向之一(始于1950年代),最初受冷战时期代码破译的启发。
- 早期基于规则的方法因缺乏语言学知识和计算能力而失败。
- 1990年代-2000年代,统计机器翻译 (SMT) 兴起,依赖大量平行语料库。
- Google Translate早期版本是SMT的代表。
- 核心思想 (SMT):
- 目标:找到概率最大的翻译
P(Y|X),其中X是源语言句子,Y是目标语言句子。 - 使用贝叶斯规则 (Bayes' rule) 分解:
P(Y|X) ∝ P(X|Y) * P(Y)- 翻译模型
P(X|Y):关注词语和短语之间的对应关系,相对简单。 - 语言模型
P(Y):评估目标语言句子的流畅性和合理性,承载了大部分复杂性。
- 翻译模型
- 目标:找到概率最大的翻译
- 挑战:
- 词序差异大。
- 长距离依赖和复杂结构难以处理。
- 讲座以一个中译英的例子(贾雷德·戴蒙德《枪炮、病菌与钢铁》中的句子)说明了SMT系统(包括早期的Google Translate)在处理复杂修饰关系时的不足,例如错误地将“拥有数百万人口的阿兹特克帝国”理解为“数百万人去征服阿兹特克帝国”。
- SMT系统通常包含大量针对特定语言对的复杂规则和“hacks”。
神经机器翻译 (Neural Machine Translation, NMT)
- 突破 (2014年左右):NMT的出现极大地提升了翻译质量。
- 核心架构:序列到序列模型 (Sequence-to-Sequence, Seq2Seq)
- 编码器 (Encoder):一个RNN(通常是LSTM),读取源语言句子,将其编码为一个固定长度的上下文向量(通常是Encoder最后一个时间步的隐藏状态)。
- 解码器 (Decoder):另一个RNN(通常是LSTM,参数与Encoder不同),以上下文向量为初始状态(或输入),逐词生成目标语言句子。解码器的每一步生成都依赖于上下文向量和已生成的部分译文。
- 端到端训练 (End-to-End Training):整个模型(Encoder和Decoder)作为一个大型神经网络进行联合训练,损失函数定义在解码器输出端,梯度反向传播到整个网络。
- 优势:
- 直接建模
P(Y|X)。 - 能够更好地处理词序和长距离依赖。
- 模型结构相对简洁,无需大量人工设计的特征和规则。
- 讲座提及NMT是继语音识别和计算机视觉之后,深度学习在NLP领域的重大成功案例。
- 直接建模
- 影响:
- Google在2016年将其翻译系统切换到NMT,质量提升显著,甚至在官方宣布前用户就已察觉。
- 迅速被各大公司(微软、Facebook、腾讯、百度等)采纳。
- 一个相对简单的NMT系统就能超越经营多年、代码量巨大的复杂SMT系统。
- 实践:大型NMT系统通常使用多层LSTMs作为Encoder和Decoder。
- 训练:需要大规模平行语料库。讲座提及存在无监督NMT的研究,但未展开讨论。
- 通用性:Encoder-Decoder架构不仅用于NMT,也广泛应用于文本摘要、语音转文本等任务。
- 关于编码器是否双向:讲座中讨论到,理论上编码器可以是双向的,且可能更好,但最初Google的著名NMT实现中编码器并非双向。
结论与回顾
- LSTMs因其门控机制和加性细胞状态更新,成为处理序列数据、克服简单RNN梯度问题的强大工具。
- 梯度裁剪是训练RNNs(包括LSTMs)时防止梯度爆炸的实用技巧。
- 双向LSTMs能提供更丰富的上下文信息,适用于编码任务,但不适用于文本生成。
- 多层LSTMs能增强模型表达能力。
- 基于Encoder-Decoder架构的神经机器翻译(NMT)是NLP领域的一项革命性技术,显著提升了翻译质量,并展示了深度学习在复杂NLP任务上的巨大潜力。