前言
欢迎来到 Deep Learning 专栏。我们假设你修过一门传统机器学习课程(比如 HKU 的 COMP3314),或者对 ML 有基本了解;你也可能已经装过 PyTorch、跑通过几个示例项目,但对背后的数学原理还没有清晰的理解。这个专栏的目标是:从零开始,系统地拆解深度学习的核心概念和算法,让你不仅"能用",还能"懂"。
传统机器学习
想象一下我们小时候,父母是怎么教我们认识世界的。当你看到一只动物,父母可能会说:“这是一只猫——它有四条腿、毛茸茸的身体、喜欢吃鱼。”
我们会发现,想要区分一个东西是什么,我们会捕捉它的特征(四条腿、毛茸茸、喜欢吃鱼),并把这些特征和一个标签(猫)联系起来。这就是传统机器学习的核心思想:特征工程 + 模型训练。
在传统 ML 中,人类专家负责设计特征(例如图像的边缘直方图、纹理描述子),然后让算法(如 SVM、决策树)学习这些特征与标签之间的映射。这类方法在简单任务上效果不错,但当数据变得复杂——高分辨率图像、自然语言、原始音频——手工设计特征就成了瓶颈:你很难用几百个手工特征去描述一只猫的全部视觉变化。模型的性能天花板,本质上取决于特征的质量。
深度学习:为什么要"深"
为什么出现了深度学习?
在传统机器学习中,面对极其复杂且高维的数据时,依赖人工提取特征(比如手动设计边缘检测算子)遇到了难以逾越的瓶颈。深度学习的出现,正是为了解决“特征工程”的局限性。它通过引入多层次的组合原理,让模型自己从数据中学习表示。简单来说,较低的隐藏层学习简单的概念(如边缘、颜色),较高的隐藏层将这些简单概念组合成复杂的概念(如汽车、狗)。虽然早期的神经网络深受生物大脑机制启发,但现代深度学习已经不再将神经科学作为刚性指导,而是更多地依赖于应用数学(如线性代数、概率论、数值优化)来进行构建。
深度学习的历史
深度学习看似是近几年才爆发的全新领域,但实际上它已经经历了漫长的发展、多次改名与起伏。它的历史大致可以划分为三次浪潮:
第一次浪潮:控制论(Cybernetics,1940s–1960s) — 以生物学习理论为基础,出现了最早的线性模型(感知机 Perceptron、ADALINE)。当时人们希望通过逆向大脑的计算原理来建立智能。然而早期的线性模型存在严重局限——连简单的异或(XOR)函数都无法学习——直接导致了神经网络研究的第一次大衰退。
第二次浪潮:联结主义(Connectionism,1980s–1990s) — 核心思想是”大量简单的计算单元连接在一起时可以实现智能行为”。这一时期提出了对今天至关重要的分布式表示(Distributed Representation) 和 反向传播(Backpropagation) 算法,并引入了处理序列数据的 LSTM。但后来因投资者对 AI 的期望过高而不切实际,加之 SVM 等核方法的崛起,神经网络再次陷入低谷。
第三次浪潮:深度学习复兴(2006 年至今) — 以逐层贪婪预训练(Greedy Layer-wise Pretraining)为突破口,学术界终于找到了有效训练深层网络的方法。深度网络在测试样例上的泛化能力大幅提升,在图像识别、语音识别等复杂任务上全面超越了传统基于手工特征的 AI 系统。
为什么深度学习这几年才爆发
深度学习的核心算法(如反向传播)其实在 80 年代就已经存在,它的真正爆发和走向成熟主要归功于以下三个核心驱动力:
- 数据量爆炸:ImageNet(2009)、维基百科、YouTube 等大规模标注数据集的涌现。一个粗略的经验法则是:5000 个标注样本能达到可接受的性能,而 1000 万个样本能达到或超越人类水平。你在 COMP3314 课上学 SVM 或逻辑回归时,用的往往是数百行的小型结构化数据集;而 DL 时代面对的是百万级的复杂图像和文本,数据量本身催生了方法论的彻底变革。
- 算力与模型规模的指数级增长:GPU 从渲染管线变成并行计算引擎,CUDA 生态成熟。这使得神经网络的规模大约每 2.4 年就能翻一倍,如今庞大的参数量使网络能够处理前所未有的复杂任务。
- 算法演进与基建完善:ReLU 等现代激活函数的广泛使用解决了梯度消失问题、Batch Normalization 加速了训练、ResNet 让训练 100+ 层极深网络成为可能。同时,TensorFlow、PyTorch 等软件库极大降低了工程实现的门槛。
传统 ML vs 深度学习:一张对比表
| 维度 | 传统 ML(SVM、XGBoost) | 深度学习 |
|---|---|---|
| 特征提取 | 人工设计,依赖领域知识 | 网络自动学习层次化表示 |
| 数据需求 | 几百到几千可训练 | 通常需要大量标注数据 |
| 计算资源 | CPU 足够 | GPU/TPU,训练成本高 |
| 可解释性 | 较高(特征权重可读) | 较低,常被称为"黑盒" |
| 代表任务 | 表格数据、小样本分类 | 图像、语音、NLP、生成 |
什么时候用传统 ML,什么时候用 DL
一个快速决策框架:
- 数据量小(<1000 样本)、特征含义明确(如房价的面积、卧室数、地段)→ 传统 ML。XGBoost 在结构化数据上几乎是永远的第一基线。
- 数据量足够、输入为原始信号(像素、波形、文本 token)→ DL。因为手工特征在这种场景下的天花板很低。
- 需要可解释的决策理由(医疗诊断、信贷审批)→ 优先考虑传统 ML,或结合可解释 AI(XAI)技术对 DL 输出做后验分析。
- 算力预算有限、需要快速交付 → 传统 ML。一个 XGBoost 模型可能几分钟训完,而一个大模型需要几周和数千美元的电费。
这四条的底线是:不要用 DL 去解决一个线性回归就能搞定的问题。 深度学习不是银弹,它是工具箱里最重的那把锤子——只有钉子是"非结构化原始数据"时才值得拿起来。
本专栏将覆盖什么
- 阶段零(剩余):安装 PyTorch,理解 Tensor 与自动求导
- 阶段一:梯度下降的数学与手写实现
- 阶段二:神经网络的底层——反向传播全推导、NumPy 裸写 MLP
- 阶段三:CNN——卷积的数学、经典架构、图像分类实战
- 阶段四:Transformer——Self-Attention、位置编码、从零实现
- 阶段五:前沿——ViT、CLIP、VLA 模型概览
参考
Deep Learning - Ian Goodfellow, Yoshua Bengio, Aaron Courville (2016)