李沐《动手学深度学习》知识卡合集:从 Softmax 回归到房价实战(第24-50集)

📑 目录导航

  • [第24集《Softmax 回归》](#第24集《Softmax 回归》)
  • [第25-26集《损失函数 + 图片分类数据集》](#第25-26集《损失函数 + 图片分类数据集》)
  • [第27-28集《Softmax 从零实现 + 简洁实现》](#第27-28集《Softmax 从零实现 + 简洁实现》)
  • [第29集《Softmax 回归 QA》](#第29集《Softmax 回归 QA》)
  • [第30-32集《CUDA安装 + AWS GPU + 感知机》](#第30-32集《CUDA安装 + AWS GPU + 感知机》)
  • 第33-35集《多层感知机》
  • 第36-38集《模型选择与过拟合》
  • [第39-40集《模型选择与过拟合 代码+QA》](#第39-40集《模型选择与过拟合 代码+QA》)
  • 第41-43集《权重衰退》
  • 第44-46集《丢弃法》
  • [第47-50集《数值稳定性 + 初始化 + 房价实战》](#第47-50集《数值稳定性 + 初始化 + 房价实战》)

一句话总结**《Softmax 回归》** ------ 第24集:从"回归"跨入"分类",Softmax 把网络输出归一化为类别概率(10:27)。 📊

📌 知识卡已发布

第24集《Softmax 回归》知识卡

Markdown 版可视化(Unicode)

复制代码
线性回归 ────────→ Softmax 回归
   │                    │
   ▼                    ▼
1个连续输出        n个输出(=类别数)
ŷ = wᵀx + b        o_i = wᵢᵀx + bᵢ
                         │
                    softmax 归一化
                         ▼
              ŷ_i = e^{o_i} / Σe^{o_j}
              概率和 = 1 ✅
对比维度 线性回归(19集) Softmax 回归(24集)
问题类型 回归 分类 ⭐
输出个数 1 个 n 个(类别数)
输出含义 连续数值 各类别概率
关键运算 softmax 归一化
损失函数 均方误差 交叉熵(下集讲)
标签形式 实数 独热编码 one-hot

学习进度:

复制代码
基础篇 ▊▊▊▊▊▊▊▊▊▊▉▏▏▏▏▏▏▏▏▏ 12.5%(24/191)
分类章节:24 softmax回归 ✅ → 25 损失函数 → 26 图片数据集 → 27 从零实现 → 28 简洁实现

详细总结

第24集(10:27)是分类问题的开篇理论课,李沐用"从回归到分类只差最后一步归一化"的思路切入。🎯

  • 分类的本质:输出从"1个连续值"变成"n个离散类别概率"。标签用独热编码(如猫=1,0,0、狗=0,1,0),模型任务从"猜数字"变为"猜比例"。
  • 模型结构不变:依然是单层神经网络,只是输出层神经元从 1 个扩到 n 个,每个类别各配一组 (wᵢ, bᵢ),得到 n 个 logit。
  • Softmax 的作用:logit 可正可负、和无约束,直接当概率不合法;通过 e{o_i}/Σe{o_j} 两步------先指数拉到全正、再除以总和归一化------输出就是合法概率分布,且最大 logit 对应最大概率(argmax 预测不受影响)。
  • 数值稳定性预警:e¹⁰⁰ 上溢、e⁻¹⁰⁰ 下溢,引出第47集"数值稳定性"的伏笔,也是第25集交叉熵实现时要做 log-softmax 合并的原因。
  • 承上启下:本集定模型,第25集定损失(交叉熵),第26集准备 Fashion-MNIST 数据,第27集手写完整实现------分类四件套正式开跑 🚀

📺 原视频:B站视频页

下一集《损失函数》(06:25)讲交叉熵的推导与直觉,👉 回复"继续"进入下一章节

一句话总结**《损失函数 + 图片分类数据集》** ------ 第25集讲分类专属损失"交叉熵"(06:25),第26集备好数据集 Fashion-MNIST(09:26),分类四件套凑齐一半。 🧩

📌 知识卡已发布

🔗 在线链接

第25-26集《损失函数 + 图片分类数据集》双集卡

Markdown 版可视化(Unicode)

复制代码
第25集:交叉熵的推导链
最大似然 ─→ 取负对数 ─→ l = −log ŷ_y ─→ 梯度 = softmax(o) − y
                                             ▊▊▊▊▊ 极简,一行反传
第26集:数据加载流
FashionMNIST ─→ ToTensor ─→ DataLoader ─→ batch 迭代
6万+1万         归一化      batch_size     开训 ✅
维度 第25集 损失函数 第26集 图片数据集
性质 理论推导 实操准备
核心 交叉熵 = −log ŷ_y Fashion-MNIST 规格
关键点 梯度=预测−标签 784维输入 / 10类
重要度 ▊▊▊▊▊ ▊▊▊▍

详细总结

两集连看正好是"分类任务的最后两块拼图"。🧩

第25集《损失函数》(06:25):为什么分类不能用均方误差?因为输出是概率分布,需要"对数"来衡量。交叉熵 l=−log⁡y^yl=−logy^​y​ 只看真实类的预测概率------概率越接近 1,损失越接近 0。它来自最大似然估计,且梯度形式 softmax(o)−ysoftmax(o)−y 极简,这是 Softmax+交叉熵成为分类标配的根本原因。

第26集《图片分类数据集》(09:26) :Fashion-MNIST------10类服饰、28×28灰度图、6万训练+1万测试。不用经典 MNIST 是因为它太简单(随便 98%+),区分不出模型优劣。代码上用 torchvision.datasets 下载 + DataLoader 批量迭代,顺便讲了读取速度计时(num_workers 多进程加速)。

进度:分类四件套已完成模型(24)+ 损失(25)+ 数据(26),下一集《从零开始实现》(18:44)把它们组装成完整训练流程 🚀

📺 原视频:p=25 · p=26

一句话总结**《Softmax 从零实现 + 简洁实现》** ------ 第27集手写完整分类训练(18:44),第28集 nn API 三行搞定(04:10),分类四件套收官。 ✅

🔗 在线链接

第27-28集《Softmax 从零实现 + 简洁实现》代码卡

Markdown 版可视化(Unicode)

复制代码
第27集:从零组装流水线
展平784 ─→ X@W+b ─→ softmax ─→ 交叉熵 ─→ backward ─→ SGD ─→ 84% ✅
                    ▲ 先减max防爆 ▲ gather取真实类
第28集:API 压缩
nn.Flatten ─→ nn.Linear ─→ CrossEntropyLoss ─→ 训练循环照旧
softmax 藏这里 ⭐
组件 27集手写 28集 API
模型 X@W+b nn.Linear(784,10)
softmax 手写归一化 藏在 CrossEntropyLoss ⭐
损失 gather+log nn.CrossEntropyLoss
代码量 ▊▊▊▊▊ 约100行 ▏ 约10行

详细总结

第27集(18:44):全课第一个"从零手写分类器",把 24-26 集的理论全部落成代码:图片展平成 784 维 → 手写 softmax(先减最大值防溢出)→ gather 取真实类算交叉熵 → 训练循环跑 10 个 epoch 达 ≈84% 准确率,还顺手封装了 Accumulator 精度评估器和动画可视化。🛠️

第28集(04:10) :框架版示范------nn.Flatten + nn.Linear + CrossEntropyLoss 十行收工。⚠️ 最易踩的坑:CrossEntropyLoss 内部已含 softmax,千万不要在输出层再手动加一层。弹幕也笑称"从16分钟变4分钟",框架威力尽显。

进度:▊▊▊▊▊▊▊▍▏▏ 14.7%(28/191)。下一集第29集 QA(31分钟,分类章节最长答疑),第32集正式开讲多层感知机。👉 回复"继续"进入下一章节

📺 原视频:p=27 · p=28

核心代码速查

第27集手写 softmax + 交叉熵的关键代码片段(含防溢出处理):

python 复制代码
# 1. 手写 softmax:先减最大值防溢出,再指数归一化
def softmax(X):
    X_exp = torch.exp(X - X.max(dim=1, keepdim=True).values)  # 减 max 防上溢
    return X_exp / X_exp.sum(dim=1, keepdim=True)             # 归一化为概率
2. 交叉熵:gather 取真实类概率,再取负对数
def cross_entropy(y_hat, y):
return -torch.log(y_hat.gather(1, y.view(-1, 1))).mean()  # 只看真实类

第28集 nn.Sequential 简洁实现的完整代码:

python 复制代码
# 1. 模型:展平 + 线性层,CrossEntropyLoss 内部已含 softmax
net = nn.Sequential(nn.Flatten(), nn.Linear(784, 10))  # 不要再手动加 softmax
2. 训练:损失函数直接选交叉熵,SGD 优化器照旧
loss = nn.CrossEntropyLoss()
trainer = torch.optim.SGD(net.parameters(), lr=0.1)    # 训练循环与手写版一致

一句话总结**《Softmax 回归 QA》** ------ 第29集:分类章节31分钟大答疑,收尾线性模型时代(31:00)。 💬

🔗 在线链接

第29集《Softmax 回归 QA》答疑卡

Markdown 版可视化(Unicode)

复制代码
高频答疑热度:
交叉熵 vs MSE        ▊▊▊▊▊  最核心,"错得越狠学得越猛"
准确率不能当损失      ▊▊▊▍   不可导,只能做评估
学习率/批量调参      ▊▊▊    一次只动一个
sigmoid 关系         ▊▍    二分类特例
类别不平衡           ▊▍    加权损失 / F1
章节里程碑:
预备+数学 ✅ ─→ 线性回归 ✅ ─→ Softmax ✅ 🎉 ─→ MLP(32集起)⏭
问题 一句话答案
为何用交叉熵? 梯度=预测−标签,错得越离谱学得越猛 ✅
准确率当损失? ❌ 不可导无梯度,只能做评估指标
sigmoid 关系? softmax 在2类上的特例
调参顺序? 先学习率(影响最大),再批量,一次一个

详细总结

第29集(31:00)是 Softmax 章节的收官大答疑,也是全课程前半段的"理论半场"终点。核心金句:分类任务"错得越离谱,梯度越猛" (交叉熵),以及准确率不能当损失函数(不可导、无梯度)。李沐还强调调参纪律:先动学习率、一次只调一个变量 🎯

里程碑:线性模型时代(1-29集)全部完结 🎉 中间插入第30-31集 GPU 环境番外(装 CUDA、AWS 租卡),第32集《感知机》正式开启神经网络时代 🚀

进度:▊▊▊▊▊▊▊▊▏▏ 15.2%(29/191)

📺 原视频:p=29

👉 回复"继续"进入下一章节

一句话总结**《GPU番外×2 + 感知机》** ------ 第30集装 CUDA、第31集租 AWS 卡搞定硬件,第32集感知机登场揭开神经网络时代(13:53)。 🚀

🔗 在线链接

第30-32集《CUDA安装 + AWS GPU + 感知机》三合集

Markdown 版可视化(Unicode)

复制代码
三集路线:
30 Windows装CUDA ─→ 31 AWS租GPU ─→ 32 感知机开篇
   nvidia-smi         spot竞价         神经网络老祖宗
   torch.cuda=True    用完释放💸       XOR困局 ⭐
集数 主题 关键点 重要度
30 装 CUDA 版本对应 + is_available() 验证 ▊▊▍
31 AWS GPU 竞价实例省钱,学完即释放 ▊▊
32 感知机 XOR 单层无解 → 催生多层网络 ▊▊▊▊▊
复制代码
XOR 困局(32集核心):
 0,0→0 ●        ● 1,0→1        一条直线切不开 ● 和 ★
 0,1→1 ★        1,1→0 ●        → 必须多层 + 非线性激活

详细总结

第30集(07:54) :Windows GPU 环境三步走------nvidia-smi 确认显卡、官网装对应版本 CUDA Toolkit、torch.cuda.is_available()=True 验证成功。没 N 卡直接 CPU 跑课,前 50 集完全够用。

第31集(08:16) :没有卡就租------AWS g 系列竞价实例 最省钱,SSH 登录配好环境即用,核心纪律是用完立刻释放避免账单刺客;国内可用 AutoDL 等平台替代。

第32集(13:53) :神经网络时代开篇 🎬 感知机是"加了阈值的线性模型",但它有个致命死穴------XOR 异或问题一条直线永远切不开 (1969 年 Minsky 因此把 AI 打入寒冬)。破局靠两件武器:多层隐藏层 (XOR=AND+OR 组合)+ 激活函数(ReLU 最常用)注入非线性,这正是下一集《多层感知机》的全部动机。

进度:▊▊▊▊▊▊▍▏▏ 16.8%(32/191)

📺 原视频:p=30 · p=31 · p=32

一句话总结**《多层感知机》** ------ 第33集讲 MLP 理论(22:40),第34集代码实现(08:27),第35集 QA 答疑(26:49),隐藏层 + 激活函数注入非线性,分类精度从 84% 跃升到 88%。 🚀

🔗 在线链接

第33-35集《多层感知机》三合集

📌 知识卡已发布

第33-35集《多层感知机》三合集

Markdown 版可视化(Unicode)

复制代码
MLP 三部曲路线:
33 MLP理论 ─→ 34 代码实现 ─→ 35 QA答疑
  隐藏层+σ       Sequential       调参心法
  万能逼近⭐      784→256→10       学习率元凶
集数 主题 关键点 重要度
33 MLP 理论 线性套线性仍线性 → σ 注入非线性 ▊▊▊▊▊
34 代码实现 nn.Sequential 搭 784-256-10 ▊▊▊▊
35 QA 隐藏层取 2 的幂;不收敛先查学习率 ▊▊▊
复制代码
激活函数对比:
sigmoid (0,1)   易饱和、非零中心 ▓▓░░░
tanh    (−1,1)  零中心仍饱和     ▓▓▓░░
ReLU    [0,∞)   最快无饱和 ⭐    ▓▓▓▓▓

效果跃迁:
Softmax ≈84% ▊▊▊▊▊▊▊▊▏
MLP     ≈88% ▊▊▊▊▊▊▊▊▊ (+4个点)

详细总结

第33集(22:40) :MLP 理论核心一页讲透------线性模型套多少层都是线性,永远画不出 XOR 的分界线;解决办法是隐藏层 + 激活函数 σh = σ(W₁x+b₁),有了非线性才能逼近任意函数。三大激活函数登场:sigmoid 易梯度消失、tanh 零中心仍饱和、ReLU 无饱和区计算最快是默认首选 ⭐

第34集(08:27)nn.Sequential(Flatten → Linear(784,256) → ReLU → Linear(256,10)) 十行搭完,隐藏单元取 256(2 的幂,GPU 友好) 。最妙的是训练流程完全复用------交叉熵 + SGD 原封不动只换模型,框架解耦的价值体现。Fashion-MNIST 10 epoch 准确率 ≈88%,比纯 Softmax 的 84% 直接涨 4 个点。

第35集(26:49) :QA 实战心法精选------隐藏层宽度是超参数(过大过拟合、过小欠拟合);深度换宽度表达力相近但更深训练更难;损失函数非凸没关系,SGD 实践中总能找到足够好的局部解;不收敛先查学习率(最常见元凶),再查归一化和初始化。

进度:▊▊▊▊▊▊▊▏▏ 18.3%(35/191)

📺 原视频:p=33 · p=34 · p=35

一句话总结**《模型选择与过拟合》** ------ 第36集讲模板思维(03:20),第37集讲模型选择(18:37),第38集讲过拟合诊断(16:47),训练误差 ≠ 泛化误差,测试集只许碰一次。 🎯

📌 知识卡已发布

第36-38集《模型选择与过拟合》三合集

Markdown 版可视化(Unicode)

复制代码
方法论三连路线:
36 模板思想 ─→ 37 模型选择 ─→ 38 过拟合诊断
  复用训练流程     验证集生命线      容量vs数据博弈
  换任务只改模型    K折交叉验证⭐     诊断表开药方💊
集数 主题 关键点 重要度
36 模板思维 训练流程模板化,效率跃升 ▊▊▊
37 模型选择 测试集只许碰一次! ▊▊▊▊▊
38 过拟合 容量与数据复杂度要匹配 ▊▊▊▊▊
复制代码
模型容量光谱:
欠拟合 ◄─▓▓▓░░░░░░░─► 过拟合
容量太小      刚刚好⭐      容量太大
训练误差高    双低🎯       训练误差低
泛化误差高                 泛化误差高

诊断处方速查:
欠拟合 → 加容量/训久点/换模型 💊
过拟合 → 更多数据/正则化/减容量 💊

详细总结

第36集(03:20) :短小精悍的实战宣言------李沐强调训练/评估流程要模板化:一次写好,换任务只改模型定义,这是高效实验的核心。同时揭示现实:数据科学家大部分时间花在调参实验上,剩下才用来提那几个点。

第37集(18:37) :本章最重要的概念集------训练误差 ≠ 泛化误差 ,机器学习的目标是后者。三大数据集铁律:训练集学参数、验证集选模型和调超参(间接影响训练,用完即弃) 、测试集只许碰一次!数据不够时上 K 折交叉验证(K 常取 5 或 10),代价是要训练 K 次。

第38集(16:47) :诊断学核心------模型容量 vs 数据复杂度的匹配艺术。欠拟合 (训练误差和泛化误差都高):加容量、训久点、换模型;过拟合 (训练误差低但泛化误差高):更多数据、正则化、减容量。容量由参数个数和参数取值范围共同决定------这个定义是后续权重衰退的理论地基 🧱

进度:▊▊▊▊▊▊▊▏▏ 19.9%(38/191)

📺 原视频:p=36 · p=37 · p=38

下一站第 39 集《代码》+ 第 40 集《QA》(45 分钟干货答疑),继续发"继续"即可 ✨

MLP 章节完结 🎉 继续发"继续"进入第 36 集《10 行代码战胜 90% 数据科学家?》✨

过拟合 vs 欠拟合 快速诊断表

症状 诊断结论 处方
训练误差高 + 泛化误差高 欠拟合(容量太小) 加数据 / 增大模型容量 / 训久一点 / 换更强模型
训练误差低 + 泛化误差高 过拟合(容量太大) 加数据 / 正则化(L2、Dropout)/ 减小模型容量
训练误差低 + 泛化误差低 刚刚好 🎯 保持现状,别再动容量

用多项式阶数 d 控制模型容量,一行代码即可在欠拟合与过拟合之间切换:

python 复制代码
# d 是多项式阶数:d=1 欠拟合(直线),d=3 刚好,d=10 过拟合
net = nn.Sequential(nn.Linear(d, 1))  # 输入 d 个多项式特征,输出 1 个预测值

一句话总结**《模型选择与过拟合 代码 + QA》** ------ 第39集把 36-38 集方法论落成代码(多项式回归演示过拟合),第40集 45 分钟大答疑收尾模型选择章节(45:00)。 💻

📌 知识卡已发布

🔗 在线链接

第39-40集《模型选择与过拟合 代码 + QA》双集卡

Markdown 版可视化(Unicode)

复制代码
第39集:多项式回归演示过拟合
阶数 d=1 ─→ d=3 ─→ d=10
欠拟合      刚刚好⭐      过拟合
训练/泛化    双低🎯       训练低、泛化高
误差都高
第40集:QA 高频答疑
验证集 vs 测试集 ▊▊▊▊▊ 测试集只许碰一次!
K 折怎么选 K    ▊▊▊▍ 5 或 10,数据少用大 K
过拟合怎么办    ▊▊▊▊ 数据/正则/减容量
集数 主题 关键点 重要度
39 代码实现 多项式阶数 d 控制容量,直观演示欠/过拟合 ▊▊▊▊
40 QA 答疑 验证集选模型、测试集只碰一次、K 折选 K ▊▊▊▊▊
复制代码
多项式阶数光谱:
d=1 ─▓░░░░─► d=3 ─▓▓▓▓▓─► d=10
欠拟合        刚刚好⭐        过拟合
直线太简单     双低🎯         曲线太复杂

详细总结

第39集(代码) :把 36-38 集的方法论落成可运行代码------用多项式回归 演示模型容量对拟合效果的影响。核心是控制多项式阶数 d:d=1 是直线(欠拟合,训练和泛化误差都高)、d=3 恰到好处(双低 🎯)、d=10 曲线剧烈摆动(过拟合,训练误差低但泛化误差高)。代码上通过 nn.Sequential 动态拼接不同阶数的特征变换,配合训练/验证误差曲线可视化,把「容量 vs 数据复杂度」的抽象概念变成一眼可见的曲线对比。

第40集(QA,45 分钟) :模型选择章节的收官大答疑,也是全课最长的 QA 之一。核心纪律反复强调:测试集只许碰一次 ,选模型和调超参一律在验证集上进行;数据不够时用 K 折交叉验证(K 常取 5 或 10,数据越少 K 越大),代价是训练 K 次。还澄清了验证集「用完即弃」的定位------它间接影响训练(选超参),但绝不能拿测试集反复试。

进度:▊▊▊▊▊▊▊▏▏ 20.9%(40/191)

📺 原视频:p=39 · p=40

第39集《模型选择与过拟合 代码》详细总结

第39集(代码) :把 36-38 集的方法论落成可运行代码,用多项式回归直观演示模型容量对拟合效果的影响。核心是控制多项式阶数 d:d=1 是直线(欠拟合,训练和泛化误差都高)、d=3 恰到好处(双低 🎯)、d=10 曲线剧烈摆动(过拟合,训练误差低但泛化误差高)。

核心代码逻辑 :通过 nn.Sequential 动态拼接不同阶数的特征变换------先用 nn.Linear 把原始输入映射到多项式特征空间(如 d 阶对应 d 个特征),再接入线性输出层。这样只需改一个参数 d,就能在欠拟合、刚好、过拟合三种状态间自由切换,完美演示「容量 vs 数据复杂度」的博弈。

可视化验证:训练/验证误差曲线是本节的关键------d=1 时两条曲线都居高不下(欠拟合);d=3 时训练误差和验证误差同时降到最低(双低 🎯);d=10 时训练误差继续走低但验证误差反而飙升(过拟合),一眼看清「训练误差低 ≠ 泛化误差低」的铁律。

进度:▊▊▊▊▊▊▊▊▏ 20.9%(40/191)

📺 原视频:p=39

第40集《模型选择与过拟合 QA》详细总结

第40集(QA,45 分钟) :模型选择章节的收官大答疑,也是全课最长的 QA 之一。核心纪律反复强调:测试集只许碰一次 ,选模型和调超参一律在验证集上进行;数据不够时用 K 折交叉验证(K 常取 5 或 10,数据越少 K 越大),代价是训练 K 次。还澄清了验证集「用完即弃」的定位------它间接影响训练(选超参),但绝不能拿测试集反复试。

验证集 vs 测试集:验证集用于选模型、调超参,可以反复使用但「用完即弃」------它间接影响训练(选超参);测试集只许碰一次,用来最终评估泛化能力,绝不能拿它反复试模型,否则就「污染」了测试集,评估结果不再可信。

K 折交叉验证选 K:数据不够时上 K 折交叉验证------把训练集分成 K 份,轮流拿 1 份当验证集、其余 K-1 份训练,取 K 次平均误差。K 常取 5 或 10:数据越少 K 越大(充分利用数据),但代价是要训练 K 次,计算成本线性上升。

过拟合应对策略:诊断清楚后对症下药------更多数据(最直接)、正则化(权重衰退 L2、丢弃法 Dropout)、减小模型容量(降阶数 d、减隐藏单元)。核心心法:容量与数据复杂度要匹配,欠拟合加容量、过拟合减容量。

进度:▊▊▊▊▊▊▊▊▏ 20.9%(40/191)

📺 原视频:p=40

下一站第 41-43 集《权重衰退》(治过拟合第一剂药),继续发"继续"即可 ✨

Markdown 版可视化(Unicode)

复制代码
方法论三连路线:
36 模板思想 ─→ 37 模型选择 ─→ 38 过拟合诊断
  复用训练流程     验证集生命线      容量vs数据博弈
  换任务只改模型    K折交叉验证⭐     诊断表开药方💊
集数 主题 关键点 重要度
36 模板思维 训练流程模板化,效率跃升 ▊▊▊
37 模型选择 测试集只许碰一次! ▊▊▊▊▊
38 过拟合 容量与数据复杂度要匹配 ▊▊▊▊▊
复制代码
模型容量光谱:
欠拟合 ◄─▓▓▓░░░░░░░─► 过拟合
容量太小      刚刚好⭐      容量太大
训练误差高    双低🎯       训练误差低
泛化误差高                 泛化误差高

诊断处方速查:
欠拟合 → 加容量/训久点/换模型 💊
过拟合 → 更多数据/正则化/减容量 💊

详细总结

第36集(03:20) :短小精悍的实战宣言------李沐强调训练/评估流程要模板化:一次写好,换任务只改模型定义,这是高效实验的核心。同时揭示现实:数据科学家大部分时间花在调参实验上,剩下才用来提那几个点。

第37集(18:37) :本章最重要的概念集------训练误差 ≠ 泛化误差 ,机器学习的目标是后者。三大数据集铁律:训练集学参数、验证集选模型和调超参(间接影响训练,用完即弃) 、测试集只许碰一次!数据不够时上 K 折交叉验证(K 常取 5 或 10),代价是要训练 K 次。

第38集(16:47) :诊断学核心------模型容量 vs 数据复杂度的匹配艺术。欠拟合 (训练误差和泛化误差都高):加容量、训久点、换模型;过拟合 (训练误差低但泛化误差高):更多数据、正则化、减容量。容量由参数个数和参数取值范围共同决定------这个定义是后续权重衰退的理论地基 🧱

进度:▊▊▊▊▊▊▊▏▏ 19.9%(38/191)

📺 原视频:p=36 · p=37 · p=38

下一站第 39 集《代码》+ 第 40 集《QA》(45 分钟干货答疑),继续发"继续"即可 ✨

一句话总结**《权重衰退》** ------ 第41集:治过拟合第一剂药,L2 正则化给权重"缩水",限制参数取值范围而非个数(13:03)。 💊

📌 知识卡已发布

第41集《权重衰退》知识卡

Markdown 版可视化(Unicode)

复制代码
第41集:L2 正则化核心
损失函数加惩罚项:ℓ + λ/2·‖w‖²
   │
   ├─ 别名:岭回归 / Tikhonov 正则
   ├─ 思路:限制参数取值范围,不砍参数个数
   │
   ▼
SGD 更新式推导:
普通:  w ← w − lr·∂ℓ/∂w
衰退:  w ← (1 − lr·λ)·w − lr·∂ℓ/∂w
              ↑ 每次先"缩水"一点点
   │
   ▼
λ 越大 → w 越小 → 函数越平滑 → 泛化越好
维度 第38集 模型容量 第41集 权重衰退
核心定义 容量 = 参数个数 + 参数取值范围 限制取值范围 → 缩小容量
手段 诊断过拟合的标尺 损失函数加 L2 惩罚项
效果 容量太大 → 过拟合 w 变小 → 函数更平滑
关系 理论地基 🧱 地基上的第一剂药 💊
复制代码
λ 效果光谱:
λ=0 ─▓░░░░─► λ越大 ─▓▓▓▓▓─► λ→∞
过拟合        w变小         w≈0
原模型        函数更平滑⭐    只剩 bias(欠拟合)

详细总结

第41集(13:03) :权重衰退(L2 正则)是治过拟合第一剂药,直接承接第38集「容量由参数个数和参数取值范围共同决定」的定义------既然容量太大导致过拟合,那就不砍参数个数,而是限制参数取值范围 :在损失函数上加上 λ/2·‖w‖² 惩罚项(别名岭回归 / Tikhonov 正则)。推导出 SGD 更新式后发现玄机:w ← (1−lr·λ)·w − lr·∇ℓ,每次更新前权重先乘衰减因子、逐次"衰退"------名字就是这么来的。λ 越大 → w 越小 → 函数越平滑,且 bias b 通常不参与衰减。

代码实现要点 :从零实现只需手动给 loss 加惩罚项 loss = loss + λ/2 * (w**2).sum();框架版更简单,SGD(weight_decay=wd) 一行搞定。实验印证理论:λ=0 明显过拟合,λ=3 时训练误差略升但验证误差大降 ✅。注意框架小坑:默认会连 b 一起惩罚(严格说不该)。

进度:▊▊▊▊▊▏▏▏▏▏ 21.5%(41/191)

📺 原视频:p=41

下一集第42集《代码实现》(12:35)讲从零实现 + 框架一行版,👉 回复"继续"进入下一章节

🔗 在线链接第41-43集《权重衰退》三合集

第41-43集《权重衰退》三合集

Markdown 版可视化(Unicode)

复制代码
权重衰退三部曲:
41 L2理论 ─→ 42 代码实现 ─→ 43 QA调参
  加惩罚项        weight_decay      λ对数尺度扫描
  w逐次"衰退"⭐    一行框架版        可与dropout叠加
集数 主题 关键点 重要度
41 L2 理论 λ/2·‖w‖²,限值域不砍参数个数 ▊▊▊▊▊
42 代码实现 框架一行 weight_decay=wd ▊▊▊▊
43 QA λ 验证集上扫;b 不该被惩罚 ▊▊▊
复制代码
λ 效果光谱:
λ=0 ─▓░░░░─► λ越大 ─▓▓▓▓▓─► λ→∞
过拟合        w变小         w≈0
原模型        函数更平滑⭐    只剩 bias(欠拟合)

 SGD 更新对比:
普通:  w ← w − lr·∂ℓ/∂w
衰退:  w ← (1 − lr·λ)·w − lr·∂ℓ/∂w
              ↑ 每次先"缩水"一点点

详细总结

第41集(13:03) :权重衰退(L2 正则)是治过拟合第一剂药------思路是不砍参数个数,而是限制参数取值范围 :损失函数加上 λ/2·‖w‖² 惩罚项(别名岭回归/Tikhonov 正则)。推导出更新式后发现玄机:w ← (1−lr·λ)·w − lr·∇ℓ,每次更新前权重先乘衰减因子、逐次"衰退"------名字就是这么来的。λ 越大 → w 越小 → 函数越平滑,且 bias b 通常不参与衰减。

第42集(12:35) :从零实现只需手动给 loss 加惩罚项;框架版更简单,SGD(weight_decay=wd) 一行搞定。实验印证理论:λ=0 明显过拟合,λ=3 时训练误差略升但验证误差大降 ✅。注意框架小坑:默认会连 b 一起惩罚(严格说不该)。

第43集(11:36) :QA 实战心得------λ 在验证集上按 1e-4→10 对数尺度扫描,通用量级 1e-2 起步;λ 可分层设置(输出层可弱化);与 dropout 不冲突,可叠加组合拳;惩罚为何有效?w 小 → 输入扰动对输出影响小 → 函数对噪声不敏感。

进度:▊▊▊▊▊▏▏▏▏▏ 22.5%(43/191)

📺 原视频:p=41 · p=42 · p=43

下一站第 44-46 集《丢弃法》(Dropout 登场,另一种正则化),继续发"继续"即可 ✨

🔗 在线链接第44-46集《丢弃法》三合集

第44-46集《丢弃法》三合集

Markdown 版可视化(Unicode)

复制代码
丢弃法三部曲:
44 理论 ─→ 45 代码实现 ─→ 46 QA调参
 训练丢/推理不丢    mask×X一行     p 率怎么选
 期望不变技巧⭐      eval()自动关    可与L2叠加
集数 主题 关键点 重要度
44 Dropout 理论 训练随机丢 p,存活值 ÷(1−p) ▊▊▊▊▊
45 代码实现 nn.Dropout(p) 一行搞定 ▊▊▊▊
46 QA p 取 0.2~0.5;输入层不用 ▊▊▊
复制代码
训练 vs 推理:
训练 🔨  输入 →[随机丢p]→ 层间噪声注入 ─→ 学鲁棒特征
推理 🚀  输入 →[全神经元]→ 稳定输出   ─→ 无需丢弃

正则化工具箱(第4章已集齐两件):
权重衰退 L2  ─→ 惩罚在损失函数 💊  ▊▊▊▊▊
丢弃法 Drop ─→ 噪声注入在层间 🎲  ▊▊▊▊▊
两者可叠加 = 组合拳 🥊

详细总结

第44集(12:00) :丢弃法核心规则------只在训练时丢,推理时永远不丢 。每个神经元以概率 p 被丢弃,存活的值除以 (1−p) 保证期望不变(inverted dropout 的精髓)。为什么有效?标准解释:模型不能把鸡蛋放一个篮子,每个特征都可能消失,权重自然摊开学习更鲁棒的特征;李沐还给了更深的集成视角------每个 batch 相当于随机采样子网络训练,近似廉价的模型集成 🧩

第45集(12:17) :从零实现就三行------mask = (rand > p).float() / (1−p) 然后 mask * X;框架版 nn.Dropout(p) 更省事,训练态自动生效、eval() 自动关闭。实验:MLP 两个隐藏层分别接 p=0.2、p=0.5,结果训练误差升高(学习变难)但验证精度更稳------正则化生效的典型信号 ✅

第46集(24:53) :QA 实战细节------p 常取 0.2~0.5 (隐藏层),输入层一般不用;p=1 全灭学不到东西、p=0 等价没加;除以 (1−p) 就是为了推理时无需任何改动;与权重衰退不冲突可叠加,先 L2 后 dropout 是常见组合拳 🥊

进度:▊▊▊▊▏▏▏▏▏▏ 24.1%(46/191)🎉

📺 原视频:p=44 · p=45 · p=46

下一站第 47-49 集《数值稳定性 + 模型初始化和激活函数》(梯度消失/爆炸专题),继续发"继续"即可 ✨

🔗 在线链接第47-50集《数值稳定性 + 初始化 + 房价实战》四合集

第47-50集《数值稳定性 + 初始化 + 房价实战》四合集

Markdown 版可视化(Unicode)

复制代码
四集路线:
47 梯度消失/爆炸 ─→ 48 初始化+激活函数 ─→ 49 QA ─→ 50 Kaggle房价🏁
   链式连乘乘法灾难     Xavier/He 配方        诊断+裁剪      知识全家桶
集数 主题 关键点 重要度
47 数值稳定性 连乘 <1 消失、>1 爆炸 ▊▊▊▊▊
48 初始化 Xavier 配 tanh,He 配 ReLU ▊▊▊▊▊
49 QA 梯度裁剪治爆炸;残差+BN 治消失 ▊▊▊
50 房价实战 log 域 RMSE + K 折选参 ▊▊▊▊
复制代码
初始化配套表:
tanh/sigmoid ── Xavier:Var = 2/(n_in+n_out) ⭐
ReLU         ── He:    Var = 2/n_in
目标:每层输出均值≈0、方差稳定 ─→ 前向不变形、反向不爆炸

房价五步流程:
读数据 → 标准化+填0 → one-hot → 线性回归+weight_decay → K折选参提交

详细总结

第47集(15:22) :MLP 时代两大暗病现形------链式法则让梯度层层连乘 :系数 <1 就梯度消失 (底层学不动),>1 就梯度爆炸(数值溢出)。典型元凶是 sigmoid 饱和区。治疗目标:让每层的梯度和输出都保持合理范围 🎯

第48集(24:04) :数值稳定的核心配方------随机初始化 + 合适的激活函数 。Xavier 初始化(方差 = 2/(n_in+n_out))配 tanh/sigmoid;He 初始化(方差 = 2/n_in)配 ReLU。设计思想:让每层输出均值≈0、方差稳定,前向传播不变形、反向梯度不爆炸------初始化与激活函数必须配套选 🔄

第49集(22:30) :QA 实战诊断------打印各层梯度范数(变 0 = 消失、NaN/巨大 = 爆炸);爆炸用梯度裁剪 (RNN 常用);消失换 ReLU + Xavier/He,更深网络用残差连接 + BatchNorm(CNN 章节伏笔📌);batch 越大梯度越稳但泛化可能略降。

第50集(14:31) :里程碑时刻------首次 Kaggle 实战 !用前 29 集全家桶打房价预测:数值标准化、缺失值填 0、离散特征 one-hot、线性回归 + weight_decay 治过拟合、K 折交叉验证 选超参,评估用 log 域 RMSE。理论全部落地 🏆

进度:▊▊▊▊▊▏▏▏▏▏ 26.2%(50/191)🎉 突破四分之一!

📺 原视频:p=47 · p=48 · p=49 · p=50

第 4 章 MLP 完整章节正式收官 🎉 下一站第 51-52 集《课程竞赛:加州 2020 房价预测 + QA》,之后进入模型构造篇

全课程学习路线图

目前已覆盖第24集到第38集,进度汇总如下:

章节 集数 主题 进度
Softmax 回归 第24集 从回归跨入分类 ✅ 已完成
损失函数 + 图片分类数据集 第25-26集 交叉熵 + Fashion-MNIST ✅ 已完成
Softmax 从零实现 + 简洁实现 第27-28集 手写训练 + nn API ✅ 已完成
Softmax 回归 QA 第29集 分类章节大答疑 ✅ 已完成
GPU 番外 + 感知机 第30-32集 CUDA / AWS / 感知机 ✅ 已完成
多层感知机 第33-35集 MLP 理论 + 实现 + QA ✅ 已完成
模型选择与过拟合 第36-38集 验证集 / K 折 / 过拟合诊断 ✅ 已完成
权重衰退 第41-43集 L2 正则化(下一章节) ⏭ 即将开始

当前学习位置:第38集完成,进度约 19.9%(38/191)。下一章节为「权重衰退」(第41-43集),点击上方目录导航中的「第41-43集《权重衰退》」即可直达入口

航中的「第41-43集《权重衰退》」即可直达入口

相关推荐
心中有你02141 小时前
Java Swing实现校园最短路径导航系统(Dijkstra算法完整源码+详细解析)
java·开发语言·算法
Thomas.Sir1 小时前
第42课:TensorFlow|计算机视觉实战二【图像分割基础流程与数据标注规范】
人工智能·计算机视觉·tensorflow
Alphapeople1 小时前
路径规划算法的python实现
开发语言·python·算法
重生之小比特1 小时前
【Java SE】数组的定义与使用
java·开发语言
旋生万物1 小时前
圈道裂痕——用 Python 验证素数分布的螺旋生成论判据
开发语言·python·数论·素数·cci·可计算数学
RobinDevNotes1 小时前
Palmier Pro:AI时代的Mac视频编辑器
人工智能·ceph·macos·ai·音视频·视频编辑·mcp
AIGC大时代1 小时前
证据综合 × AI:BrainX 选型表、人工终裁与可审计产物
人工智能·brainx·证据综合·人工终裁
粉色大象1 小时前
handdrawn‑architecture‑video:开源SVG架构图转手绘4K动画视频|本地AI Agent Skill
人工智能·ai·ai作画·系统架构·开源·aigc·音视频
云生信1 小时前
服务器上新 OmicOS,体验生信 AI 计算
运维·服务器·人工智能