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
  • BERT

BERT

概述

BERT(Bidirectional Encoder Representations from Transformers)是由Google在2018年提出的基于Transformer架构的预训练语言模型。其核心创新在于双向上下文建模,通过掩码语言模型(MLM)和下一句预测(NSP)任务进行预训练,显著提升了自然语言处理任务的性能。

核心特点

  1. 双向Transformer结构
    与传统单向语言模型(如GPT)不同,BERT通过同时编码左右上下文信息,实现对文本的深层理解。
  2. 预训练-微调范式
    • 预训练阶段:在大规模无标注语料上训练通用语言表示
    • 微调阶段:通过少量标注数据适配下游任务
  3. 多任务学习
    • 掩码语言模型(MLM):随机遮盖15%的token进行预测
    • 下一句预测(NSP):判断两个句子是否连续

模型架构

配置BERT-BaseBERT-Large
隐藏层维度7681024
Transformer层数1224
注意力头数1216
参数量110M340M

关键技术

  1. WordPiece分词
    解决OOV(Out-of-Vocabulary)问题,将单词拆分为子词单元
    # 示例:"unhappiness" → ["un", "##happi", "##ness"]
    
  2. 位置编码
    通过绝对位置嵌入保留序列顺序信息
  3. 注意力掩码
    处理变长输入时屏蔽填充token的影响

应用场景

  1. 文本分类(情感分析、主题分类)
  2. 命名实体识别(NER)
  3. 问答系统(SQuAD基准)
  4. 文本摘要
  5. 语义相似度计算

变体与改进

  1. RoBERTa:优化训练策略(更大批次/更长训练)
  2. ALBERT:参数共享降低计算量
  3. DistilBERT:知识蒸馏压缩模型
  4. 领域适配版本:
    • BioBERT(生物医学)
    • SciBERT(科学文献)

代码示例(HuggingFace实现)

from transformers import BertTokenizer, BertModel

tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertModel.from_pretrained('bert-base-uncased')

inputs = tokenizer("Hello world!", return_tensors="pt")
outputs = model(**inputs)

性能对比

在GLUE基准测试中的典型表现:

模型准确率(avg)
BERT-Base80.5%
BERT-Large82.5%
人类基线87.1%

局限性

  1. 计算资源消耗大
  2. 对长文本处理效率低(最大512token限制)
  3. 预训练与微调阶段的目标差异

创新启示:BERT的成功证明了大规模预训练+领域微调范式的有效性,推动了"预训练大模型+下游适配"的研究范式变革。


该内容包含技术细节、架构说明、实践指导和前沿发展,可作为教材或技术参考书的完整章节内容。需要扩展时可增加:
1. 具体任务的微调案例
2. 不同变体的架构对比图
3. 训练过程的优化技巧
Last Updated:: 6/17/25, 10:13 AM