BERT、ELMo 与 GPT:三类预训练语言模型的差异

发布时间:2026/8/18 13:06:03
BERT、ELMo 与 GPT:三类预训练语言模型的差异 BERT、ELMo 与 GPT三类预训练语言模型的差异ELMo、BERT 和 GPT 都在解决“词义依赖上下文”的问题但它们使用的编码结构、训练目标和擅长任务并不相同。理解这种差异比记住模型发布时间更有价值。## 1. 静态词向量的局限传统 Word2Vec、GloVe 等词向量为一个词固定分配一个向量。“苹果”无论出现在水果、公司还是产品上下文中初始表示都相同。上下文语言模型通过观察相邻词为同一个词生成随句子变化的表示从而缓解多义词问题。## 2. ELMo双向语言模型表示ELMo 基于双向 LSTM前向语言模型读取左侧上下文后向语言模型读取右侧上下文再将不同层的表示组合为词向量。它的贡献在于证明了预训练得到的上下文词表示可以迁移到下游任务。但 LSTM 仍按顺序处理 token长距离依赖和并行训练效率受到限制。ELMo 更适合作为理解预训练演进过程的节点。## 3. BERT双向 Encoder 与掩码预测BERT 使用 Transformer Encoder通过自注意力在一个层内连接整段输入。预训练的核心任务是 Masked Language Model随机遮住部分 token让模型根据双向上下文恢复它们。原始 BERT 还引入了 Next Sentence Prediction 用于句对关系学习。实际使用中BERT 通常在其输出后接分类、序列标注或检索相关任务头再根据任务规模选择冻结或微调。text输入 token 位置编码 segment 编码- 多层 Transformer Encoder- token 表示 / [CLS] 句表示- 下游任务头## 4. GPT因果语言模型与自回归生成GPT 使用 Transformer Decoder 风格的因果自注意力。第 t 个位置只能访问自己和左侧历史 token因此训练目标是预测下一个 tokentextP(x) P(x1) * P(x2 | x1) * ... * P(xt | x1...x(t-1))这种约束与生成时“根据已有文本续写”的过程天然一致适合对话、续写、摘要和代码生成等生成任务。它不直接同时读取右侧上下文因此和 BERT 的建模重点不同。## 5. 三者对比| 维度 | ELMo | BERT | GPT || — | — | — | — || 主体结构 | 双向 LSTM | Transformer Encoder | Transformer Decoder || 上下文方式 | 前后向 LSTM 拼接 | 双向自注意力 | 左到右因果注意力 || 典型预训练目标 | 双向语言模型 | MLM原始版本含 NSP | Next Token Prediction || 更擅长的任务 | 特征增强 | 分类、匹配、抽取 | 文本与代码生成 |表格给出的是典型特征不代表模型只能完成某一种任务。最终选型仍要看数据规模、时延、部署成本和评价指标。## 6. BERT 中容易混淆的几个点### MLM 不是把所有词都替换成[MASK]若预训练中所有被选 token 都替换成[MASK]而下游使用时从不出现这个符号会产生训练与使用不一致。经典 BERT 采用以[MASK]为主、少量替换或保持原词的策略来缓解这个问题。### 双向不等于能直接自回归生成BERT 能看到左右文适合填空和理解但标准 BERT 不是为逐 token 左到右生成设计的。需要生成时通常选择 Decoder-only 或 Encoder-Decoder 架构。### 长文本需要额外策略标准自注意力计算量随序列长度平方增长。超长文档任务常见做法是分块、滑窗、层次化聚合或选择长上下文模型而不是简单无限增大max_length。## 总结ELMo 展示了上下文词表示的价值BERT 强化了双向理解能力GPT 则将自回归生成扩展为通用接口。先确认任务是理解、匹配还是生成再选择对应的预训练范式能避免很多模型选型上的误解。