训练范式:Causal LM vs Masked LM
GPT 和 BERT 的巨大成功,不仅源于 Transformer 架构本身,更源于它们开创性的“预训练-微调”范式。而它们所采用的预训练任务,正是它们各自能力差异的根源。
因果语言模型 (Causal Language Modeling, CLM)
核心任务:预测下一个词。模型在训练时,只能看到当前词以及它之前的所有词,然后被要求预测下一个最可能出现的词。GPT 系列模型就是这种范式的典型代表。
比喻:它像一个“单向的语言艺术家”,不断地进行“文字接龙”。这种从左到右的单向性使得它天然地适合生成式任务,如写文章、作诗、回答问题等。
训练目标:预测下一个词
我
爱
?
↑
注意力只能看到左边的内容
# Causal LM 的训练数据形式
# 目标是让模型学会:
# P("爱" | "我")
# P("中国" | "我", "爱")
# ...
# 适用于 GPT (Decoder-only) 架构
from transformers import GPT2LMHeadModel
model = GPT2LMHeadModel.from_pretrained('gpt2')
# ... fine-tuning on specific task
掩码语言模型 (Masked Language Modeling, MLM)
核心任务:完形填空。在训练时,句子中会随机遮盖掉(Mask)一些词,模型的任务是根据这个词左右两边的上下文,来预测被遮盖的词是什么。BERT 模型就是这种范式的典型代表。
比喻:它像一个“双向的阅读理解专家”,为了做好完形填空,它必须同时理解前文和后文。这种双向性使得它极其擅长理解式任务,如文本分类、命名实体识别、问答等。
训练目标:预测被遮盖的词
我
[MASK]
中国
↑
注意力可以看到左右两边的内容
# Masked LM 的训练数据形式
# input: "我 [MASK] 中国"
# label: "爱"
# input: "Paris is the [MASK] of France."
# label: "capital"
# 适用于 BERT (Encoder-only) 架构
from transformers import BertForMaskedLM
model = BertForMaskedLM.from_pretrained('bert-base-uncased')
# ... fine-tuning on specific task