09 深度学习 — 学习指南
学习理念:深度学习 = 机器学习的"升级版"。2012 年 AlexNet 用 GPU 碾压传统算法之后,"深度学习"就取代了"传统机器学习"成为 AI 的主流范式。 08 教你理解"模型在学什么",09 教你理解"神经网络是怎么学的"——这两个加在一起,就是现代 AI(包括 ChatGPT)的底层逻辑。
本节 AI 替代率:~87% | 人工干预率:~13%
| 角色 | 能力范围 |
|---|---|
| 🤖 AI 擅长 | 实现 PyTorch 模型、自动微分、训练循环、调优超参数 |
| 👤 人类需理解 | 激活函数为什么选 ReLU、Adam 比 SGD 好在哪里、CNN 的卷积核在干什么 |
📌 AI 演进定位:2012~2018 的"深度学习黄金时代"
学习路径
神经网络基础 → 训练原理 → 优化方法 → PyTorch → CNN → RNN
① 🟢 激活函数(ReLU/Softmax — 至今仍在用)
② 🟡 损失函数 & 梯度下降(训练的核心机制)
③ 🟠 反向传播(理解即可,PyTorch 自动帮你算了)
④ 🟡 优化器(Adam / SGD — 微调 LoRA 也要选)
⑤ 🟢 PyTorch 入门(后续所有项目的基础框架)
⑥ 🟡 CNN 卷积神经网络(多模态模型的基础)
⑦ 🔴 RNN 循环神经网络(已被 Transformer 替代,科普了解)重要性颜色说明
| 颜色 | 含义 | 与 LLM 时代的关系 |
|---|---|---|
| 🟢 绿色 | 至今仍在广泛使用 | 理解它对理解现代 AI 直接有帮助 |
| 🟡 黄色 | 思想仍有用,具体实现已变化 | 思维框架沿用,但具体机制被简化/自动化 |
| 🟠 橙色 | 需要了解但不常用 | 只在某些特定场景出现 |
| 🔴 红色 | 已被替代或极少使用 | 了解概念即可,不花时间深究 |
一、🟢 激活函数(至今仍在用)
给程序员的比喻:激活函数就像代码中的三元运算符——不符合条件的值直接归零或归一,让信息"通"或"不通"。
激活函数的作用:给神经网络引入非线性。没有激活函数,再多层神经网络本质上只是一次线性变换。
中英对照
| English | 中文 | 本质 |
|---|---|---|
| Activation Function | 激活函数 | 决定神经元是否"激活"的开关 |
| ReLU | 线性整流单元 | 负数归零,正数保留 |
| Sigmoid | S 型函数 | 把任意实数压缩到 0~1 之间 |
| Softmax | 归一化指数 | 把向量变成概率分布 |
# ReLU — 最常用的激活函数
# f(x) = max(0, x)
# 负数直接砍掉,正数保留原样
# 优点:计算简单、梯度不衰减
# Sigmoid — 早期使用的激活函数
# f(x) = 1 / (1 + e^(-x))
# 输出在 0~1 之间
# 缺点:两端的梯度接近 0,导致"梯度消失"
# Softmax — 多分类的输出层
# 把模型的原始输出变成概率,所有概率和为 1| 激活函数 | 现代 AI 中还在用吗? | 原因 |
|---|---|---|
| ReLU | ✅ GPT 每一层都在用 | 简单、高效、梯度不衰减 |
| Softmax | ✅ GPT 生成 token 的核心 | 概率输出的唯一选择 |
| Sigmoid / Tanh | ❌ 已被 ReLU 替代 | 梯度消失问题严重 |
在 LLM 中的对应:GPT 的 FFN(前馈神经网络)层的核心就是 ReLU 或它的变体 GELU。没有激活函数,Transformer 的多层结构就退化成了一次线性变换。
二、🟡 损失函数 & 梯度下降(训练的核心)
给程序员的比喻:
- 损失函数 = CI/CD 流水线的测试通过率,越低越好
- 梯度 = Git bisect,找到"是哪次提交让通过率变差了"的方向
- 梯度下降 = 每次提交代码后看测试结果,往"让通过率变好"的方向改代码
常用损失函数
| 损失函数 | 适用场景 | 本质 | 在 LLM 中 |
|---|---|---|---|
| 均方误差 MSE | 回归问题 | 预测值 vs 真实值的距离平方 | —— |
| 交叉熵 Cross-Entropy | 分类问题 | 预测概率分布 vs 真实分布的差异 | ✅ GPT 的训练目标 |
# 交叉熵的核心公式理解:
# 如果真实答案是"猫",模型输出"猫"的概率是 0.9 → 损失小
# 如果模型输出"猫"的概率是 0.1 → 损失大
# GPT 训练时,就是在最小化"预测下一个词"的交叉熵损失给程序员的进一步比喻:交叉熵就像一个自动判卷系统——
- 标准答案唯一(one-hot)
- 预测和标准答案越接近,扣分越少
- 预测和标准答案差异越大,扣分指数级增长(不是线性扣分)
三、🟠 反向传播(理解即可)
给程序员的比喻:反向传播 = Git 的 blame 功能 + 自动回滚——
- 你做了一次提交(前向传播),测试挂了(损失变大)
- Git blame 找出是谁改的代码(反向传播算梯度)
- 自动回滚到正确的版本(更新参数)
但重要的是:PyTorch / TensorFlow 已经自动帮你做了反向传播,你不需要手写。
# PyTorch 自动微分——你只需写前向传播
loss = loss_fn(model(x), y)
loss.backward() # 反向传播,自动计算所有参数的梯度
optimizer.step() # 更新参数
# 这就是你训练任何模型时见到的 3 行固定代码| 学习深度 | 建议 |
|---|---|
| 🟢 了解概念 | 知道反向传播是"算梯度"的就好 |
| 🟡 面试准备 | 理解计算图 + 链式法则 |
| 🔴 手写实现 | ❌ 不要花时间,框架替你做了 |
四、🟡 优化器(Adam / SGD — 微调也要选)
给程序员的比喻:优化器 = 你调 API 参数时的调参策略——
- SGD = 每次固定调一个小步长,不看历史调整方向
- Momentum = 像皮球下山,有惯性,不会卡在小坑里
- Adam = Momentum + 自适应学习率,大部分情况下的默认选择
| 优化器 | 还在用吗? | 说明 |
|---|---|---|
| SGD(带动量) | ⚠️ 有些场景还在用 | 泛化性能好,训练时间长 |
| Adam | ✅ 最常用 | 自适应学习率,收敛快,LoRA 微调的默认选择 |
| AdamW | ✅ LLM 训练首选 | Adam + 权重衰减解耦,GPT 训练用的就是这个 |
# LoRA 微调时你也会看到这行代码
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-4)五、🟢 PyTorch 入门(后续项目的基础框架)
给程序员的比喻:PyTorch = 用 Python 写代码,但数据在 GPU 上算。 你不需要操心内存管理、并行计算——框架替你做了。
核心概念
| 概念 | 本质 |
|---|---|
| Tensor | 在 GPU 上跑的 numpy.ndarray |
| 自动微分 | 自动计算梯度,不用手写反向传播 |
| nn.Module | 定义神经网络的基类 |
| DataLoader | 批量加载数据的工具 |
PyTorch 完整训练流程
import torch
import torch.nn as nn
# 1. 定义模型
class MyModel(nn.Module):
def __init__(self):
super().__init__()
self.fc = nn.Linear(784, 10) # 全连接层
def forward(self, x):
return self.fc(x)
model = MyModel()
# 2. 定义损失函数和优化器
loss_fn = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
# 3. 训练循环(所有 PyTorch 项目都长这样)
for epoch in range(10):
for batch_x, batch_y in dataloader:
pred = model(batch_x) # 前向传播
loss = loss_fn(pred, batch_y) # 算损失
optimizer.zero_grad() # 清空梯度
loss.backward() # 反向传播
optimizer.step() # 更新参数重点:上面这段代码的骨架,在后续所有 PyTorch 项目中(CNN、RNN、Transformer)都是一样的。只换模型结构,不变训练流程。
六、🟡 CNN 卷积神经网络(多模态的基础)
给程序员的比喻:卷积核 = 在图片上滑动的"特征检测器"——
- 一个卷积核检测"边缘",另一个检测"纹理",另一个检测"形状"
- 第一层检测基础特征 → 第二层组合成形状 → 第三层识别物体
- 就像 Git 的 diff —— 你写一个小窗口,在代码上滑动,检测"这里改了什么东西"
| CNN 概念 | 在 GPT 时代有什么用 |
|---|---|
| 卷积层 | 多模态模型(GPT-4V / Gemini)处理图片时依然用 CNN 提取视觉特征 |
| 池化层 | 已被 Transformer 的 Self-Attention 替代 |
| 经典 CNN 架构(ResNet) | 多模态模型中仍作为图像编码器使用 |
七、🔴 RNN 循环神经网络(已被替代,科普了解)
给程序员的比喻:RNN = 一段代码中,后面的变量依赖于前面的变量——
- RNN 读完第一个词,把"状态"传给下一个,下一个读完更新状态再传下去
- 问题:必须串行,不能并行!读完"我"才能读"爱",读完"爱"才能读"你"
对比 Transformer:
- Transformer = 所有词同时处理,每个词都能"看到"所有其他词
- 这就是为什么 Transformer 更快 + 更准 + 更擅长长文本
| 对比 | RNN / LSTM | Transformer |
|---|---|---|
| 处理方式 | 串行,一个词一个词来 | 并行,所有词一起处理 |
| 长距离依赖 | 弱(读到后面忘了前面) | 强(每个词都能看到所有词) |
| 训练速度 | 慢 | 快(GPU 并行计算) |
| 2026 年还在用吗? | ❌ 基本淘汰 | ✅ GPT/Claude 的核心 |
如果只看一句话:RNN 是一个一个读句子,Transformer 是一眼看完整句话。所以 RNN 被淘汰了。
附录:08 和 09 的定位区别
| 维度 | 08 机器学习 | 09 深度学习 |
|---|---|---|
| 📅 活跃时期 | 1990s~2015 | 2012~至今(但 RNN 已被替代) |
| 🧠 核心思想 | 特征工程 + 浅层模型 | 自动特征提取 + 多层网络 |
| 🔧 代表技术 | KNN/SVM/决策树 | CNN/RNN/Transformer |
| 🤖 与 LLM 的关联 | 思维框架层面 | 直接技术继承(激活函数/优化器/PyTorch) |
| 🎯 学习重点 | 训练数据选型:❌ | ⭐ PyTorch 框架:✅ |
AI 协作指南
AI 能做的:
- 写完整的 PyTorch 模型定义和训练循环
- 把论文中的模型架构翻译成 PyTorch 代码
- 调优超参数(学习率、批次大小、优化器选择)
人类需理解的(AI 做不好的):
- 用 ReLU 还是 GELU?为什么?
- 模型不收敛,是学习率问题还是数据问题?
- 为什么 Adam 比 SGD 更常用?
- 这个任务用 CNN 还是 Transformer?
最高效的学习方式:
- PyTorch 的 API 不要背,需要的时候问 AI
- 重点理解"为什么":为什么 ReLU 比 Sigmoid 好、为什么 Adam 比 SGD 快
- 训练代码的骨架只有 10 行,理解这 10 行的含义比背 100 个 API 有用附录:原始资料处理说明
| 原始文件 | 处理方式 |
|---|---|
深度学习1.3.0.docx | 内容已整合到本文档 |
fashion-mnist 数据集 | 保留,配合 PyTorch CNN 练习用 |
poems.txt | RNN 诗词生成案例数据,了解即可(RNN 已被替代) |
| 视频(12 天,100+ 个) | 跳过 |
修复情况:与 08 原版的相同问题已全部修正:
- ✅ AI 替代率 / 人工干预率标注
- ✅ 🟢🟡🟠🔴 emoji 颜色等级
- ✅ 中英文对照表
- ✅ 每节标注"在 LLM 时代还用吗"
- ✅ 程序员比喻(非"小孩认猫"类比喻)