# 这门免费深度学习课，先跑模型再讲数学

> Jeremy Howard 只要求一年编程经验：第一课在 Kaggle 上做鸟类分类器，九节课都不用自备 GPU。

原文: https://fdetimes.net/zh/books-courses/fast-ai-practical-deep-learning-for-coders/

Practical Deep Learning for Coders 的第一课不从导数或矩阵讲起，而是从一个 Kaggle notebook 开始，名为“Is it a bird? Creating a model from your own data”。你要用自己收集的数据，做出一个鸟类识别器。

这种顺序就是整门课的理念。对想成为前线部署工程师（FDE）的开发者来说，这也正是客户现场的工作方式：先让东西在真实数据上跑起来，再去解释和调优。

## 课程由谁开设，对学员有什么要求？

课程来自 fast.ai，由 Jeremy Howard 和 Rachel Thomas 联合创办。course.fast.ai 网站称课程免费，面向已有编程经验的人。目前列出的版本是 Practical Deep Learning for Coders 2022 的 part 1：共九节课，每节约 90 分钟，视频总长约 13.5 小时。

入门门槛低得出人意料。你需要会编程，课程网站称一年经验就够，不要求大学水平的数学。

也不用买 GPU。第 1 课的主 notebook 在 Kaggle 上运行，配套书籍的 notebook 可以直接在 Google Colab 中打开，无需配置环境。

## 为什么自顶向下的学法适合 FDE？

Jeremy Howard 写道，他先让学员使用一个完整、可运行、达到业界领先水平的深度学习网络，学员马上就能用上。之后他才逐步深入讲解网络的构造。课程网站同样直白地写明第二条原则：始终通过实例教学，而不是用代数符号。

设想一个场景。一家工厂想知道 AI 能否从照片中识别出次品。按自底向上方式训练出来的工程师，会先花几周复习理论，才敢碰数据。

学过 fast.ai 第 1 课的人则会认出熟悉的结构：两类图片，“次品”和“非次品”，替代了“鸟”和“不是鸟”。

因此第一个演示几天就能做出来，而不是几周。而且它跑在客户自己的照片上，不是示例数据集。

**要点:** 先拿到能跑的模型，再逐层深入底下的原理。

这就是为考试学 ML 和为部署学 ML 的区别。在原型阶段，一个在客户自己图片上运行的模型，通常比任何公式都更有说服力，而这门课训练的正是这种本能。

用实例教学，在展示结果时也有帮助。对运营经理来说，模型判对的五张图和判错的五张图，通常比任何损失曲线都更好理解。

## 按什么顺序学，才不会被压垮？

合理的路径分三步。第一步是 Part 1：按顺序学完九节课，并重跑每个 notebook。第二步是官方配套书《Deep Learning for Coders with Fastai and PyTorch: AI Applications Without a PhD》，作者是 Jeremy Howard 和 Sylvain Gugger，O'Reilly 于 2020 年出版。

书中的 notebook 是整门课的基础，作者在 GitHub 的 fastai/fastbook 仓库中免费公开。

这本书是一次大规模发布的一部分：2020 年 8 月 21 日，fast.ai 同时发布了 2020 版课程、fastai v2 库和一本 600 页的书。配合视频读书，你就有了一份可以随时查阅的文字版本，这是 90 分钟的视频难以提供的。

第三步，只有在真正扎实之后，才学 Part 2：“From Deep Learning Foundations to Stable Diffusion”。

它于 2023 年 4 月 4 日免费发布，视频超过 30 小时，教你从零实现 Stable Diffusion 算法。fast.ai 明确表示，要充分吃透 Part 2，你应当已经是一名相当自信的深度学习从业者。所以 Part 1 是不能跳过的台阶。

给上班族的建议安排：第一周只学第 1 课，在 notebook 里换上自己的数据。接下来三周学第 2 至 9 课，每周两到三节。再用两周在 Colab 上重读书中对应章节，最后两周做一个小项目。

如果目标是六个月内拿到 FDE 岗位，Part 1 加上这本书足以打好基础。Part 2 适合想深入理解生成模型的人，或者瞄准围绕图像模型做产品的公司的人。

## 让这门课白学的几个错误

最常见的错误是太早跳到 Part 2，因为 Stable Diffusion 听上去比鸟类分类更带劲。fast.ai 自己设定了前提：你应当对深度学习相当有把握。无视这一点，你只会照抄代码，却不明白它为什么能跑。

第二个错误是把 notebook 从头跑到尾就算学会了。第一个 notebook 的标题说得很清楚：用你自己的数据创建模型。如果你从没换上自己的数据，也没看过模型在哪里出错，那你只是看了一场演示，并没有做出原型。

客户数据很少像示例数据集那样干净。在学习阶段就练习如何收集、筛选和标注真实数据，是值得的投入。

第三个错误是只看视频、不读书。视频给你节奏；书中的 notebook 给你一个可以停下来、改一行代码、看看会发生什么的地方。

## 把课程变成简历上的证据

结业证书很难说明你在真实数据上做原型的能力。一个故事清楚的小项目则有说服力得多。当 FDE 的职位描述要求快速原型开发或处理客户数据时，这个项目就是直接的回答。

拿第 1 课的 notebook，把鸟换成一个贴近真实业务的问题，例如对发票照片分类，或者判断农产品照片是否符合分级标准。

在简历上写一行：数据由你自己收集，模型由你搭建，并分析了模型出错的案例。这一行说明你在真实数据上走完了一个完整的原型闭环，从原始图片到一个能运行、而且你清楚其失败原因的模型。

这门课的理论并不比大学教材更强。它的价值在于培养部署工作最需要的习惯：东西没跑起来之前，不谈理论。

**本周动手试试:**

- 打开第 1 课的 Kaggle notebook“Is it a bird?”，从头到尾跑一遍，再把两类图片换成你关心的某个问题中的两类图片
- 写一页总结：数据从哪里来，模型判错了哪些图片，下一步你会向客户提什么问题
- 在 Google Colab 中打开 fastbook 第 1 章的 notebook，与刚看完的课程对照

## 信源

- [Practical Deep Learning](https://course.fast.ai/)

- [Practical Deep Learning – Lesson 1](https://course.fast.ai/Lessons/lesson1.html)

- [From Deep Learning Foundations to Stable Diffusion](https://www.fast.ai/posts/2023-04-04-part2-2023.html)

- [fastai/fastbook: The fastai book, published as Jupyter Notebooks](https://github.com/fastai/fastbook)

- [fast.ai – Making neural nets uncool again](https://www.fast.ai/)
