Transformer变体与改进
BERT系列
BERT (Bidirectional Encoder Representations from Transformers)
BERT是基于Transformer编码器的双向预训练模型,引入了掩码语言模型(MLM)预训练任务。
主要特点:
- 双向上下文理解
- 掩码语言模型预训练
- 下一句预测任务
- 仅使用编码器架构
使用示例:
from transformers import BertModel, BertTokenizer
model = BertModel.from_pretrained('bert-base-uncased')
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
outputs = model(**inputs)
RoBERTa (Robustly Optimized BERT Pretraining Approach)
RoBERTa是BERT的改进版本,通过优化预训练策略提升性能。
改进点:
- 移除下一句预测任务
- 使用更大的批次大小
- 更长的训练时间
- 动态掩码
DistilBERT
DistilBERT是BERT的轻量化版本,通过知识蒸馏实现模型压缩。
特点:
- 参数量减少40%
- 速度提升60%
- 保留97%的性能
GPT系列
GPT (Generative Pre-trained Transformer)
GPT是基于Transformer解码器的自回归语言模型。
主要特点:
- 自回归生成
- 仅使用解码器
- 因果掩码注意力
- 无监督预训练
使用示例:
from transformers import GPT2LMHeadModel, GPT2Tokenizer
model = GPT2LMHeadModel.from_pretrained('gpt2')
tokenizer = GPT2Tokenizer.from_pretrained('gpt2')
input_ids = tokenizer.encode("Hello", return_tensors='pt')
output = model.generate(input_ids, max_length=50)
GPT-2
GPT-2在GPT基础上扩大了模型规模和训练数据。
改进:
- 更大的模型(1.5B参数)
- 更多训练数据
- 改进的归一化
- 更好的初始化
GPT-3/4
GPT-3/4进一步扩大规模,展现出强大的少样本学习能力。
特点:
- 超大规模参数(175B+)
- In-context learning
- 零样本和少样本学习
- 强大的推理能力
T5系列
T5 (Text-to-Text Transfer Transformer)
T5将所有NLP任务统一为文本到文本的生成任务。
主要特点:
- 文本到文本框架
- 编码器-解码器架构
- 统一的预训练目标
- 多任务学习
使用示例:
from transformers import T5ForConditionalGeneration, T5Tokenizer
model = T5ForConditionalGeneration.from_pretrained('t5-small')
tokenizer = T5Tokenizer.from_pretrained('t5-small')
input_text = "translate English to German: Hello, how are you?"
input_ids = tokenizer(input_text, return_tensors="pt").input_ids
outputs = model.generate(input_ids)
UL2 (Unified Language Learner)
UL2统一了不同的预训练目标,提高模型的泛化能力。
特点:
- 统一的预训练框架
- 多种去噪目标
- 更好的下游任务性能
Vision Transformer (ViT)
ViT
ViT将Transformer架构应用到计算机视觉领域。
主要特点:
- 图像分块处理
- 位置嵌入
- 标准Transformer编码器
- 分类头
使用示例:
from transformers import ViTModel, ViTImageProcessor
model = ViTModel.from_pretrained('google/vit-base-patch16-224')
processor = ViTImageProcessor.from_pretrained('google/vit-base-patch16-224')
# 处理图像
inputs = processor(images=image, return_tensors="pt")
outputs = model(**inputs)
DeiT (Data-efficient Image Transformers)
DeiT通过知识蒸馏提高ViT的数据效率。
改进:
- 蒸馏令牌
- 教师-学生训练
- 更高效的训练
Swin Transformer
Swin Transformer引入了层次化的窗口注意力机制。
特点:
- 移动窗口注意力
- 层次化特征
- 线性计算复杂度
- 适用于密集预测任务
效率优化变体
Longformer
Longformer通过稀疏注意力处理长序列。
主要特点:
- 滑动窗口注意力
- 全局注意力
- 线性复杂度
- 处理长文档
使用示例:
from transformers import LongformerModel, LongformerTokenizer
model = LongformerModel.from_pretrained('allenai/longformer-base-4096')
tokenizer = LongformerTokenizer.from_pretrained('allenai/longformer-base-4096')