AI 概念

发布于 2026-08-19

Encoder - 编码器

Encoder(编码器)是一个功能性角色,负责将输入转换为适合模型后续处理的内部表示。它不是某一种特定算法,其具体结构取决于模型与任务。

核心定义

Encoder(编码器)是负责将一种 输入表示 转换为另一种 内部表示 的模型或模块:

x→Encoderzx \xrightarrow{\text{Encoder}} z

其中:

  • x:输入,如 文本、Token、图像、音频等;
  • z:模型可进一步利用的 Representation(表示),如 Feature(特征)、Hidden State(隐藏状态)、Embedding(嵌入)或 Latent(潜在表示);

Encoder 描述的是一种功能角色,而不是具体算法。

Encoder≠Transformer\text{Encoder} \neq \text{Transformer} Encoder≠CNN\text{Encoder} \neq \text{CNN}

Transformer、CNN 等可以作为 Encoder 的具体实现。

为什么需要 Encoder

原始输入通常不适合模型后续模块直接处理。Encoder 的作用是从输入中提取、组织和转换信息,形成更适合后续任务的表示:

Raw Input(原始输入)
    ↓
  Encoder
    ↓
Representation(表示)
    ↓
Downstream Model(下游模型)

例如:

Text → Text Encoder → Semantic Features(语义特征) 
 
Image → Vision Encoder → Visual Features(视觉特征)
 
Image → VAE Encoder → Latent(潜在表示)

Encoder 最关键的是:

哪些信息应该保留,以及应该以什么形式表示这些信息。

不等于压缩

Encoder 经常伴随降维或压缩,但压缩不是 Encoder 的定义,比如:

降维:Image → VAE Encoder → Compact Latent(紧凑潜在表示)
 
等维:Token Features(词元特征) → Transformer Encoder → Hidden States(隐藏状态)
 
升维:Low-dimensional Input(低维输入) → Encoder → High-dimensional Features(高维特征)

其本质始终是:Representation Transformation(表示转换)。

与 Decoder

经典结构:

Input
  ↓
Encoder
  ↓
Representation
  ↓
Decoder
  ↓
Output

可以粗略理解为:

  • Encoder:输入 → 内部表示
  • Decoder:内部表示 → 目标输出

例如 VAE:

Image
  ↓
VAE Encoder(VAE 编码器)
  ↓
Latent(潜在表示)
  ↓
VAE Decoder(VAE 解码器)
  ↓
Reconstructed Image(重建图像)

与 Embedding

两者不在同一概念层级:

  • Encoder:执行表示转换的模块;
  • Embedding:一种向量表示;

例如 Transformer:

Token IDs
   ↓
Embedding Layer(嵌入层)
   ↓
Token Embeddings(词元嵌入)
   ↓
Transformer Encoder
   ↓
Contextual Hidden States(上下文隐藏状态)

Embedding 可以是 Encoder 的输入、输出或中间表示,不能简单等同于 Encoder。

AI 中的典型 Encoder

BERT

Tokens(词元)
  ↓
Transformer Encoder(Transformer 编码器)
  ↓
Contextual Hidden States(上下文隐藏状态)

CLIP

Image → Image Encoder → Image Representation(图像表示)
Text  → Text Encoder  → Text Representation(文本表示)

Stable Diffusion

Prompt → Text Encoder → Text Conditioning(文本条件)
 
Image → VAE Encoder → Latent(潜在表示)

同样叫 Encoder,但输入、输出、目标以及内部实现都可能完全不同。

判断一个 Encoder

看到 Encoder 时,优先问三个问题:

  1. 输入是什么?
  2. 输出成什么 Representation(表示)?
  3. 这个 Representation(表示)给谁使用?

再进一步判断:

Encoder
├── 输入:Text(文本) / Image(图像) / Audio(音频) / Multimodal(多模态)
├── 输出:Embedding(嵌入) / Feature(特征) / Hidden State(隐藏状态) / Latent(潜在表示)
└── 实现:Transformer(Transformer 模型) / CNN(卷积神经网络) / VAE Network(VAE 网络) / ...

关联概念

Representation(表示)
├── Embedding(嵌入)
├── Feature(特征)
├── Hidden State(隐藏状态)
└── Latent(潜在表示)
 
Encoder(编码器)
├── Text Encoder(文本编码器)
├── Vision Encoder(视觉编码器)
├── Audio Encoder(音频编码器)
└── Multimodal Encoder(多模态编码器)
 
Architecture(架构)
├── Encoder-only(仅编码器)
├── Decoder-only(仅解码器)
└── Encoder–Decoder(编码器–解码器)

一句话记忆:

Encoder 是一个功能角色:将输入转换为适合模型后续处理的内部表示;它定义“做什么”,而不是规定“用什么算法做”。