写在前面:关于深度学习#
深度学习是什么#
深度学习是机器学习的一个分支,而机器学习又是人工智能(AI)的一部分。可以这样理解它们的关系:
人工智能:让机器展现出需要人类智能才能完成的能力(如识别图像、理解语言)
机器学习:让机器从数据中自动学习规律,而不是通过显式编程
深度学习:使用多层神经网络进行机器学习的方法
graph TD
AI[人工智能<br/>Artificial Intelligence] --> ML[机器学习<br/>Machine Learning]
ML --> DL[深度学习<br/>Deep Learning]
ML --> SL[监督学习]
ML --> UL[无监督学习]
DL --> CV[计算机视觉]
DL --> NLP[自然语言处理]
深度学习之所以"深",是因为它的网络结构有很多层。每一层都会从数据中提取不同层次的特征:浅层识别边缘和纹理,深层识别物体部件和语义概念。这种层次化的特征提取,让深度学习在图像、语音、文本等领域取得了突破性进展。
黑盒与炼丹#
为什么叫炼丹#
老一代深度学习研究者常自嘲说自己在"炼丹"。这个说法虽然调侃,但确实抓住了深度学习的某些特点:
配方复杂:学习率、批大小、网络结构、正则化参数…每个选择都可能影响结果
过程不可控:同样的代码跑两次,结果可能略有不同(随机初始化、数据打乱)
结果难预测:理论上合理的改动,实践中可能完全无效甚至适得其反
经验重于理论:很多时候靠的是"试试就知道",而不是严密的数学推导
但炼丹也有科学方法#
虽然我们自嘲炼丹,但这并不意味着深度学习完全是玄学。好的"炼丹师"会:
做对照实验:改变一个变量,保持其他不变,观察影响
记录实验日志:详细记录每次实验的配置和结果,建立可复现性
理解原理:知道为什么要用某个技巧(如BatchNorm是为了解决内部协变量偏移)
系统性调参:不是随机尝试,而是按重要性排序(学习率 > 网络结构 > 优化器 > …)
黑盒不等于不可理解#
深度学习模型常被批评为"黑盒"——输入进去,输出出来,中间发生了什么不知道。但实际上,我们有越来越多的工具来理解模型:
特征可视化:看卷积层在关注图像的哪些部分
注意力热图:看Transformer在处理文本时关注了哪些词(详见 Transformer:注意力的极致)
消融实验:去掉某个模块,看性能下降多少,从而判断其重要性
对抗样本分析:通过构造特殊输入,理解模型的决策边界
这些方法让我们能够"打开"黑盒,虽然不能完全理解每一个细节,但至少知道模型在做决策时考虑了哪些因素。
你需要的心态#
理论与实践并重#
深度学习是一个理论与实践紧密结合的领域。只懂理论不会写代码,你无法验证想法;只写代码不懂理论,你只能在已知范围内打转。
建议的学习方式是:
先理解原理:知道某个技术为什么有效(如:Dropout是集成学习的近似)
再动手实现:用自己的代码复现一遍,加深理解
最后做实验:在自己的数据集上验证,观察实际效果
培养直觉#
在深度学习领域,有时候直觉比公式更重要。当你看到一个新的架构时,能够凭直觉判断"这个设计会有效吗"比能够推导反向传播公式更有价值。
培养直觉的方法:
多看架构:了解经典网络的设计思路和演进历程
多做实验:亲手调参,感受不同选择的影响
多思考"为什么":不是记住"这样做有效",而是理解"为什么有效"
记住,深度学习领域很多"真理"都是暂时的。五年前的最佳实践,今天可能已经被淘汰。只有培养出好的直觉,才能在这个快速变化的领域保持竞争力。
保持怀疑精神#
深度学习领域充斥着各种说法:
“这个架构在ImageNet上达到了SOTA”
“我们的方法比基线提高了5%”
“这个技巧对所有任务都有效”
作为学习者,你需要保持怀疑:
质疑结果:5%的提升是统计显著的吗?测试集有没有泄露?
质疑结论:在一个数据集上的有效,能推广到其他数据集吗?
质疑论文:作者有没有隐藏负面结果?对比的基线是不是太弱?
质疑权威:即使是大佬说的,也要有独立判断
怀疑精神不是为了抬杠,而是为了建立真正可靠的知识。当你能够分辨哪些是可靠的结论、哪些是过度宣传时,你就成为了合格的深度学习从业者。
耐心与迭代#
最后,学习深度学习需要耐心。不要指望看一遍材料就能完全理解,也不要因为第一次实验失败就气馁。
反复阅读:第一遍可能只看懂30%,第二遍60%,第三遍90%
多次实验:调参很少一次成功,记录每次结果,逐步逼近最优
接受失败:很多想法最终证明是无效的,但这本身就是学习过程
记住,即使是顶级研究者,大部分想法也是失败的。区别在于,他们能够从失败中提取信息,快速迭代到下一个想法。
如何使用这份材料#
这份材料的设计遵循了上述学习理念:
从直觉出发:每个概念都先建立直觉理解,再深入数学细节
理论与实践结合:每个理论点都有对应的代码实现和实验
强调对比和怀疑:鼓励你质疑、实验、形成自己的判断
渐进式深入:从基础概念逐步过渡到前沿技术
建议的学习方式是:先通读建立整体认知,再精读理解细节,最后动手实验验证。遇到不懂的地方,可以暂时跳过,很多时候后面的内容会帮助理解前面的概念。
与鱼书配合阅读#
如果你正在读斋藤康毅的《深度学习入门:基于Python的理论与实现》(俗称"鱼书"),那么恭喜你——你手里拿的是深度学习领域口碑最好的入门书之一。本书和鱼书不是替代关系,而是互补关系。
鱼书讲什么#
鱼书共8章,从Python基础出发,不依赖任何外部库,只用NumPy从零开始手写:
章节 |
内容 |
鱼书的做法 |
|---|---|---|
第1章 |
Python入门 |
复习基础,熟悉NumPy |
第2章 |
感知机 |
用Python实现逻辑门,理解"权重+偏置" |
第3章 |
神经网络 |
手写sigmoid、softmax、3层网络 |
第4章 |
神经网络的学习 |
梯度下降、损失函数、数值微分 |
第5章 |
误差反向传播法 |
计算图——鱼书最精彩的部分 |
第6章 |
与学习相关的技巧 |
参数更新(SGD/Momentum/Adam)、BatchNorm、正则化 |
第7章 |
卷积神经网络 |
im2col、卷积/池化的手工实现 |
第8章 |
深度学习 |
深层网络、历史(AlexNet/VGG/ResNet)、应用 |
鱼书的核心理念是:“只有做出来才能真正理解”。它强迫你亲手写每一行代码,让你明白PyTorch里那些.backward()、nn.Conv2d背后到底发生了什么。
鱼书第1~2章与本材料的衔接:鱼书第1章(Python/NumPy)和第2章(感知机)非常基础。本材料默认读者已经会用Python和NumPy,所以如果你 Python 完全不熟,建议先快速过一遍鱼书第1章;如果你已经能熟练写 NumPy 数组操作,这两章可以跳过,直接从第3章开始配着本材料读。
怎么配合读#
场景 |
建议 |
|---|---|
你完全零基础 |
先读鱼书第1~3章,再读本材料的数学基础和神经网络基础 |
你懂Python但不懂反向传播 |
鱼书第5章(计算图)+ 本材料数学基础,两手抓 |
你会跑PyTorch但不懂原理 |
鱼书第4~6章(梯度下降、更新技巧)+ 本材料对应理论,填坑 |
你想参加比赛/做项目 |
鱼书第7章(CNN手写实现)+ 本材料CNN消融研究+迁移学习,实战起飞 |
你卡在某个概念 |
鱼书用代码讲,本材料用直觉和类比讲,两边对照 |
一个简单的阅读策略:
并行推进:鱼书读一章,本材料读对应章节
鱼书第3章(神经网络)→ 本材料翻越两座山:CNN 三十年攀登史
鱼书第5章(反向传播)→ 本材料深度学习核心数学基础
鱼书第7章(CNN)→ 本材料拆开看看:CNN 消融研究
交叉验证:鱼书教会你"怎么造轮子",本材料教会你"怎么开车"+“为什么这样设计车”。当你在本材料看到
nn.Conv2d时,鱼书第7章让你知道它内部是怎么做im2col和矩阵乘法的。
典型学习路径示例(按周规划)#
如果你完全没有自学规划,这里有一个8周并行推进方案。每周大约投入 6~10 小时:
周次 |
鱼书章节 |
本材料章节 |
核心目标 |
|---|---|---|---|
第1周 |
第1章(Python复习) |
补齐 NumPy/Python,建立数学工具箱 |
|
第2周 |
第3章(神经网络) |
深度学习核心数学基础(续) |
前向传播、损失函数、梯度下降——数学打底 |
第3周 |
第5章(误差反向传播) |
深度学习核心数学基础(反向传播) |
计算图 + 链式法则——全书最难,单独一周消化 |
第4周 |
— |
前3周数学储备已够,正式上手 PyTorch:张量、自动微分、训练循环 |
|
第5周 |
第6章(学习技巧) |
优化器、BatchNorm、正则化 → 用 PyTorch 写出第一个 LeNet |
|
第6周 |
第7章(CNN手写实现) |
对照鱼书 im2col 内部机制 → 拆开 LeNet 验证每个组件贡献 |
|
第7周 |
第8章(深度学习历史) |
AlexNet→Inception→ResNet→MobileNet→EfficientNet 全景 |
|
第8周 |
— |
二选一:端到端部署上线,或迁移学习做新任务——完成第一个项目 |
灵活调整:如果你已经懂 Python,第1周可以压缩到 2 天;第8周如果想两个都学,可以延长到第9周。
一句话总结#
鱼书是 “从泥土里把神经网络种出来”,本材料是 “站在山上看清森林的地图”。两本对照,既知道根扎多深,也看得见枝伸多远。
现在,你已经对深度学习有了初步的认识,也了解了需要什么样的心态,还知道如何把手里的材料与经典教材配合。接下来,让我们从数学基础开始,一步步揭开深度学习的面纱。
祝学习愉快,炼丹顺利。
贡献者与修订历史
查看详细修订记录
-
2af69852026-06-14 - Heyan Zhu: feat(model-serving): add quantization and pruning chapter, restructure for general-first narrative -
dc35df22026-06-14 - Heyan Zhu: refactor: unify into two-chapter mountain-climbing narrative -
7e2f65a2026-06-12 - Heyan Zhu: docs: add fish book collab guide, nvidia driver/prime/dri3 setup, R470 branch -
8eb32752026-05-09 - Heyan Zhu: feat(sequence-modeling): add new chapter on sequence modeling from RNN to Mamba -
f159d562026-05-08 - Heyan Zhu: fix: address complaints from the linter -
b20ef3e2026-04-28 - Heyan Zhu: docs: update pytorch practice section with detailed explanations and code examples -
9446c122026-04-26 - Heyan Zhu: docs: update index and add preface with humorous tone