文章目录
-
-
- 一、编码器(Encoder)
-
- [1. 核心作用](#1. 核心作用)
- [2. 典型结构(以Transformer为例)](#2. 典型结构(以Transformer为例))
- [3. 应用场景](#3. 应用场景)
- 二、解码器(Decoder)
-
- [1. 核心作用](#1. 核心作用)
- [2. 典型结构(以Transformer为例)](#2. 典型结构(以Transformer为例))
- [3. 应用场景](#3. 应用场景)
- 三、编码器与解码器的协作模式
-
- [**1. 独立架构**](#1. 独立架构)
- [2. 联合架构(Seq2Seq)](#2. 联合架构(Seq2Seq))
- [3. 多模态协作](#3. 多模态协作)
- 四、关键技术对比
- 五、前沿演进方向
- 六、总结
-
在大模型(如Transformer架构的LLM、多模态模型)中,**编码器(Encoder)和解码器(Decoder)**是核心组件,负责将输入数据转化为高层表示并生成目标输出。它们的结构、功能差异及协作方式直接影响模型性能。
一、编码器(Encoder)
1. 核心作用
- 输入表示学习:将原始输入(文本、图像等)转化为高维向量(Embeddings),捕捉语义和上下文信息。
- 特征提取:通过多层神经网络(如Transformer层)逐步抽象出数据的深层特征。
2. 典型结构(以Transformer为例)
python
# 伪代码示例:Transformer编码器层
class EncoderLayer:
def __init__(self):
self.self_attention = MultiHeadAttention() # 自注意力机制
self.feed_forward = FeedForwardNetwork() # 前馈网络
self.norm1, self.norm2 = LayerNorm(), LayerNorm() # 层归一化
def forward(self, x):
# 自注意力 + 残差连接
attn_output = self.self_attention(x, x, x) # Query=Key=Value
x = x + self.norm1(attn_output)
# 前馈网络 + 残差连接
ff_output = self.feed_forward(x)
x = x + self.norm2(ff_output)
return x
- 关键模块 :
- 自注意力机制(Self-Attention):计算输入序列中所有位置的关联权重,捕获长距离依赖。
- 位置编码(Positional Encoding):为序列添加位置信息,解决Transformer的置换不变性问题。
- 层归一化(LayerNorm)和残差连接(Residual Connection):稳定训练过程。
3. 应用场景
- 纯编码器模型 (如BERT、RoBERTa):
- 适用于理解型任务(文本分类、实体识别)。
- 通过掩码语言建模(MLM)预训练,学习双向上下文表示。
- 多模态编码器 (如CLIP的视觉编码器):
- 将图像/文本映射到共享向量空间,支持跨模态检索。
二、解码器(Decoder)
1. 核心作用
- 序列生成:基于编码器输出或历史生成内容,逐步预测下一个token(如文本生成、图像合成)。
- 自回归推理:每一步依赖前一步的输出(如GPT的"逐词生成"模式)。
2. 典型结构(以Transformer为例)
python
# 伪代码示例:Transformer解码器层
class DecoderLayer:
def __init__(self):
self.self_attention = MultiHeadAttention() # 自注意力(掩码)
self.cross_attention = MultiHeadAttention() # 交叉注意力(编码器-解码器)
self.feed_forward = FeedForwardNetwork()
self.norm1, self.norm2, self.norm3 = LayerNorm(), LayerNorm(), LayerNorm()
def forward(self, x, encoder_output):
# 掩码自注意力(防止未来信息泄露)
attn_output = self.self_attention(x, x, x, mask=attention_mask)
x = x + self.norm1(attn_output)
# 编码器-解码器注意力
cross_output = self.cross_attention(x, encoder_output, encoder_output)
x = x + self.norm2(cross_output)
# 前馈网络
x = x + self.norm3(self.feed_forward(x))
return x
- 关键模块 :
- 掩码自注意力(Masked Self-Attention):防止解码时看到未来信息(确保自回归性)。
- 交叉注意力(Cross-Attention):解码器查询编码器输出(用于Seq2Seq任务)。
- 位置编码:与编码器类似,但需处理生成序列的动态扩展。
3. 应用场景
- 纯解码器模型 (如GPT系列):
- 通过自回归生成完成文本续写、代码生成等任务。
- 预训练目标:预测下一个token(因果语言建模)。
- 编码器-解码器模型 (如T5、BART):
- 适用于序列到序列任务(翻译、摘要)。
- 编码器处理输入,解码器生成输出。
三、编码器与解码器的协作模式
1. 独立架构
- 编码器-only(如BERT):仅用于特征提取,需接任务特定头(分类器)。
- 解码器-only(如GPT):直接生成内容,无显式编码器输入。
2. 联合架构(Seq2Seq)
- 工作流程 :
- 编码器将输入序列(如英文句子)编码为上下文向量。
- 解码器基于该向量逐步生成目标序列(如中文翻译)。
- 经典模型:T5、BART、mBART。
3. 多模态协作
- 示例 :图像描述生成(如BLIP模型):
- 视觉编码器(ViT)提取图像特征。
- 文本解码器生成描述文本。
四、关键技术对比
特性 | 编码器 | 解码器 |
---|---|---|
注意力机制 | 自注意力(双向) | 掩码自注意力 + 交叉注意力 |
训练目标 | 重构输入(MLM等) | 预测下一个token(自回归) |
输入/输出 | 固定长度输入 | 可变长度输出生成 |
典型预训练任务 | BERT的掩码语言模型 | GPT的因果语言模型 |
应用场景 | 理解、特征提取 | 生成、推理 |
五、前沿演进方向
- 统一架构 :
- Prefix Decoding(如UniLM):通过控制注意力掩码,使单一模型同时支持编码和解码。
- 高效解码 :
- Speculative Decoding:并行预测多个token加速生成。
- 多模态融合 :
- Flamingo等模型:交替使用图像/文本编码器与解码器,处理跨模态生成。
六、总结
- 编码器是"理解者",擅长从数据中提取抽象特征;
- 解码器是"生成者",擅长基于上下文创造新内容;
- 两者协作可处理复杂任务(如翻译、对话),而独立设计则针对特定场景优化(如GPT纯生成、BERT纯理解)。
现代大模型(如LLaMA、PaLM)常采用解码器-only架构,因其生成能力更适配通用任务,而编码器-解码器架构在需精确对齐输入输出的场景(如翻译)中仍不可替代。