前言

欢迎来到 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 年代就已经存在,它的真正爆发和走向成熟主要归功于以下三个核心驱动力:

  1. 数据量爆炸:ImageNet(2009)、维基百科、YouTube 等大规模标注数据集的涌现。一个粗略的经验法则是:5000 个标注样本能达到可接受的性能,而 1000 万个样本能达到或超越人类水平。你在 COMP3314 课上学 SVM 或逻辑回归时,用的往往是数百行的小型结构化数据集;而 DL 时代面对的是百万级的复杂图像和文本,数据量本身催生了方法论的彻底变革。
  2. 算力与模型规模的指数级增长:GPU 从渲染管线变成并行计算引擎,CUDA 生态成熟。这使得神经网络的规模大约每 2.4 年就能翻一倍,如今庞大的参数量使网络能够处理前所未有的复杂任务。
  3. 算法演进与基建完善: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)