系列文章目录
文章目录
- 系列文章目录
- 前言
- [零、Seq2seq 的诞生](#零、Seq2seq 的诞生)
- [一、Seq2seq 架构](#一、Seq2seq 架构)
-
- [1. 从自编码器到 seq2seq](#1. 从自编码器到 seq2seq)
- [2. Seq2seq 架构](#2. Seq2seq 架构)
- [2.1 整体架构](#2.1 整体架构)
- [5. 应用与泛化](#5. 应用与泛化)
- [6. 从 seq2seq 到注意力机制](#6. 从 seq2seq 到注意力机制)
- 二、注意力机制
-
- [从 RNN 到 Transformer](#从 RNN 到 Transformer)
- [三、深入解析 Transformer](#三、深入解析 Transformer)
- 总结
前言
零、Seq2seq 的诞生
- 使用
RNN和LSTM处理序列数据。这些模型在三类任务中表现出色:
- 多对一(Many-to-One):将整个序列信息压缩成一个特征向量。
- 相同长度的多对多(Many-to-Many, Aligned):为输入序列的每一个词元(Token)都生成一个对应的输出。
- 一对多(One-to-Many):从一个固定的输入(如一张图片、一个类别标签)生成一个可变长度的序列。
-
但在 NLP中,还存在一类更复杂的、被称为不同长度的多对多(Many-to-Many, Unaligned) 的任务,它们的输入序列和输出序列的长度可能不相等,且元素之间没有严格的对齐关系。
-
最典型的例子就是机器翻译。
-
对于这类问题,简单的
RNN或LSTM架构难以胜任. -
2014年,研究者们提出了序列到序列(Sequence-to-Sequence, Seq2Seq) 架构,它成功地将一种通用的编码器-解码器(Encoder-Decoder) 框架应用于序列转换任务。
-
注:Encoder-Decoder框架Sequence-to-Sequence架构、任务RNN、LSTM、Transformer模型
一、Seq2seq 架构
1. 从自编码器到 seq2seq
-
先从自编码器(Autoencoder) 说起,一种无监督神经网络 , 同样使用编码器-解码器思想,但是更基础。
-
自编码器由两个部分组成:
- 编码器: 读取输入数据(如一张图片、一个向量),并将其压缩成一个低维度的、紧凑的潜在表示 Latent Representation 。
- 解码器: 接收这个潜在表示,并尝试将其重构回原始的输入数据。
- 自编码器的训练目标是让输出与输入尽可能地相同。通过这个过程,模型被迫学习到数据中最具代表性的核心特征,并将其编码在潜在表示中。
- 它的目标是数据重构,常被用于降维、特征学习或数据去噪等任务。
2. Seq2seq 架构
Seq2seq 架构借鉴了自编码器的结构,但对其核心目标进行了关键的泛化:它不再要求解码器的输出与编码器的输入相同。
- 它的目标是:生成一个全新的、与输入语义相关的目标序列。
2.1 整体架构
5. 应用与泛化
通过替换不同的编码器和解码器实现,Seq2Seq 架构可以灵活地应用于各种跨模态的转换任务中。
Seq2seq架构的成功也揭示了其背后Encoder-Decoder 框架的强大通用性。这个框架本质上定义了一个 "将一种数据形态转换为另一种数据形态" 的通用范式
- 语音识别(Audio-to-Text):编码器可以是一个处理音频信号的模型(如基于RNN或卷积的模型),提取语音特征并生成上下文向量;解码器则基于此向量生成识别出的文本序列。
- 图像描述生成(Image-to-Text):编码器也可以是一个卷积神经网络(CNN),负责"阅读"整张图片并提取其视觉特征,生成一个概括图片内容的上下文向量;解码器则根据该向量生成一段描述性的文字,实现"看图说话"。
- 文本到语音(Text-to-Speech, TTS):与语音识别相反,编码器处理输入文本,解码器则生成对应的音频波形数据。
- 问答系统(QA):模型可以将一篇参考文章和用户提问一起编码,然后解码生成问题的答案。
- 任务范式统一:甚至传统的分类任务也可以被"生成化"。例如,在文本分类任务中,可以构造一个特殊的输入(即 Prompt),引导模型直接生成类别名称。
6. 从 seq2seq 到注意力机制
尽管基于 Seq2Seq 架构的模型取得了巨大成功,但它也存在一个明显的缺陷------信息瓶颈(Information Bottleneck)。
-
这个问题在概念上与 ·
RNN讨论长距离依赖非常相似,但发生在不同的层面:- 长距离依赖 是
RNN内部的问题,指信息在单一序列处理过程中因梯度累乘而难以从序列开端传递到末端。LSTM 通过门控机制和细胞状态缓解了这个问题。 - 信息瓶颈 则是
Encoder-Decoder架构层面的问题。它与RNN内部如何传递信息无关,而在于它规定了编码器和解码器之间唯一的沟通桥梁就是一个固定长度的上下文向量 C C C。
- 长距离依赖 是
-
编码器必须将输入序列的所有信息,无论其长短,都压缩到这个向量中。可以说,编码器自身的长距离依赖问题,进一步加剧了信息瓶颈的严重性。即便编码器使用了 LSTM,能更好地在内部传递信息,但当输入句子很长时,这个最终的上下文向量 C C C 依然很难承载全部的语义细节,模型可能会"遗忘"掉句子开头的关键信息,导致生成质量下降。
-
++这就好比让一个人将一篇长文的所有细节都总结成一句话,然后仅凭这一句话去复述原文,必然会丢失大量信息。++
-
为了解决这个信息瓶颈和对齐问题,后续引入了注意力机制。
-
允许解码器在生成每个词元时,都能"回头看"并动态地计算一个权重分布,从而重点关注输入序列的不同部分,而不是仅仅依赖于单一的上下文向量。
-
这极大地提升了长序列任务的性能,并直接催生了后来更强大的 Transformer 模型。
二、注意力机制
注意力机制的原理,可以通俗地理解为从"一言以蔽之"到"择其要者而观之"的转变。