一份适合自学与复习的深度学习笔记,涵盖基础、神经网络、训练技巧及经典架构。
目录
- 什么是深度学习
- 神经网络基础
- 激活函数
- 损失函数与反向传播
- 优化算法
- 正则化与防止过拟合
- 卷积神经网络(CNN)
- 循环神经网络(RNN)与 LSTM
- Transformer 简介
- 训练实用技巧
- 推荐学习资源
1. 什么是深度学习
深度学习是机器学习的一个子集,基于多层神经网络自动从数据中学习层次化特征表示。
- 与传统机器学习区别:特征工程自动化,端到端学习。
- 核心要素:数据、模型架构、损失函数、优化算法。
2. 神经网络基础
神经元模型
一个神经元接收多个输入 (x_1, x_2, ...),加权求和后加偏置,再通过激活函数输出:
[
y = f\left(\sum_i w_i x_i + b\right)
]
前馈神经网络(FNN)
- 输入层 → 隐藏层 → 输出层
- 每层由若干神经元组成,层间全连接。
前向传播
数据从输入层逐层向前计算,得到预测值。
3. 激活函数
引入非线性,使网络能够拟合复杂函数。
| 函数 | 公式 | 优点 | 缺点 |
|---|---|---|---|
| Sigmoid | (\sigma(x) = \frac{1}{1+e^{-x}}) | 输出(0,1),适合二分类输出层 | 梯度饱和,易造成梯度消失 |
| Tanh | (\tanh(x) = \frac{e^x - e{-x}}{ex + e^{-x}}) | 输出(-1,1),零中心 | 仍有梯度饱和问题 |
| ReLU | (\text{ReLU}(x) = \max(0, x)) | 计算快,缓解梯度消失,稀疏激活 | 神经元“死亡”(梯度恒为0) |
| Leaky ReLU | (\max(\alpha x, x)) | 缓解死亡ReLU | 需调α参数 |
| Softmax | (\frac{e^{z_i}}{\sum_j e^{z_j}}) | 输出概率分布 | 仅用于分类输出层 |
4. 损失函数与反向传播
常用损失函数
- 均方误差 (MSE):回归问题,(L = \frac{1}{n}\sum (y - \hat{y})^2)
- 交叉熵损失:分类问题,(L = -\sum y_i \log \hat{y}_i)
反向传播
- 链式法则计算损失对各层参数的梯度。
- 从输出层向输入层逐层计算梯度,更新权重。
核心公式(简化):
(\frac{\partial L}{\partial w} = \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial z} \cdot \frac{\partial z}{\partial w})
5. 优化算法
用于更新模型参数以最小化损失函数。
梯度下降变体
- BGD:批量梯度下降,使用全量数据,稳定但慢。
- SGD:随机梯度下降,单样本更新,快但不稳定。
- Mini-batch GD:小批量,最常用。
自适应优化器
| 优化器 | 特点 | 适用场景 |
|---|---|---|
| Momentum | 加惯性,加速收敛 | 标准SGD改进 |
| AdaGrad | 自适应学习率,梯度平方累积 | 稀疏特征 |
| RMSProp | 指数加权移动平均,修正AdaGrad | 非凸优化 |
| Adam | Momentum + RMSProp,最流行 | 大多数任务默认选择 |
推荐开始就用 Adam,学习率默认 0.001。
6. 正则化与防止过拟合
| 方法 | 原理 |
|---|---|
| L1/L2 正则化 | 损失函数加惩罚项 (\lambda |w|_2^2) 或 (\lambda |w|_1) |
| Dropout | 训练时随机丢弃部分神经元,相当于集成学习 |
| Batch Normalization | 归一化每层输入,加速收敛,有轻微正则效果 |
| 早停 (Early Stopping) | 验证集不改善时停止训练 |
| 数据增强 | 对输入做随机变换(图像翻转、裁剪等) |
7. 卷积神经网络(CNN)
适合处理网格状数据(图像、视频)。
核心层
- 卷积层:使用滤波器(卷积核)提取局部特征,参数共享。
- 池化层:下采样(最大池化、平均池化),降低维度。
- 全连接层:最后用于分类或回归。
经典 CNN 架构
- LeNet-5:手写数字识别。
- AlexNet:引入 ReLU、Dropout、GPU 并行。
- VGG:使用小卷积核(3x3),层次更深。
- ResNet:残差连接解决梯度退化,可训练极深网络。
- Inception / GoogLeNet:多尺度卷积并行。
8. 循环神经网络(RNN)与 LSTM
适合序列数据(文本、时间序列)。
RNN
- 隐藏状态传递历史信息。
- 问题:长期依赖导致的梯度消失/爆炸。
LSTM(长短期记忆网络)
引入门控机制:遗忘门、输入门、输出门,有效解决长期依赖。
GRU
LSTM 的简化版,参数更少,性能相近。
应用:语言模型、机器翻译、情感分析、股票预测。
9. Transformer 简介
当前 NLP 与多模态的主流架构,完全基于注意力机制,抛弃循环。
核心组件
- 自注意力 (Self-Attention):计算序列中每个位置对其他位置的权重,捕捉长距离依赖。
- 多头注意力:多组注意力并行,学习不同子空间信息。
- 位置编码:弥补顺序信息。
- 前馈网络 + 残差 + 层归一化。
经典模型
- BERT:双向编码器,适合自然语言理解。
- GPT:自回归解码器,生成式任务。
- ViT:Transformer 用于图像分类。
10. 训练实用技巧
- 数据预处理:归一化、中心化(均值减法)。
- 权重初始化:Xavier / He 初始化(随激活函数选择)。
- 学习率调度:阶梯下降、余弦退火、Warmup。
- 梯度裁剪:防止梯度爆炸(尤其 RNN)。
- 使用验证集调超参:学习率、batch size、网络深度。
- 监控训练曲线:损失下降慢 → 学习率过小或架构弱;训练好测试差 → 过拟合。
11. 推荐学习资源
- 课程:
- 吴恩达 《Deep Learning Specialization》
- 李沐 《动手学深度学习》
- 书籍:
- 《Deep Learning》(Ian Goodfellow)
- 《动手学深度学习》
- 代码:
- PyTorch 官方教程
- TensorFlow 官方示例
最后一句:深度学习需要理论与实践并重。动手跑代码、调试模型,才能真正理解这些笔记中的每个概念。
本笔记持续更新,欢迎收藏和分享。
