Skip to content

预训练模型

预训练模型是先在海量数据上训练,再微调到具体任务。解决”标注数据少”的核心问题。

flowchart LR
A[海量无标注数据] --> B[预训练]
B --> C[基础模型]
C --> D[少量标注数据]
D --> E[微调]
E --> F[下游任务]

训练一个 GPT-4 级别的模型需要数亿美元。但大多数人不需要从头训练——用别人预训练好的模型,在自己的数据上微调即可。

Masked Language Model (MLM):随机遮住 15% 的词,让模型预测:

输入: The [MASK] sat on the mat
预测: cat
from transformers import AutoModelForMaskedLM, AutoTokenizer
model = AutoModelForMaskedLM.from_pretrained("bert-base-uncased")
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
text = "The [MASK] is the capital of France."
inputs = tokenizer(text, return_tensors="pt")
outputs = model(**inputs)
# 找到 [MASK] 位置的预测
mask_idx = (inputs["input_ids"] == tokenizer.mask_token_id).nonzero()[0, 1]
predicted_id = outputs.logits[0, mask_idx].argmax()
print(f"预测: {tokenizer.decode(predicted_id)}") # Paris

Next Token Prediction:给定前文,预测下一个词:

输入: The cat sat on the
预测: mat
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("gpt2")
tokenizer = AutoTokenizer.from_pretrained("gpt2")
text = "The capital of France is"
inputs = tokenizer(text, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=5, do_sample=False)
print(tokenizer.decode(outputs[0]))
# The capital of France is Paris, the capital of
from transformers import AutoModelForSequenceClassification, Trainer, TrainingArguments
# 加载预训练模型,加分类头
model = AutoModelForSequenceClassification.from_pretrained(
"bert-base-uncased", num_labels=3
)
training_args = TrainingArguments(
output_dir="./results",
num_train_epochs=3,
per_device_train_batch_size=8,
learning_rate=2e-5,
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
)
trainer.train()

扩散模型通过逐步去噪生成图像:

from diffusers import StableDiffusionPipeline
pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5")
pipe = pipe.to("cuda")
image = pipe("A cat sitting on a mat, digital art").images[0]
image.save("cat.png")
模型类型参数量用途
BERT编码器110M / 340M分类、NER、问答
GPT-2解码器124M-1.5B文本生成
T5Encoder-Decoder60M-11B翻译、摘要
CLIP双编码器400M图文匹配
Stable Diffusion扩散860M图像生成