神经网络原理¶
反向传播、激活函数、权重初始化、优化器
反向传播¶
- 链式法则递推梯度
- 计算图:前向传播 → 反向传播
- 数值梯度检查(验证实现正确性)
激活函数¶
| 函数 | 公式 | 特点 |
|---|---|---|
| ReLU | max(0, x) | 稀疏激活,Dead ReLU 问题 |
| GELU | x·Φ(x) | 平滑,Transformer 默认 |
| SiLU / Swish | x·σ(x) | 自门控 |
| Tanh | (eˣ-e⁻ˣ)/(eˣ+e⁻ˣ) | 零中心,梯度消失 |
权重初始化¶
- Xavier 初始化 — 适合 Sigmoid/Tanh
- He 初始化 — 适合 ReLU
- Pre-LN vs Post-LN 初始化策略
优化器¶
| 优化器 | 特点 |
|---|---|
| SGD | 基础,+Momentum 加速 |
| Adam | 自适应学习率,最常用 |
| AdamW | Adam + 正确权重衰减 |
| Lion | 新型优化器,更省内存 |
练习¶
- 手推三层网络梯度,用代码实现前向-反向传播
- 用 C++ 实现数值梯度检查
- 对比不同优化器在 CIFAR-10 上的收敛曲线
资源¶
| 资源 | 链接 |
|---|---|
| 3Blue1Brown 神经网络 | https://www.3blue1brown.com/topics/neural-networks |
| Karpathy Zero to Hero | https://karpathy.ai/zero-to-hero.html |