序列到序列(Sequence-to-Sequence,Seq2Seq)模型是一类深度学习模型,旨在将输入序列转换为输出序列,其中输入序列和输出序列的长度可能不同。这种能力使它们在广泛的任务中异常强大,尤其是在自然语言处理(NLP)领域,但也适用于语音识别等其他领域,甚至某些涉及序列数据的计算机视觉问题。Sutskever 等人的论文"Sequence to Sequence Learning with Neural Networks "和 Cho 等人的论文"Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation"提出了这一核心思想,彻底改变了机器处理变长序列转换的方式。
编码器-解码器结构
大多数 Seq2Seq 模型的基本结构是编码器-解码器结构:
- 编码器:这部分通常使用LSTM(长短期记忆)或GRU(门控 递归 单元)等递归神经网络 (RNN),逐步处理整个输入序列(如法语句子)。其目标是将输入序列中的信息压缩为一个固定大小的内部表示,通常称为 "语境向量 "或 "思维向量"。该向量旨在捕捉输入序列的本质或意义。
- 解码器:这部分采用编码器生成的上下文向量,逐步生成输出序列(如翻译成English的句子)。它通常也是一个 RNN,根据上下文向量和前几步生成的元素,在每个时间步生成一个元素(如单词或字符)。
Bahdanau 等人的论文"通过联合学习对齐和翻译的神经机器翻译"详细介绍了注意力机制,这是对这一基本结构的重大改进。注意力允许解码器在生成输出序列的每个元素时,选择性地关注输入序列的不同部分,而不是仅仅依赖于单一固定大小的上下文向量。这极大地提高了性能,尤其是对于长序列。这一概念为像Transformer 这样的架构铺平了道路,Transformer 完全依赖于注意力机制,完全免除了递归,成为BERT和GPT 等模型的基础。
实际应用
Seq2Seq 模型适用于输入和输出是连续的,但在长度或结构上可能不是一一对应的任务。主要应用包括
- 机器翻译:将文本从一种语言翻译成另一种语言(例如,为Google 翻译或DeepL Translator 等服务提供支持)。这是 Seq2Seq 模型最先取得的重大成就之一。
- 文本摘要:从较长的文档或文章中生成简明摘要。输入是长文本序列,输出是较短的摘要序列。
- 对话式人工智能/聊天机器人:在对话系统中生成回复。输入是用户的询问或陈述,输出是聊天机器人的回复。Google Dialogflow等平台就采用了这种技术。
- 语音识别:将口语音频(音频特征序列)转换为文本(单词序列)。
- 图像字幕:为图像(输入序列,通常表示为CNN 提取的特征)生成文本描述(输出序列)。虽然输入并非严格意义上的序列,但输出生成过程符合 Seq2Seq 范式。
- 代码生成:根据自然语言描述生成编程代码。
主要概念和考虑因素
建立和训练 Seq2Seq 模型涉及几个重要概念:
- 嵌入:在输入编码器之前,输入的单词或词组通常会被转换成密集的向量表示。
- 时间反向传播(BPTT):通过在序列长度上展开网络来训练 RNN 的标准方法。
- 处理长序列:由于存在梯度消失等问题,基本的 RNN 在处理长序列时非常吃力。LSTM 和 GRUs 就是为了缓解这一问题而设计的,而注意力机制则能进一步提高长序列的性能。变换器模型在这方面表现出色。
- 评估指标:根据任务的不同,可使用 BLEU(用于翻译)、ROUGE(用于摘要)或准确率 /F1-分数(用于序列标注)等指标。Ultralytics 为性能指标提供指导。
Seq2Seq 与其他架构的比较
虽然基于 RNN 的 Seq2Seq 模型具有开创性,但该领域也在不断发展:
- 标准 RNN:通常将序列映射到相同长度的序列,或对整个序列进行分类,缺乏编码器-解码器结构的灵活性,无法实现可变的输出长度。
- 变形金刚现在,它主导着许多以前由基于 RNN 的 Seq2Seq 模型处理的 NLP 任务。它们使用自注意和位置编码来代替递归,从而实现了更好的并行化,并能更有效地捕捉远距离依赖关系。在Ultralytics 的支持下,百度的RT-DETR 等模型结合了用于对象检测的 Transformer 组件。
- CNNs主要用于网格状数据,如图像(例如在 Ultralytics YOLO检测和分割模型),但有时也适用于序列任务。
虽然 Seq2Seq 通常指的是基于 RNN 的编码器-解码器结构,但使用中间表示法将输入序列映射到输出序列的一般原理仍然是许多现代架构的核心,包括用于翻译和摘要的转换器。像 PyTorch和 TensorFlow等工具为实现传统和现代序列模型提供了构建模块。使用Ultralytics HUB 等平台可以简化训练过程的管理。