三大经典模型学习笔记
AI 三大经典模型学习笔记
——BERT · 深度强化学习 · 扩散模型
(参考:李沐、王树森、李宏毅课程)
1. BERT 模型实战(李沐)
1.1 背景与核心思想
概览与动机
-
BERT(Bidirectional Encoder Representations from Transformers)是用大量未标注语料通过自监督学习预训练出通用语言表示的模型。
-
目标:学习上下文敏感的词向量,使得同一单词在不同上下文有不同表示(contextualized embedding)。学习通用的语言表示(contextualized word embeddings),可在下游多种 NLP 任务上微调。
-
关键工程:基于 Transformer Encoder(多层堆叠),通过大规模自监督预训练获得参数,然后以较小代价做下游微调(fine-tune)。
1.2 Transformer 在 NLP 中的应用(核心结构回顾)
-
Transformer Encoder 每一层主要组件:
- 多头自注意力(Multi-head Self-Attention)
- 前馈网络(Position-wise Feed-Forward):两层全连接 + 激活(如 GELU)
- 残差连接 + 层归一化(LayerNorm)
-
符号:给定输入序列矩阵 $$X \in \mathbb{R}^{n \times d}$$(n 为 token 数,d 为隐藏维度)。
-
Self-attention(单头)计算:
其中 $$Q = XW^Q,\quad K = XW^K,\quad V = XW^V$$。
- 多头注意力:
- 前馈网络:
1.3 BERT 的预训练任务(MLM、NSP)与损失
BERT 的网络结构
- 基本单元:Transformer Encoder 堆叠 LLL 层(常见:BERT-Base:12 层,隐藏维度 768,12 个 heads;BERT-Large:24 层,隐藏维度 1024,16 个 heads)。
- 输入表示:将三类向量相加(token embedding + position embedding + segment embedding)。
- segment embedding(也称 token type):用于区分句子 A / B(NSP)。
- special token [CLS](序列级别表示),[SEP] 用于分割句子。
预训练任务(核心)
- 掩码语言模型(MLM):随机掩盖输入中部分 tokens(通常 15%),模型基于上下文预测被掩盖的 token。
- 标注策略示例:在被选的 15% token 中,80% 替换为 [MASK],10% 替换为随机 token,10% 保持原 token。
- MLM 损失:
其中 $$\mathcal{M}$$ 是被掩码位置集合。
- 下一句预测(NSP):给定两段句子 A、B,目标判断 B 是否为 A 的下一句。
- 输入格式:$$[CLS] ; \text{A tokens} ; [SEP] ; \text{B tokens} ; [SEP]$$
- NSP 损失(二元交叉熵):
- 总体预训练损失:
通常 $$\lambda = 1$$。
1.4 BERT 是双向的 —— 为什么?
经典自回归 LM(如 GPT)只能在预测 时看到 (左到右),或右到左。BERT 使用 MLM,让模型在预测位置同时“看到”左、右上下文,因此是条件于双向上下文的表示学习(严格来说,MLM 并非直接建模 $ P(w_t | w_{<t}, w_{>t}) $ 的分布,但训练目标等价于让表示能够基于左右文重构中心词——实现双向)。
注意:不是直接看到真实 token 的双向信息(那样会作弊),而是通过掩码训练间接学到双向表示。
1.5 预训练与微调(Fine-tuning)——关系与流程
-
预训练:在大规模未标注语料上自监督训练得到通用参数(捕捉语言统计、语法、语义信息)。适合通用表示学习。
微调:在标注数据(下游任务)上继续训练整个模型或部分层,使模型适应任务目标。通常做法:
在 BERT 顶部加少量任务特定层(classification head, span prediction head, token classification head 等)。
使用较小学习率(如 -5 到 -5),训练若干 epoch(2–4 epoch 常见)。
使用适当的序列长度和 batch size(批次要足够大或使用梯度累积)。
1.6 微调示例任务详解
-
文本分类(单文本 / 对文本)
输入:单句
([CLS], tokens, [SEP])或句对([CLS], A, [SEP], B, [SEP])。head:取
[CLS]的最后一层隐藏向量 ,通过一个线性层 + Softmax:损失:交叉熵。
超参建议:batch 16/32,lr -5 到 -5,epochs 2–4,warmup 比例 0.06,weight decay 0.01。
问答(SQuAD 风格 span prediction)
输入:
[CLS] question [SEP] context [SEP]。head:两个线性层分别预测 start 和 end 的 logits(对每个 token),即对序列长度 LLL 输出两个向量:
其中 是 BERT 最后一层的 token 表示。
损失:start 与 end 的交叉熵之和(独立计算)。
注意:要处理 long context(windowing、sliding window),以及答案跨段问题。
命名实体识别(NER,序列标注)
输入:序列(通常 wordpiece 导致 token 与原词对齐问题需做映射)。
head:对每个 token 的表示做线性 + Softmax,预测 BIO 标签。
损失:逐 token 的交叉熵(可掩码 padding)。
注意:当使用 WordPiece 时,常把一个词的第一个 subtoken 的标签用于训练/评估。
1.7 为什么 BERT 可以“一模多用”?
- 在大语料上预训练可获得通用语义/句法知识;Transformer 强表达能力使其输出表示可直接被多种下游任务使用,仅需小量 task-specific 层即可适配。
1.8 实践技巧 & 常见工程问题
- 预训练与 vocab mismatch:使用同一 tokenizer;domain-adaptive pretraining(继续在领域语料上训练)。
- 长文本处理:sliding window、Longformer 等。
- 微调稳定性:small lr、warmup、AdamW、weight decay、梯度裁剪。
- 模型压缩:蒸馏(DistilBERT)、量化、剪枝。
1.9 检测题(答案)
-
BERT 的核心预训练任务是什么?
主任务是 掩码语言模型(MLM):随机掩盖一部分 token,训练模型预测这些 token,利用双侧上下文。辅助任务是 下一句预测(NSP):判断两句是否相邻。实际上一些变体(RoBERTa)去掉 NSP,改为其它句间任务或更大数据量训练。
2.为什么 BERT 被称为双向模型?
因为 MLM 训练过程中,同一位置的预测利用了其左侧和右侧的上下文信息,模型的 attention 机制允许直接访问序列两侧信息,从而学习到双向依赖的表示。
3.BERT 预训练和微调的关系是什么?
预训练是在大规模未标注语料上学习一般语言知识(通用表示)。微调是在任务标注数据上对预训练模型进行有监督 fine-tune,使模型适配特定任务。两者的关系是“先通用学习,再专门适配”——经典迁移学习流程。
4.BERT 微调流程(分类、问答、命名实体识别)
分类:[CLS] 输出 → Linear → Softmax。微调整个模型或只 top 层。
问答(span):sequence 输出 → 两个 Linear(start, end logits)→ Softmax over tokens。需要滑窗处理 long context。
NER:token-level linear + Softmax,对 subtoken 做对齐处理(通常用第一个 subtoken 表示整个词)。
5.为什么 BERT 可以应用到很多不同的下游任务?
因为预训练学到的表示包含丰富的语法和语义信息(词义、句法依赖、句子关系等),这些信息是许多下游任务的共同基础。通过在顶部添加少量任务特定层并微调,模型即可高效迁移。
2.1 强化学习基本框架与目标
RL 研究智能体在环境中基于交互(state, action, reward)学习策略以最大化累计回报。深度强化学习(Deep RL)是用深度网络来表示策略、价值函数或环境动态。
基本概念(形式化)
-
马尔可夫决策过程(MDP):
- 状态空间 ,动作空间 。
- 转移概率 。
- 即时奖励函数 (或 )。
- 折扣因子。
-
策略 (确定性策略或随机策略)。
-
目标:
2.2 值函数、优势函数与 Bellman 方程
- 状态价值:
- 动作价值:
- 优势:
- Bellman 最优方程:
2.3 经典算法:Q-learning、SARSA、DQN
Q-learning(离线、值迭代)
- 目标:学习最优 Q 函数:
优点:理论保证(在足够探索、学习率衰减条件下)收敛到 。
SARSA(在策略上)
- 更新用的是下一个状态实际采取的动作:
SARSA 更“保守”(考虑当前策略的实际行为),在风险环境中更稳定(例如存在随机陷阱)。
DQN(Deep Q-Network)
-
用神经网络 近似 Q 值。
-
关键技巧:
经验回放(Replay Buffer):打破时间相关性,随机采样 mini-batches。
目标网络(Target Network):周期性或软更新 来稳定目标。
DQN 损失:
2.4 策略梯度与 Actor-Critic
-
策略梯度定理:
目标直接对策略参数 做梯度上升:
- 策略梯度方法(REINFORCE):
Actor-Critic(结合策略与价值)
Actor:参数化策略 。
Critic:估计值函数ϕ(s) 或 。
Actor 更新使用 advantage( 或 )降低方差,Critic 用 TD error 更新。
通用性强、样本效率高。
Actor 更新:$$\nabla_\theta \log \pi_\theta(a_t|s_t) \hat{A}_t$$。
2.5 进阶算法:PPO、A3C
PPO(Proximal Policy Optimization)
-
目标限制策略更新幅度的近端方法,有两种常见形式:clip 版本和 KL 正则化版本。
Clip 版本损失:
其中 。
- 为什么稳定?因为它阻止每次更新时概率比率 偏离过多,从而防止策略崩溃。
A3C(Asynchronous Advantage Actor-Critic)
多线程异步:多个 actor 并行采样环境并更新全局网络,减少样本相关性,提高训练速度。
优点:高效并行,收敛速度快;但现代实现更多用同步多环境(vectorized envs)替代异步实现。
2.6 实践技巧
- 稳定性:reward normalization、梯度裁剪、熵正则化。
- 提高样本效率:优先经验回放、模型基方法(world models)、离线 RL。
- 并行与分布式训练:多 actor 多 learner 架构。
- 常用调参项:学习率、gamma、目标网更新频率、回放 buffer 大小等。
2.7 检测题(答案)
-
强化学习的目标是什么?
学习一个策略 来最大化期望累计回报:。换言之,让智能体在长期内获得尽可能多的奖励。
-
DQN 和 Q-learning 的区别是什么?
Q-learning 是表格/函数逼近形式的值迭代算法(使用显式 Q 表时)。DQN 将 Q 函数用深度网络 Qθ(s,a)Q_\theta(s,a)Qθ(s,a) 表示,并引入经验回放与目标网络以稳定训练,是 Q-learning 的深度版本。
-
为什么 PPO 在实际中比 REINFORCE 更稳定?
REINFORCE 是无偏但高方差的策略梯度方法,直接更新策略可能导致大波动。PPO 通过对策略更新进行裁剪或约束(clip 或 KL penalty),限制了单步更新幅度,从而降低策略崩溃风险、提高稳定性。
-
A3C 的优势是什么?
A3C 使用多线程异步采样并更新全局参数:提升样本多样性、缩短收敛时间、避免死循环探索。相比单线程,其效率与鲁棒性更好。
3. 扩散模型(李宏毅)
3.1 基本思想
扩散模型通过定义一个逐步**加噪(forward)**的过程将数据分布 转换成接近高斯噪声的分布;然后训练一个去噪网络学习逆向(reverse)过程,从噪声逐步重构数据样本 。
3.2 前向扩散过程
- 时间步 ,定义一系列噪声强度 (小而递增)。
- 前向过程定义:
- 由马尔可夫链递推至任意 :
其中 $$\alpha_t=1-\beta_t,\quad \bar{\alpha}t=\prod{s=1}^t\alpha_s$$。
3.3 反向过程与训练目标
-
反向条件分布(真实的):
-
但该分布依赖 。扩散模型拟合参数化逆过程::
- 训练目标是最小化 KL divergence(variational lower bound, VLB),简化后常用噪声预测损失:
其中 $$x_t=\sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t},\epsilon$$。
常用做法:训练一个 U-Net 风格网络 来预测输入 中的噪声 。
3.4 为什么比 GAN 更稳定?
GAN 依赖对抗训练(生成器 vs 判别器),容易出现训练不稳定、模式崩溃(mode collapse)、梯度不可靠等问题。
扩散模型的训练目标是明确的(最小化均方误差 / VLB),是监督回归式的训练,不存在对抗过程,优化更稳定且有理论上的似然估计意义(approximate maximum likelihood)。
3.5训练与采样流程
- 训练:
- 从数据集中采样 。
- 随机采样时间步 (均匀或按分布)。
- 采样 ,构造 。
- 计算预测噪声 ,最小化 MSE。
- 采样(生成):
- 从纯噪声 开始。
- 反向迭代 :采样(常取均值并加采样噪声)。
- 输出 。
扩散模型 检测题详
-
扩散模型的基本思想是什么?
通过正向的逐步加噪过程将数据变为噪声,再训练一个去噪网络学习逆过程,从噪声逐步重构数据样本。实质是学习一组条件概率 来近似真实反向过程。
-
为什么扩散模型比 GAN 更稳定?
扩散模型的训练是回归式的、基于明确的似然/ELBO 目标,不涉及对抗优化,因此避免了生成器/判别器之间的博弈不稳定性和模式崩塌问题。
-
扩散模型生成一张图片需要哪些步骤?
从高斯噪声采样 ,对 依次采样 (或用确定性近似),最终得到 。
-
扩散模型在训练时主要学的是什么?
学会预测噪声()或直接预测无噪声图像/predicted mean,从而逼近反向扩散的条件分布;训练目标通常是最小化噪声预测 MSE(等价近似 ELBO 的一项)。