Skip to content

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线性整流单元负数归零,正数保留
SigmoidS 型函数把任意实数压缩到 0~1 之间
Softmax归一化指数把向量变成概率分布
python
# ReLU — 最常用的激活函数
# f(x) = max(0, x)
# 负数直接砍掉,正数保留原样
# 优点:计算简单、梯度不衰减

# Sigmoid — 早期使用的激活函数
# f(x) = 1 / (1 + e^(-x))
# 输出在 0~1 之间
# 缺点:两端的梯度接近 0,导致"梯度消失"

# Softmax — 多分类的输出层
# 把模型的原始输出变成概率,所有概率和为 1
激活函数现代 AI 中还在用吗?原因
ReLUGPT 每一层都在用简单、高效、梯度不衰减
SoftmaxGPT 生成 token 的核心概率输出的唯一选择
Sigmoid / Tanh❌ 已被 ReLU 替代梯度消失问题严重

在 LLM 中的对应:GPT 的 FFN(前馈神经网络)层的核心就是 ReLU 或它的变体 GELU。没有激活函数,Transformer 的多层结构就退化成了一次线性变换。


二、🟡 损失函数 & 梯度下降(训练的核心)

给程序员的比喻

  • 损失函数 = CI/CD 流水线的测试通过率,越低越好
  • 梯度 = Git bisect,找到"是哪次提交让通过率变差了"的方向
  • 梯度下降 = 每次提交代码后看测试结果,往"让通过率变好"的方向改代码

常用损失函数

损失函数适用场景本质在 LLM 中
均方误差 MSE回归问题预测值 vs 真实值的距离平方——
交叉熵 Cross-Entropy分类问题预测概率分布 vs 真实分布的差异GPT 的训练目标
python
# 交叉熵的核心公式理解:
# 如果真实答案是"猫",模型输出"猫"的概率是 0.9 → 损失小
# 如果模型输出"猫"的概率是 0.1 → 损失大
# GPT 训练时,就是在最小化"预测下一个词"的交叉熵损失

给程序员的进一步比喻:交叉熵就像一个自动判卷系统——

  • 标准答案唯一(one-hot)
  • 预测和标准答案越接近,扣分越少
  • 预测和标准答案差异越大,扣分指数级增长(不是线性扣分)

三、🟠 反向传播(理解即可)

给程序员的比喻:反向传播 = Git 的 blame 功能 + 自动回滚——

  • 你做了一次提交(前向传播),测试挂了(损失变大)
  • Git blame 找出是谁改的代码(反向传播算梯度)
  • 自动回滚到正确的版本(更新参数)

但重要的是:PyTorch / TensorFlow 已经自动帮你做了反向传播,你不需要手写。

python
# PyTorch 自动微分——你只需写前向传播
loss = loss_fn(model(x), y)
loss.backward()          # 反向传播,自动计算所有参数的梯度
optimizer.step()         # 更新参数

# 这就是你训练任何模型时见到的 3 行固定代码
学习深度建议
🟢 了解概念知道反向传播是"算梯度"的就好
🟡 面试准备理解计算图 + 链式法则
🔴 手写实现❌ 不要花时间,框架替你做了

四、🟡 优化器(Adam / SGD — 微调也要选)

给程序员的比喻:优化器 = 你调 API 参数时的调参策略——

  • SGD = 每次固定调一个小步长,不看历史调整方向
  • Momentum = 像皮球下山,有惯性,不会卡在小坑里
  • Adam = Momentum + 自适应学习率,大部分情况下的默认选择
优化器还在用吗?说明
SGD(带动量)⚠️ 有些场景还在用泛化性能好,训练时间长
Adam最常用自适应学习率,收敛快,LoRA 微调的默认选择
AdamWLLM 训练首选Adam + 权重衰减解耦,GPT 训练用的就是这个
python
# LoRA 微调时你也会看到这行代码
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-4)

五、🟢 PyTorch 入门(后续项目的基础框架)

给程序员的比喻:PyTorch = 用 Python 写代码,但数据在 GPU 上算。 你不需要操心内存管理、并行计算——框架替你做了。

核心概念

概念本质
Tensor在 GPU 上跑的 numpy.ndarray
自动微分自动计算梯度,不用手写反向传播
nn.Module定义神经网络的基类
DataLoader批量加载数据的工具

PyTorch 完整训练流程

python
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 / LSTMTransformer
处理方式串行,一个词一个词来并行,所有词一起处理
长距离依赖弱(读到后面忘了前面)强(每个词都能看到所有词)
训练速度快(GPU 并行计算)
2026 年还在用吗?❌ 基本淘汰GPT/Claude 的核心

如果只看一句话:RNN 是一个一个读句子,Transformer 是一眼看完整句话。所以 RNN 被淘汰了。


附录:08 和 09 的定位区别

维度08 机器学习09 深度学习
📅 活跃时期1990s~20152012~至今(但 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.txtRNN 诗词生成案例数据,了解即可(RNN 已被替代)
视频(12 天,100+ 个)跳过

修复情况:与 08 原版的相同问题已全部修正:

  • ✅ AI 替代率 / 人工干预率标注
  • ✅ 🟢🟡🟠🔴 emoji 颜色等级
  • ✅ 中英文对照表
  • ✅ 每节标注"在 LLM 时代还用吗"
  • ✅ 程序员比喻(非"小孩认猫"类比喻)

OPC 超级个体实战指南