深度学习核心基础
从梯度下降到 Transformers,用最清晰的方式理解现代深度学习的关键积木。
梯度下降(Gradient Descent)
优化神经网络参数的核心算法
什么是梯度下降?
神经网络的训练本质上是最小化损失函数的过程。梯度下降通过计算损失函数对每个参数的偏导数(梯度),然后沿着梯度的反方向更新参数,使损失逐步减小。
θ:参数,η:学习率,∇θ L:损失函数对参数的梯度
三种常见变体
- 批量梯度下降(BGD):每次用全部数据计算梯度,稳定但慢
- 随机梯度下降(SGD):每次用一个样本,更新快但噪声大
- 小批量梯度下降(Mini-batch):折中方案,现代训练标配
进阶优化器
- Momentum:加入动量,加速收敛、减少震荡
- Adam:自适应学习率 + 动量,目前最常用
- AdamW:Adam + 权重衰减,Transformer 常用
- Lion / Sophia:近年新优化器,更省内存
关键概念:学习率与局部最优
学习率(Learning Rate)
步长太小 → 收敛极慢;步长太大 → 震荡甚至发散。现代实践常用 学习率预热 + 余弦退火。
局部最优 vs 鞍点
高维空间中真正的局部最优很少,更多是鞍点。动量和自适应优化器能帮助跳出平坦区域。
梯度消失 / 爆炸
深层网络中梯度逐层衰减或爆炸。解决方案包括:残差连接、合适的初始化、Normalization、梯度裁剪等。
Normalization 归一化
稳定训练、加速收敛的关键技术
为什么需要归一化?
深层网络中,各层输入分布会随参数更新而剧烈变化(Internal Covariate Shift)。这导致训练不稳定、需要很小的学习率。归一化通过强制激活值保持合理的均值和方差,显著改善了这一问题。
Batch Normalization CNN 常用
在批次维度上计算均值和方差,对每个通道独立归一化。
优点:加速收敛、允许更大学习率、有轻微正则化效果。
缺点:对 batch size 敏感,推理时依赖 running stats。
Layer Normalization Transformer 标配
在特征维度上计算均值和方差,对每个样本独立归一化。
优点:与 batch size 无关,适合 NLP / 变长序列。
缺点:计算量稍大,但在 Transformer 中表现极佳。
其他常见变体
- RMSNorm:只归一化方差(无中心化),更快更稳,LLaMA 等大模型使用
- GroupNorm:将通道分组后归一化,适合小 batch
- InstanceNorm:常用于风格迁移
Transformer 中的 Pre-Norm vs Post-Norm
Post-Norm(原版)
x = LayerNorm(x + Sublayer(x))
训练初期不稳定,需要仔细调参。
Pre-Norm(现代主流)
x = x + Sublayer(LayerNorm(x))
训练更稳定,深层模型更容易收敛。
Transformers 架构
2017 年《Attention Is All You Need》提出,彻底改变了 NLP 乃至整个 AI
核心思想
Transformer 完全抛弃了循环(RNN)和卷积(CNN),只依赖 Self-Attention 机制来建模序列中任意两个位置之间的依赖关系。这带来了两大优势:
- 并行计算能力强(不像 RNN 需要逐步依赖)
- 能直接建模长距离依赖(不受路径长度限制)
整体结构(Encoder-Decoder)
Encoder(编码器)
- 多层堆叠的 Self-Attention + FFN
- 每层都有残差连接 + LayerNorm
- 输出上下文相关的表示
Decoder(解码器)
- Masked Self-Attention(防止看到未来)
- Cross-Attention(关注 Encoder 输出)
- FFN + 残差 + LayerNorm
现代变体
Encoder-only
BERT、RoBERTa
适合理解任务(分类、抽取)
Decoder-only
GPT、LLaMA、Claude
适合生成任务(当今主流)
Encoder-Decoder
T5、BART、原始 Transformer
适合翻译、摘要等
Self-Attention 机制
Transformer 的灵魂
Scaled Dot-Product Attention
对每个位置,计算 Query、Key、Value,然后通过注意力分数加权聚合信息:
√dₖ 是缩放因子,防止点积过大导致 softmax 梯度消失
Multi-Head Attention
将 Q、K、V 投影到多个子空间,分别计算注意力后再拼接。不同 head 可以关注不同方面的关系(语法、语义、位置等)。
位置编码(Positional Encoding)
Attention 本身是置换不变的,需要显式加入位置信息:
- 原始:正弦 / 余弦绝对位置编码
- 现代:RoPE(旋转位置编码)、ALiBi、相对位置编码
计算复杂度与高效变体
标准 Self-Attention 复杂度为 O(n²)(n 为序列长度),长文本时成为瓶颈。因此出现了许多高效注意力:
- FlashAttention:IO 感知,大幅降低显存与时间
- 稀疏注意力 / 局部注意力:只关注邻近或特定位置
- 线性注意力:用核方法近似,复杂度降为 O(n)
- Mamba / State Space Models:彻底跳出 Attention 框架的新架构
知识串联
这些概念如何协同工作
一张图看懂现代大模型训练
前向传播
输入 → Embedding + 位置编码 → 多层 Transformer Block(Pre-Norm + Multi-Head Attention + FFN)→ 输出 logits
计算损失
通常用交叉熵损失(语言模型的 next-token prediction)
反向传播 + 梯度下降
用 AdamW 等优化器,根据梯度更新参数。配合梯度裁剪防止爆炸。
Normalization 全程护航
LayerNorm / RMSNorm 稳定每层激活分布,残差连接保证梯度流畅传播。
推荐学习路径
- 先搞懂梯度下降与反向传播
- 理解为什么需要 Normalization
- 深入 Self-Attention 公式与直观意义
- 动手实现一个简化版 Transformer
- 阅读原论文《Attention Is All You Need》
- 研究 LLaMA / GPT 架构细节
- 了解 FlashAttention、RoPE 等工程优化
- 尝试用 Hugging Face 加载并微调模型