深度学习核心基础

从梯度下降到 Transformers,用最清晰的方式理解现代深度学习的关键积木。

梯度下降 BatchNorm / LayerNorm Self-Attention Transformer 位置编码
📉

梯度下降(Gradient Descent)

优化神经网络参数的核心算法

什么是梯度下降?

神经网络的训练本质上是最小化损失函数的过程。梯度下降通过计算损失函数对每个参数的偏导数(梯度),然后沿着梯度的反方向更新参数,使损失逐步减小。

θ ← θ − η · ∇θ L(θ)

θ:参数,η:学习率,∇θ L:损失函数对参数的梯度

三种常见变体

  • 批量梯度下降(BGD):每次用全部数据计算梯度,稳定但慢
  • 随机梯度下降(SGD):每次用一个样本,更新快但噪声大
  • 小批量梯度下降(Mini-batch):折中方案,现代训练标配

进阶优化器

  • Momentum:加入动量,加速收敛、减少震荡
  • Adam:自适应学习率 + 动量,目前最常用
  • AdamW:Adam + 权重衰减,Transformer 常用
  • Lion / Sophia:近年新优化器,更省内存

关键概念:学习率与局部最优

学习率(Learning Rate)

步长太小 → 收敛极慢;步长太大 → 震荡甚至发散。现代实践常用 学习率预热 + 余弦退火。

局部最优 vs 鞍点

高维空间中真正的局部最优很少,更多是鞍点。动量和自适应优化器能帮助跳出平坦区域。

梯度消失 / 爆炸

深层网络中梯度逐层衰减或爆炸。解决方案包括:残差连接、合适的初始化、Normalization、梯度裁剪等。

⚖️

Normalization 归一化

稳定训练、加速收敛的关键技术

为什么需要归一化?

深层网络中,各层输入分布会随参数更新而剧烈变化(Internal Covariate Shift)。这导致训练不稳定、需要很小的学习率。归一化通过强制激活值保持合理的均值和方差,显著改善了这一问题。

Batch Normalization CNN 常用

在批次维度上计算均值和方差,对每个通道独立归一化。

x̂ = (x − μ_B) / √(σ²_B + ε)

优点:加速收敛、允许更大学习率、有轻微正则化效果。
缺点:对 batch size 敏感,推理时依赖 running stats。

Layer Normalization Transformer 标配

在特征维度上计算均值和方差,对每个样本独立归一化。

x̂ = (x − μ_L) / √(σ²_L + ε)

优点:与 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,然后通过注意力分数加权聚合信息:

Attention(Q, K, V) = softmax( QKᵀ / √dₖ ) V

√dₖ 是缩放因子,防止点积过大导致 softmax 梯度消失

Multi-Head Attention

将 Q、K、V 投影到多个子空间,分别计算注意力后再拼接。不同 head 可以关注不同方面的关系(语法、语义、位置等)。

MultiHead = Concat(head₁, ..., headₕ) Wᴼ

位置编码(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 加载并微调模型