BERT大模型入门:小白也能学会的预训练+微调范式!收藏学习必备

张开发
2026/6/10 5:03:44 15 分钟阅读
BERT大模型入门:小白也能学会的预训练+微调范式!收藏学习必备
BERT作为NLP领域的里程碑首次将双向Transformer表示学习与大规模无监督预训练结合显著提升了NLP任务效果推动大模型时代到来。本文核心介绍了BERT的双向上下文信息学习、Transformer Encoder架构、MLM和NSP预训练任务以及“预训练微调”的范式帮助读者理解BERT内部机制为后续学习GPT、T5等模型打下基础。1、BERT 的核心思想BERT 的全称是 Bidirectional Encoder Representations from Transformers顾名思义它基于 Transformer 的 Encoder 结构利用双向上下文信息来学习文本表示。传统语言模型往往是单向的而 BERT 通过 Masked Language Model (MLM) 的设计实现了同时建模左右语境从而获得了更强大的表示能力。BERT 不是生成模型而是深度的双向语言理解模型。它通过预训练学习到了丰富的语言表示能够理解上下文的语义信息。2、BERT 的网络架构BERT 完全基于 Transformer Encoder 堆叠其主要组成部分包括1. 输入表示由三部分向量相加得到Token Embedding词向量。Segment Embedding区分句子 A 和句子 B。Position Embedding位置编码。输入序列通常以 [CLS] 开头用于分类任务以 [SEP] 分隔句子。2. 多层 Transformer Encoder每层包括 Multi-Head Self-Attention 和 前馈神经网络Feed-Forward Network。Self-Attention 能够捕捉任意位置之间的依赖关系。3. 输出表示[CLS] 的输出向量通常用来做分类任务。其他 token 的向量可用于序列标注、问答、翻译等下游任务。3.预训练任务BERT 的关键创新在于其 预训练目标主要包括两类Masked Language Model (MLM)随机掩盖 15% 的词让模型根据上下文预测它们。不同于传统 LM 单向预测MLM 可以利用完整的双向上下文。Next Sentence Prediction (NSP)输入句子对 (A, B)判断 B 是否是 A 的下一句。旨在增强句子级别的关系建模能力对问答和自然语言推理任务尤为有帮助。4.微调范式BERT 的最大贡献之一是提出了 “预训练 微调” 的范式这种模式极大降低了下游任务的标注需求也让学术界和工业界快速享受到预训练模型的红利。5.代码示例下面我们用 PyTorch 从零搭建核心模块帮助更好的理解 BERT 的内部机制。import torch import torch.nn as nn import math # ---------------------- # 1. Multi-Head Self Attention # ---------------------- classMultiHeadSelfAttention(nn.Module): def__init__(self, hidden_dim, num_heads): super().__init__() assert hidden_dim % num_heads 0, hidden_dim 必须能被 num_heads 整除 self.num_heads num_heads self.head_dim hidden_dim // num_heads self.query nn.Linear(hidden_dim, hidden_dim) self.key nn.Linear(hidden_dim, hidden_dim) self.value nn.Linear(hidden_dim, hidden_dim) self.out nn.Linear(hidden_dim, hidden_dim) defforward(self, x, maskNone): B, L, D x.size() # batch_size, seq_len, hidden_dim # 线性映射 Q self.query(x).view(B, L, self.num_heads, self.head_dim).transpose(1, 2) # [B, heads, L, head_dim] K self.key(x).view(B, L, self.num_heads, self.head_dim).transpose(1, 2) V self.value(x).view(B, L, self.num_heads, self.head_dim).transpose(1, 2) # Scaled Dot-Product Attention scores torch.matmul(Q, K.transpose(-2, -1)) / math.sqrt(self.head_dim) # [B, heads, L, L] if mask isnotNone: scores scores.masked_fill(mask 0, -1e9) attn torch.softmax(scores, dim-1) out torch.matmul(attn, V) # [B, heads, L, head_dim] out out.transpose(1, 2).contiguous().view(B, L, D) # [B, L, hidden_dim] returnself.out(out) # ---------------------- # 2. Transformer Encoder Block # ---------------------- classTransformerBlock(nn.Module): def__init__(self, hidden_dim, num_heads, ff_dim, dropout0.1): super().__init__() self.attn MultiHeadSelfAttention(hidden_dim, num_heads) self.norm1 nn.LayerNorm(hidden_dim) self.norm2 nn.LayerNorm(hidden_dim) self.ff nn.Sequential( nn.Linear(hidden_dim, ff_dim), nn.ReLU(), nn.Linear(ff_dim, hidden_dim) ) self.dropout nn.Dropout(dropout) defforward(self, x, maskNone): # Self-Attention 残差 attn_out self.attn(x, mask) x self.norm1(x self.dropout(attn_out)) # Feed Forward 残差 ff_out self.ff(x) x self.norm2(x self.dropout(ff_out)) return x # ---------------------- # 3. BERT Embeddings # ---------------------- classBERTEmbedding(nn.Module): def__init__(self, vocab_size, hidden_dim, max_len512, dropout0.1): super().__init__() self.token_emb nn.Embedding(vocab_size, hidden_dim) self.pos_emb nn.Embedding(max_len, hidden_dim) self.seg_emb nn.Embedding(2, hidden_dim) # segment A / B self.norm nn.LayerNorm(hidden_dim) self.dropout nn.Dropout(dropout) defforward(self, input_ids, segment_ids): B, L input_ids.size() pos_ids torch.arange(L, deviceinput_ids.device).unsqueeze(0).expand(B, L) x self.token_emb(input_ids) self.pos_emb(pos_ids) self.seg_emb(segment_ids) returnself.dropout(self.norm(x)) # ---------------------- # 4. BERT Model # ---------------------- classBERT(nn.Module): def__init__(self, vocab_size, hidden_dim768, num_heads12, ff_dim3072, num_layers12, max_len512): super().__init__() self.embedding BERTEmbedding(vocab_size, hidden_dim, max_len) self.layers nn.ModuleList([ TransformerBlock(hidden_dim, num_heads, ff_dim) for _ inrange(num_layers) ]) self.cls_head nn.Linear(hidden_dim, vocab_size) # 用于 MLM defforward(self, input_ids, segment_ids, maskNone): x self.embedding(input_ids, segment_ids) for layer inself.layers: x layer(x, mask) logits self.cls_head(x) # MLM 任务输出 return logits # 模拟输入 vocab_size 30522# 与 BERT 一致 model BERT(vocab_size) input_ids torch.randint(0, vocab_size, (2, 10)) # batch_size2, seq_len10 segment_ids torch.zeros_like(input_ids) # 全部属于句子 A logits model(input_ids, segment_ids) print(logits.shape) # [2, 10, vocab_size]输出的 logits 可用于 Masked Language Model (MLM) 任务即预测被 [MASK] 掩盖的词。BERT 的提出最大的三大贡献可以总结成下面三个部分双向 Transformer 表示学习 —— 捕捉更全面的上下文信息。预训练 微调范式 —— 让通用语言模型成为 NLP 的基础设施。广泛适用性 —— 覆盖了几乎所有 NLP 任务。如何学习大模型 AI 由于新岗位的生产效率要优于被取代岗位的生产效率所以实际上整个社会的生产效率是提升的。但是具体到个人只能说是“最先掌握AI的人将会比较晚掌握AI的人有竞争优势”。这句话放在计算机、互联网、移动互联网的开局时期都是一样的道理。我在一线互联网企业工作十余年里指导过不少同行后辈。帮助很多人得到了学习和成长。我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限很多互联网行业朋友无法获得正确的资料得到学习提升故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】为什么要学习大模型我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年人才缺口已超百万凸显培养不足。随着AI技术飞速发展预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。大模型入门到实战全套学习大礼包1、大模型系统化学习路线作为学习AI大模型技术的新手方向至关重要。 正确的学习路线可以为你节省时间少走弯路方向不对努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划带你从零基础入门到精通2、大模型学习书籍文档学习AI大模型离不开书籍文档我精选了一系列大模型技术的书籍和学习文档电子版它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。3、AI大模型最新行业报告2025最新行业报告针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。4、大模型项目实战配套源码学以致用在项目实战中检验和巩固你所学到的知识同时为你找工作就业和职业发展打下坚实的基础。5、大模型大厂面试真题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我精心整理了一份大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。适用人群第一阶段10天初阶应用该阶段让大家对大模型 AI有一个最前沿的认识对大模型 AI 的理解超过 95% 的人可以在相关讨论时发表高级、不跟风、又接地气的见解别人只会和 AI 聊天而你能调教 AI并能用代码将大模型和业务衔接。大模型 AI 能干什么大模型是怎样获得「智能」的用好 AI 的核心心法大模型应用业务架构大模型应用技术架构代码示例向 GPT-3.5 灌入新知识提示工程的意义和核心思想Prompt 典型构成指令调优方法论思维链和思维树Prompt 攻击和防范…第二阶段30天高阶应用该阶段我们正式进入大模型 AI 进阶实战学习学会构造私有知识库扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架抓住最新的技术进展适合 Python 和 JavaScript 程序员。为什么要做 RAG搭建一个简单的 ChatPDF检索的基础概念什么是向量表示Embeddings向量数据库与向量检索基于向量检索的 RAG搭建 RAG 系统的扩展知识混合检索与 RAG-Fusion 简介向量模型本地部署…第三阶段30天模型训练恭喜你如果学到这里你基本可以找到一份大模型 AI相关的工作自己也能训练 GPT 了通过微调训练自己的垂直大模型能独立训练开源多模态大模型掌握更多技术方案。到此为止大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗为什么要做 RAG什么是模型什么是模型训练求解器 损失函数简介小实验2手写一个简单的神经网络并训练它什么是训练/预训练/微调/轻量化微调Transformer结构简介轻量化微调实验数据集的构建…第四阶段20天商业闭环对全球大模型从性能、吞吐量、成本等方面有一定的认知可以在云端和本地等多种环境下部署大模型找到适合自己的项目/创业方向做一名被 AI 武装的产品经理。硬件选型带你了解全球大模型使用国产大模型服务搭建 OpenAI 代理热身基于阿里云 PAI 部署 Stable Diffusion在本地计算机运行大模型大模型的私有化部署基于 vLLM 部署大模型案例如何优雅地在阿里云私有部署开源大模型部署一套开源 LLM 项目内容安全互联网信息服务算法备案…学习是一个过程只要学习就会有挑战。天道酬勤你越努力就会成为越优秀的自己。如果你能在15天内完成所有的任务那你堪称天才。然而如果你能完成 60-70% 的内容你就已经开始具备成为一名大模型 AI 的正确特征了。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

更多文章