Encoder (Transformer) — 编码器

From Systems analysis wiki
Jump to navigation Jump to search

编码器(Encoder)在机器学习和深度学习中是神经网络的一个组件,其主要任务是将输入数据序列(例如文本或图像)转换为一个丰富的数值表示,通常称为隐藏状态(hidden state)、上下文向量(context vector)或嵌入(embedding)。这种表示以一种易于后续处理的形式,捕捉了输入数据的关键特征和语义。

在更广泛的信息论背景下,编码器是指任何将信息从一种格式转换为另一种格式的设备或算法,其目的通常是为了压缩或传输。

概念与目的

在神经网络中,编码器的主要目标是从输入数据中提取有用的特征,并将其“编码”为一个固定长度的密集向量。这个过程可以被看作是一种非线性降维,其中高维、稀疏的输入数据(例如,由 one-hot 向量表示的文本)被转换为一个低维但信息丰富的向量空间(即潜在空间)。

这个编码后的向量可以被用于:

  • 解码器(Decoder)用于生成新的序列(例如,在机器翻译中)。
  • 分类器(Classifier)用于解决分析任务(例如,文本情感分析)。
  • 用于需要理解整个输入上下文的任务。

不同架构中的编码器

自编码器中的编码器

一个经典的例子是自编码器(Autoencoder)架构。它由两部分组成:

  1. 编码器:将输入数据压缩成一个较低维度的隐藏表示(潜在代码)。
  2. 解码器:尝试从这个压缩表示中恢复原始数据。

通过训练网络最小化重构误差,编码器学会了从数据中提取最重要的特征。

循环神经网络(RNN/LSTM)中的编码器

在 Transformer 架构出现之前,序列到序列(seq2seq)任务中的编码器通常基于循环神经网络(RNN)或其改进版本长短期记忆网络(LSTM)构建。

  • 工作原理: RNN 编码器逐个处理输入序列中的词元(token)。在每个时间步,它会更新其隐藏状态,融合当前词元和前一个状态的信息。处理完整个序列后得到的最终隐藏状态,被视为编码了整个输入序列含义的向量。这个向量通常被称为上下文向量或“思想向量”(thought vector)。

Transformer 架构中的编码器

自然语言处理领域的革命性进展与基于 Transformer 架构的编码器的出现密切相关。与 RNN 不同,它并行处理序列中的所有词元。

Transformer 编码器由 N 个相同的层堆叠而成。每一层包含两个主要的子层:

  1. 多头自注意力机制(Multi-Head Self-Attention): 该机制允许输入序列中的每个词元“关注”所有其他词元,并权衡它们对于形成自身上下文表示的重要性。这使得模型能够捕捉词与词之间的复杂依赖关系,无论它们在序列中的位置如何。
  2. 前馈神经网络(Feed-Forward Network): 该网络独立地应用于每个词元的表示,以进行进一步的非线性变换。

Transformer 编码器与 RNN 编码器的关键区别在于,其输出不是单个上下文向量,而是一个上下文相关的向量序列——每个输入词元对应一个向量。每个这样的向量都包含了关于其自身词元在整个序列上下文中的信息。

基于编码器的模型类型

编码器-解码器模型

这是用于序列到序列(seq2seq)任务的经典架构,例如机器翻译或文本摘要。

  • 工作原理: 编码器处理整个输入序列(例如,源语言的句子)。其输出表示随后被传递给解码器,解码器利用这些表示自回归地生成输出序列(目标语言的句子)。解码器通过一种特殊的交叉注意力(cross-attention)机制来“审视”编码器的输出。
  • 示例: 原始 Transformer、T5、BART。

仅编码器模型(Encoder-Only)

这类模型仅使用 Transformer 的编码器堆栈。

  • 工作原理: 它们专为需要深入理解整个输入文本上下文的任务而设计。由于自注意力机制的双向性,它们能为每个词元创建丰富的上下文表示。
  • 应用: 非常适用于自然语言理解(NLU)任务,例如:
    • 文本分类(例如,情感分析)。
    • 命名实体识别(NER)。
    • 问答(Question Answering),其中答案是文本中的一个片段。
  • 示例: BERT 及其衍生模型(如 RoBERTa、ALBERT)。

与解码器的关系

在编码器-解码器架构中,编码器和解码器扮演着互补的角色:

  • 编码器负责理解输入序列。
  • 解码器负责生成输出序列。

连接两者的关键是解码器内部的交叉注意力(cross-attention)机制。在生成的每一步,解码器会基于已生成的输出部分形成一个查询(Query),并用它来“关注”编码器的输出表示(这些表示作为键 Key 和值 Value)。这使得解码器能够专注于输入序列中最相关的部分,以生成下一个词元。

参考文献

  • Hinton, G. E.; Salakhutdinov, R. R. (2006). Reducing the Dimensionality of Data with Neural Networks. Science. DOI:10.1126/science.1127647.
  • Cho, K. et al. (2014). Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation. arXiv:1406.1078.
  • Sutskever, I.; Vinyals, O.; Le, Q. V. (2014). Sequence to Sequence Learning with Neural Networks. arXiv:1409.3215.
  • Bahdanau, D.; Cho, K.; Bengio, Y. (2015). Neural Machine Translation by Jointly Learning to Align and Translate. arXiv:1409.0473.
  • Kingma, D. P.; Welling, M. (2014). Auto-Encoding Variational Bayes. arXiv:1312.6114.
  • Vaswani, A. et al. (2017). Attention Is All You Need. arXiv:1706.03762.
  • Devlin, J. et al. (2019). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv:1810.04805.
  • Dai, Z. et al. (2019). Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context. arXiv:1901.02860.
  • Raffel, C. et al. (2020). Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. arXiv:1910.10683.
  • Brown, T. B. et al. (2020). Language Models Are Few-Shot Learners. arXiv:2005.14165.
  • Dosovitskiy, A. et al. (2020). An Image is Worth 16×16 Words: Transformers for Image Recognition at Scale. arXiv:2010.11929.

参见

  • BERT