趋近智
自然语言处理及其他许多方面的重要任务都涉及将一个序列转换为另一个序列。我们称这些为**序列到序列(Seq2Seq)**任务。以机器翻译为例:即将一种语言(例如,英语)的词语序列转换为另一种语言(例如,法语)的词语序列。其他例子包括:
以下是像翻译这样的通用序列到序列任务的视图:
这是一个序列到序列任务的简单示例,它通过一个模型将输入序列("The","cat","sat")映射到输出序列("Le","chat","assis")。
尽管这个概念看起来简单明了,但有效建模这些转换带来了几个重要的难题。
序列的含义通常很大程度上取决于其元素的顺序。“猫追狗”与“狗追猫”的含义完全不同。一个成功的模型不仅要理解单个元素(这里是词语),还要理解它们的位置和周围元素如何影响整体含义。它需要获取序列内的上下文关系。
序列建模中最持续的困难之一是获取长距离依赖。这指的是在序列中理解或预测某个元素时,需要早先出现元素的信息的情况。
考虑以下示例:
"I grew up in a small village in the south of France, near the Pyrenees. Although I moved away many years ago, I still visit often. As a result, I speak fluent French."
为了正确预测末尾的“French”,模型需要将其与几句前提到的“France”联系起来。如果中间文本更长,这种联系会更难保持。模型需要机制来“记住”或获取序列内可能较长距离的相关信息,避免这些信息随时间或位置的稀释或丢失。传统方法在这方面常常遇到问题,因为它们的“记忆”可能有限。
早期处理序列到序列任务的方法通常涉及将整个输入序列总结为一个单一的、固定大小的向量表示(通常称为“上下文向量”或“思维向量”)。然后,这个向量被期望包含来自输入序列的所有必要信息,以便模型开始生成输出序列。
想象一下尝试将整个章节总结成一个短句。你将不可避免地丢失很多细节。类似地,将一个复杂的输入序列,尤其是一个长序列,强制压缩到一个固定大小的向量中,会产生信息瓶颈。模型很难编码所有重要细节,导致性能下降,尤其是在更长或更复杂的序列上。模型可能会忘记输入的早期部分,或者未能获取细微的关系。
序列到序列任务很少涉及相同长度的输入和输出。一种语言的短语可能翻译成另一种语言的更长句子。一篇长文章可能只被总结成几句话。模型架构必须足够灵活以处理这些变化,接收任意长度N的输入并生成任意长度M的输出,其中N和M对于每个示例都可以不同。
这些挑战凸显了对以下架构的需求:能够有效获取序列依赖,处理长距离上下文而不丢失信息,并管理可变序列长度。了解这些难题推动了注意力等机制的进步,它们直接解决了瓶颈问题并改善了依赖关系的处理,为像Transformer这样的模型开辟了道路。在下一节中,我们将简要回顾循环神经网络(RNN),这是一种用于处理序列数据的早期方法,然后检查它们的具体局限性。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造