Skip to content

深度学习基础

本页速览 深度学习 = 多层神经网络 + 表征学习。本文从神经元、激活函数讲到前向/反向传播、CNN/RNN/Transformer 架构、损失与训练,给出从零理解深度学习的完整路线,以及它与经典机器学习的选型边界。

深度学习基础 ​

概念定义:让网络自己学特征 ​

深度学习(Deep Learning)是机器学习的子领域,核心是多层神经网络(deep neural network)。它的革命性不在"网络更复杂",而在表征学习(representation learning):经典机器学习需要人手工设计特征,深度网络让模型从原始数据中逐层自动学习特征——浅层学边缘/笔画,中层学部件/短语,深层学对象/语义。

经典 ML:  原始数据 → 人工特征工程 → 浅层模型 → 输出
深度学习: 原始数据 → 多层网络(自动逐层学特征)→ 输出

一个神经元 ​

神经网络的最小单元是神经元(感知机):

z = w·x + b          # 加权求和
a = σ(z)             # 激活函数(引入非线性)

激活函数为什么必要:没有非线性的多层网络,无论多深都等价于一个线性模型(矩阵连乘仍是线性变换)。激活函数是网络"变深有用"的数学前提。

激活函数公式特点
ReLUmax(0, z)默认选择:计算快、缓解梯度消失;缺点:负区间梯度为 0(死亡神经元)
Leaky ReLUmax(0.01z, z)修复 ReLU 死亡问题
GELU平滑 ReLU 变体Transformer 标配(GPT、BERT 均用)
Sigmoid1/(1+e⁻ᶻ)输出 (0,1),适合概率输出;饱和区梯度消失,隐层少用
Tanh双曲正切输出 (-1,1),零中心;隐层可用,深度模型少用
Softmax多类归一化输出层专用,多分类概率

二、多层感知机(MLP):一切的基础 ​

MLP = 输入层 + 若干隐藏层 + 输出层,全连接。前向传播把输入逐层算到输出,**反向传播(Backpropagation)**用链式法则把损失对每层参数的梯度逐层传回,配合梯度下降更新参数(见优化与梯度下降)。

python
import torch
import torch.nn as nn

class MLP(nn.Module):
    def __init__(self, in_dim, hidden_dim, out_dim):
        super().__init__()
        self.net = nn.Sequential(
            nn.Linear(in_dim, hidden_dim),
            nn.ReLU(),
            nn.Linear(hidden_dim, hidden_dim),
            nn.ReLU(),
            nn.Linear(hidden_dim, out_dim)   # 输出层:回归无激活,分类接 softmax
        )
    def forward(self, x):
        return self.net(x)

model = MLP(in_dim=20, hidden_dim=64, out_dim=1)

万能近似定理:足够宽的单隐层网络可以逼近任意连续函数——但"能逼近"不代表"学得到",深层网络的真正价值是用更少的参数、更好的归纳偏置学到复杂函数。这就是为什么"深"比"宽"高效。

三、核心架构家族 ​

CNN:图像与局部结构 ​

卷积神经网络(CNN)利用图像的局部性先验:相邻像素高度相关,用卷积核在图像上滑动提取局部特征,参数共享大幅减少参数量,**池化(pooling)**压缩空间尺寸。

输入图像 → [卷积+ReLU → 池化] × N → 展平 → 全连接 → 输出

CNN 的三大构件:

  • 卷积层:局部感受野 + 参数共享(一个核全图复用);
  • 池化层:下采样(最大池化/平均池化),降维 + 平移不变性;
  • 残差连接(ResNet):输出 = F(x) + x,解决深层网络退化问题,是让网络能到 100+ 层的钥匙。

代表:LeNet(1998)→ AlexNet(2012)→ VGG/GoogLeNet(2014)→ ResNet(2015,超过人类)→ EfficientNet(2019)。详见CNN 与计算机视觉。

RNN/LSTM:序列建模(一度的主角) ​

**循环神经网络(RNN)**按时间步处理序列,隐状态携带历史信息。LSTM 用门控机制(遗忘门/输入门/输出门)解决 RNN 的长期依赖与梯度消失问题,2010 年代统治 NLP 与语音。注意:2020 年代已被 Transformer 全面取代,但理解 RNN 的"序列状态"思想仍是理解序列建模的起点(某些场景如流式语音仍有 LSTM 身影)。

Transformer:注意力机制 ​

2017 年《Attention Is All You Need》提出 Transformer:用**自注意力(Self-Attention)**直接建模序列中任意两位置的依赖,抛弃循环结构,可完全并行:

注意力: Attention(Q, K, V) = softmax(QKᵀ/√d) · V
  • Q(查询)/K(键)/V(值):每个 token 投影出三组向量,注意力权重 = 查询与键的相似度,值按权重加权;
  • 多头注意力:多组投影并行,捕捉不同关系子空间;
  • 位置编码:给并行计算补上"顺序"信息(Transformer 本身无顺序概念)。

Transformer 的贡献是同时解决了长程依赖与并行性——它是 BERT/GPT 及一切大模型的地基,完整展开见Transformer 与 NLP。

四、训练深度网络的完整配方 ​

深度学习的训练可以总结为一张配方表:

环节默认选择说明
数据归一化 + 增强 + 打乱归一化缺失是训练不稳的头号原因
初始化Xavier(sigmoid/tanh)/ He(ReLU)初始化错误导致梯度爆炸/消失
损失分类交叉熵 / 回归 MSE(或 Huber)与任务输出分布匹配
优化器AdamW(Transformer)/ Adam / SGD+Momentum见优化
学习率warmup + 余弦退火,峰值 1e-4~1e-3最重要超参数
正则化Dropout + 权重衰减 + 早停 + 数据增强见正则化
归一化层BatchNorm(CNN 标配)/ LayerNorm(Transformer)稳定训练的关键

归一化层的区别:BatchNorm 沿 batch 维度归一化(依赖 batch size,序列任务不稳);LayerNorm 沿特征维度归一化(与 batch 无关,Transformer 用)。这是工程实践里非常容易踩的坑。

五、深度学习 vs 经典机器学习:选型边界 ​

维度经典 ML(树/线性)深度学习
数据形态表格为主图像/文本/语音/序列为主
数据量需求千~十万级十万~十亿级(可用预训练缓解)
计算资源CPU 足够GPU/TPU
特征人工特征工程自动表征学习
可解释性好(树可打印规则)差(黑箱,需事后解释)
训练时间分钟~小时小时~月(大模型)

表格数据上树模型经常更强——Kaggle 的长期经验(见树模型与集成学习)。深度学习不是"更好的机器学习",而是"另一类问题的解法"。选型的完整决策框架见框架与工具怎么选。

六、迁移学习与大模型范式 ​

深度学习的一个关键工程事实:预训练模型可以直接复用。

  • 迁移学习:用 ImageNet 预训练的 CNN 做特征提取或微调(fine-tune),小数据集也能训出好模型——这是图像领域的事实标准;
  • 预训练 + 微调:BERT/GPT 先在海量语料预训练(学语言),再在任务数据上微调——NLP 的标配范式;
  • 提示/上下文学习:大模型时代进一步"微调都不用了",直接给任务示例(见大语言模型)。

为什么迁移学习有效:底层特征(边缘、笔画、词法)在不同任务间通用,只有高层特征(语义、对象)任务相关——所以"冻结底层 + 微调上层"用小数据也能学到好模型。

七、权衡与取舍 ​

  • 模型容量 vs 数据量:模型参数远多于样本时必过拟合——要么加数据/增强,要么减模型(见正则化);
  • 训练成本 vs 效果:100 亿参数模型的效果增量可能只是 1%——用调参实践与效率手段(混合精度、蒸馏)控制成本;
  • 精度 vs 推理延迟:线上要求毫秒级响应时,用模型压缩(量化、蒸馏、剪枝),见MLOps;
  • 复现 vs 探索:深度学习实验随机性大(初始化、数据顺序),固定随机种子 + 实验管理是团队协作底线。

延伸阅读 ​

参考资料 ​