1411 words
7 minutes
准确性让位于理解:为什么我重新准备了一份深度学习教程
GitHub
ulink-deeplearningclub-handouts
深度学习社教程的源码:Sphinx + Markdown,含全部章节与这篇后记。

这篇原本是那份教程的「写在后面」。教程的线上版本在这里。

致来者:

常有人问我,为什么要为社团活动重新准备这些资料,而不是直接使用现成的教材——这看起来像是在“重新发明轮子”。说实话,我自己也没有一个非常确定的答案。这些文档在我看来,更像是一页页的 PPT,而非信息完备的教程。

理论上,我当然可以直接选用几本深度学习领域的经典著作,比如斋藤康毅老师的“鱼书”。但如果只是像学校上课那样照本宣科,对于纯粹由兴趣驱动的社团来说,恐怕不太合适。这样做很可能导致参与人数随时间“指数级衰减”。我个人对这种单向灌输的模式并不认同——它更像是在把整理与消化知识的负担,从备课者转移给听讲者,效率甚至不如鼓励大家自学。

但避免糟糕的单向灌输算不上什么真正的动机,这更像是一种妥协,就像做 presentation 必须准备 slides 一样。直到 Bob 老师告诉我“搞完这一年社团,总得留下点什么”,创作的动机才真正落地。回忆大约两年前我研究 YOLOv5 时,论文和教程中出现的各种黑话总是令人困惑。他们既没有解释这些是什么,也没有解释为什么——这些黑话被以一种常人看不懂的模式放在一起,在逻辑和现实中却是行得通的。我浏览了几乎所有我找得到的文章,仍然是一头雾水,因为字里行间似乎透露着理所应当,或者作者默认了读者能够理解。为什么复杂的 PAN/FPN 有用?为什么这卷积堆起来卷来卷去就能提取特征信息?为什么 bottleneck 要先变小再变大?为啥要残差?训练为什么退火?训练多少个 epoch 比较好?什么时候结束训练?诚然,对于论文的作者和其他的学者来说,这些所谓的黑话有另一个名字:术语(terminology)——一种高效沟通的协议。但对初学者而言,这些术语背后牵扯的问题与答案太多、太复杂,似乎非得啃下厚厚的数学教材才能理解。

但是果真如此吗?一个合理的符合现实的逻辑或现象必定可以使用一个简洁易懂的自然语言描述出来,哪怕这种描述是不严谨的。在知识体系尚未建立的阶段,准确性必须让位于理解本身,因为只有能理解那些论文在讨论什么,那些文章在分析什么,我们才有资格讨论这理解本身是否准确。而过早地陷入不必要的准确的细节,正是我最开始尝试理解时犯下的错误。

问题来了,如何才能找到相对准确客观的自然语言描述呢?答案之一来自一种常见的文学手段:类比。那问题又来了,如何找到类比的对象?答案在于寻找底层逻辑的共通性——只要事物发展的核心驱动力(矛盾)类似,其表现出的现象就有共通之处。因此,选取日常生活中的常识作为类比,是合理的。对定义的理解来源于相似性,而非定义本身。

另一种方法是追寻发展的脉络。罗马不是一天建成的,因此,研究庞杂的系统,可以从它与其前代版本的演进角度入手,并尝试回答:改进/增加某个模块是为了解决什么;设计哲学的改变是为了规避什么。这或许可以一路追寻到这个复杂系统的第一个原始版本。那时候,这东西还没有变得复杂起来。

还有一种是寻找不严格的数学上的类比:将高级的复杂的操作不严谨地概括为一个已知操作的推广(比如这里 CNN 本质是在求 kernel 和特征图的滑动窗口内的部分的相似程度,通过我们都学过的点积)。

因此,为了规避过早陷入细节的问题,为了其他人不重蹈覆辙,将知识点重新梳理,用上述方式呈现出来,对初学者来说就显得尤为必要。这些资料的主要目的,并非成为面面俱到的百科全书,而是一份循序渐进的、带有解释的“知识清单”。

但是这足够吗?未必。就像那哲学三问(我是谁,从哪来,到哪去),构建知识体系也可以有精确对应的三问:这是什么,为什么会有/成立,so what。这份清单大体能回答前两问,有时也不行,但真正的理解大致产生于回答第三个问题时。因为理解本身更像是一种直觉,难以完全被语言捕捉。语言本身只能像盲人摸象一样勾勒出轮廓。

最后,希望几年后,这些文字还能帮到那些初来乍到的新朋友。也希望你能在这个社团里,找到探索世界的好奇与同行者。

2026年6月 于上海
Anson2251

准确性让位于理解:为什么我重新准备了一份深度学习教程
https://blog.ansonate.ink/posts/accuracy-yields-to-understanding/
Author
Anson2251
Published at
2026-06-11
License
CC BY-SA 4.0