代表模型:GPT 与 BERT
基于 Transformer 架构,诞生了两种主流的设计哲学,分别以 GPT 和 BERT 为代表。它们在结构和训练方式上的差异,决定了它们各自擅长的任务类型。
GPT (Generative Pre-trained Transformer)
核心思想:GPT 采用的是 Transformer 的解码器 (Decoder) 结构。比喻:它像一个“单向的语言艺术家”,在写下一个词时,只被允许看到前面已经写好的内容。这种自回归(auto-regressive)的方式使得 GPT 极其擅长生成式任务,如写文章、作诗、回答问题等。
GPT 正在预测下一个词...
我
爱
?
↑
注意力只能看到左边的内容
# GPT-like 模型通常使用 Decoder-only 架构
# Hugging Face Transformers 库简化了使用
from transformers import GPT2LMHeadModel, GPT2Tokenizer
tokenizer = GPT2Tokenizer.from_pretrained('gpt2')
model = GPT2LMHeadModel.from_pretrained('gpt2')
prompt = "AI is the new"
inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(**inputs, max_length=10)
# 解码生成的文本
# ...
BERT (Bidirectional Encoder Representations from Transformers)
核心思想:BERT 采用的是 Transformer 的编码器 (Encoder) 结构。比喻:它像一个“双向的阅读理解专家”,为了理解句子中一个词(特别是被遮盖的词)的真正含义,它会同时参考这个词左边和右边的所有上下文信息。这种双向性使得 BERT 极其擅长理解式任务,如文本分类、命名实体识别、问答等。
BERT 正在预测被遮盖的词...
我
[MASK]
中国
↑
注意力可以看到左右两边的内容
# BERT-like 模型通常使用 Encoder-only 架构
from transformers import BertTokenizer, BertForMaskedLM
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertForMaskedLM.from_pretrained('bert-base-uncased')
text = "Paris is the [MASK] of France."
inputs = tokenizer(text, return_tensors='pt')
outputs = model(**inputs)
# 解码被遮盖的词的预测结果
# ...