Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 第6章:Transformer与注意力机制

第6章:Transformer与注意力机制

BERT

1. BERT概述

BERT(Bidirectional Encoder Representations from Transformers)是由Google在2018年提出的基于Transformer架构的预训练语言模型。其核心创新在于双向上下文编码,通过联合学习文本的左右上下文信息,显著提升了自然语言处理任务的性能。

2. 核心架构

  • 基础模型:基于Transformer的编码器堆叠(通常为12或24层)。
  • 输入表示:
    • Token Embeddings:将单词或子词(WordPiece)转换为向量。
    • Segment Embeddings:区分句子对(如问答任务中的问题和答案)。
    • Position Embeddings:编码单词的位置信息。
  • 预训练任务:
    • Masked Language Model (MLM):随机遮蔽15%的输入词,预测被遮蔽的词。
    • Next Sentence Prediction (NSP):判断两个句子是否为上下文关系。

3. 关键特性

  • 双向性:与单向模型(如GPT)不同,BERT同时利用左右上下文信息。
  • 迁移学习:通过大规模预训练(如Wikipedia、BookCorpus数据),可微调适配下游任务(分类、问答等)。
  • 上下文敏感:同一词在不同语境下具有动态表示(如“苹果”在水果vs.公司场景中的不同含义)。

4. 变体与改进

  • RoBERTa:优化训练策略(更长时间、更大批次、移除NSP任务)。
  • ALBERT:通过参数共享降低计算开销。
  • DistilBERT:知识蒸馏压缩模型,保留90%性能但体积减小40%。

5. 应用场景

  • 文本分类:情感分析、垃圾邮件检测。
  • 命名实体识别(NER):识别文本中的人名、地点等实体。
  • 问答系统:如SQuAD数据集上的阅读理解任务。
  • 句子相似度计算:语义匹配或 paraphrase 检测。

6. 代码示例(PyTorch)

from transformers import BertTokenizer, BertModel

# 加载预训练模型和分词器
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertModel.from_pretrained('bert-base-uncased')

# 输入处理
inputs = tokenizer("Hello, BERT!", return_tensors="pt")
outputs = model(**inputs)

# 获取最后一层隐藏状态
last_hidden_states = outputs.last_hidden_state

7. 局限性

  • 计算资源需求:预训练需要大量GPU/TPU资源。
  • 长文本处理:受限于Transformer的注意力机制(通常最大512 tokens)。
  • 实时性挑战:大模型推理延迟较高,需优化部署方案。

8. 延伸阅读

  • 原始论文:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
  • Hugging Face Transformers库:文档与示例

---

**注**:如需进一步扩展,可增加以下内容:
1. **与其他模型对比**(如BERT vs. GPT的架构差异)。
2. **微调实战案例**(基于特定数据集的完整流程)。
3. **可视化注意力权重**的工具与方法。
Last Updated:: 5/20/25, 7:33 PM