实用深度学习是一个具有挑战性的入门课题。
它通常以自下而上的方式教授,要求您首先熟悉线性代数、微积分和数学优化,然后才能学习神经网络技术。这可能需要数年时间,而大多数背景理论将无助于您快速获得良好的结果。
相反,可以采用自顶向下的方法,即您首先学习如何在现实世界问题上通过深度学习模型取得成果,然后再学习更多关于这些方法如何工作的知识。
这正是 fast.ai 广受欢迎的课程“实用深度学习(面向程序员)”中所采用的方法。
在本文中,您将了解 fast.ai 课程,该课程面向希望入门并擅长深度学习的开发人员,包括对课程本身的概述、课程中引入的最佳实践以及对整个课程的讨论和评论。
使用我的新书 《Python 深度学习》来启动您的项目,其中包含分步教程和所有示例的Python源代码文件。
让我们开始吧。
- 更新于 2019 年 11 月:修复了课程更新至 2019 年版后损坏的链接。

实用深度学习(面向程序员)评论
照片由 Fraser Mummery 拍摄,保留部分权利。
概述
本教程分为四个部分;它们是
- 课程概述
- 课程分解
- 最佳实践
- 讨论与评测
课程概述
fast.ai 是一个提供免费实践机器学习和深度学习培训的小型组织。
他们的使命是让深度学习对所有人,尤其是开发人员,都能轻松获得。
在撰写本文时,fast.ai 提供四门课程;它们是:
该组织由 Jeremy Howard(Enlitic、Kaggle 等)和 Rachel Thomas(旧金山大学、Uber 等)创立。
Jeremy 是一位世界级的实践者,他首先在 Kaggle 上取得了顶尖的成绩,然后加入了该公司。他关于机器学习或深度学习实践的任何言论都应该被认真对待。Rachel 拥有合作关系所需的学术(博士)和数学功底,并且已经提供了关于深度学习一些相关数学基础的姊妹课程。
大多数课程首先由 Jeremy 或 Rachel 在旧金山大学讲授,然后视频和课程材料免费提供。
其中最重要也是他们最受欢迎的课程是:
- 实用深度学习(面向程序员)(第一部分).
该课程于 2016 年底首次讲授并提供。它最近(2017 年底)进行了更新或重新创建,这是撰写本文时课程的当前版本。这可能会随着未来的更新而改变。
重要的是,课程从 v1 到 v2 的主要变化是将 Keras 深度学习框架(Google TensorFlow 的封装器)转向了他们自己开源的 fast.ai 库,该库为 Facebook 的 PyTorch 深度学习框架提供了封装器。
这种从 Keras 转向 PyTorch 的举动是为了灵活性。他们自己的封装器捕获了许多最先进的方法和最佳实践,但也隐藏了许多细节。它可能更适合实践者,而不适合学术界,不像更通用的 Keras。
课程分解
更新:我回顾了 2018 年的课程版本,尽管 2019 年版本现已可用。
课程的完整讲座列表如下(嵌入式视频链接)。
- 1. 识别猫和狗。
- 2. 改进您的图像分类器。
- 3. 理解卷积。
- 4. 结构化、时间序列与语言模型。
- 5. 协同过滤。训练循环内部。
- 6. 解释嵌入。从零开始构建 RNN。
- 7. 从零开始构建 Resnets。
我更喜欢以双倍速度观看视频并做笔记。所有视频都可以在 YouTube 播放列表中找到。

嵌入式讲座示例及课程材料
该课程采用自顶向下而非自下而上的方法进行教学。具体来说,这意味着首先展示如何做某事,然后稍后重复该过程,但展示所有细节。这并不意味着后续的学习内容必然包含数学和理论;而是指如何实现结果的实际考虑。
这是一种优秀的学习材料的方法。第三讲中的一个幻灯片(在课程中多次出现)提供了该深度学习方法的概述;具体来说,前几个教程演示了如何使用计算机视觉、结构化数据(表格数据)、自然语言处理和协同过滤来取得成果,然后这些主题再次按相反的顺序进行讲解,但模型是从头开始开发的,以展示它们的工作原理(即,而不是解释它们为何如此工作)。

课程结构概述
最佳实践
课程的一个重点是教授最佳实践。
这些是使用深度学习方法处理和解决特定预测建模问题的推荐方法。
最佳实践在流程(例如,处理新预测建模问题的连贯工作方式)和技术方面都有体现。它们也内置在所有讲座中使用的名为 fast.ai 的 PyTorch 封装器中。
许多最佳实践都得到了涵盖,其中一些很微妙,因为它们体现在引入主题的方式上,而不是将实践作为常规方法的替代方案来强调。
已有尝试对最佳实践进行编目;例如:
查看我的笔记,我学到的一些最佳实践如下:
- 在计算机视觉中,始终使用迁移学习(例如 ImageNet 模型)作为起点,但要仔细选择模型中添加新层的点。
- 在计算机视觉的迁移学习中,尝试为不同层使用不同的学习率(例如,差分学习)。
- 使用测试时增强,让模型有多次机会做出正确预测(太棒了!)。
- 先用非常小的图像训练模型,然后用更大的图像重新训练(例如,逐步调整图像大小)。
- 使用周期性学习率来快速找到 SGD 的良好学习率(例如,学习率查找器)。
- 用于训练神经网络的周期性学习率, 2015.
- 在训练过程中使用带重启的余弦退火学习率调度。
- SGDR:带暖启动的随机梯度下降, 2016.
- 将迁移学习用于语言模型。
- 用于文本分类的通用语言模型微调, 2018.
- 更广泛地使用嵌入层,例如用于所有分类输入变量,而不仅仅是单词。
- 在协同过滤中为电影和用户使用嵌入层。
我了解了所有这些方法,只是没有考虑它们应该是起点(例如,最佳实践)。相反,我将它们视为在需要时带到项目中的工具,以提高性能。

轻松训练世界级图像分类器的简单步骤
讨论与评测
这门课程非常出色。
- Jeremy 是一位大师级的实践者,也是一位出色的沟通者。
- 细节程度恰到好处:先是高级,然后是低级,但都是关于如何操作,而不是为什么。
- 注重应用而非技术。
如果您是深度学习实践者,或者想成为一名深度学习实践者,那么这门课程是必看的。
视频对我来说太长了。我使用了 YouTube 播放列表,以两倍速度观看视频,同时在文本编辑器中做笔记。
在这个阶段,我对使用 fast.ai 库或 pytorch 不感兴趣,因此我略读或跳过了与代码相关的部分。总的来说,我宁愿不通过视频学习代码,所以我总是会跳过这些部分。
这些讲座的价值在于了解 Jeremy 如何使用深度学习方法处理预测建模问题的具体步骤和思路。因为他专注于良好且快速的结果,所以您能获得您真正需要知道的东西,而无需像其他人那样必须先了解大量细节和背景知识才能切入正题。
有点像吴恩达,他解释一切都非常简单,让您充满信心去拿起工具并开始使用它们。
他在 Kaggle 竞赛中的能力让您想立即深入研究过去的竞赛数据集来测试这些方法。
最后,他在论坛上培养的社区感以及对他教学内容的博客总结,让您也想加入并贡献。
同样,如果您关心成为一名深度学习实践者,这是必看的。
进一步阅读
如果您想深入了解,本节提供了更多关于该主题的资源。
- 实用深度学习(面向程序员)第一部分,主页.
- 深度学习证书第一部分,主页.
- 实用深度学习(面向程序员)1,YouTube 播放列表(2018 年).
- 实用深度学习(面向程序员),Python Notebooks.
- fastai PyTorch 封装器.
- Jeremy Howard 的 fastai v1 深度学习框架,播客采访.
总结
在本文中,您了解了 fast.ai 课程,该课程面向希望入门并擅长深度学习的开发人员。
您是否参加过这门课程或学习过其中的任何材料?
请在下方的评论中告诉我您的想法。
你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。
太好了!我之前从未见过这些,直到在这里找到它们。我一定会去学习的。感谢 Jason 的分享。
很高兴它有帮助!
信息丰富的文章,深度学习和机器学习正在接管未来。感谢分享。
不客气。
是的,这些方法在实践中非常有用。
感谢这篇文章。另外,我需要您的建议。我目前正在 Udemy 上学习机器学习 a-z,然后考虑去 fast.ai。这好吗,还是我也应该参加 Andrew Ng 的课程?
我建议一次只学习一门课程。
Jason 您好,感谢您关于 fast.ai 的博文。我想知道在开始深度学习课程之前,我们是否需要学习他们的机器学习和线性代数课程!
不,您可以直接开始课程。
Josh 您好,我必须说您的写作非常出色。每一篇文章都是瑰宝。这篇写得非常详细,我学到了很多,继续保持好工作!
Antonius Kasbergen
谢谢。
我参加了这门课程,去年秋天花了很多时间(每周 30 多个小时)学习,我不推荐参加。解释原因的话,可能需要一篇和本文一样长的博文。这门课程更适合已有经验的数据科学家或深度学习从业者。它不适合初学者。
谢谢 Terrance。
Jason 您好。感谢您的精彩评论!我刚完成了 Andrew Ng 的机器学习课程,非常喜欢。我只是希望作业能更实用。这门 fast.ai 课程是我下一步的好选择吗?
谢谢。
是的,这可能是一个有趣的下一步。
有些链接已损坏
谢谢,看来课程已经更新了。
我会抽出时间更新链接。
这篇文章非常有信息量,深度学习和机器学习正在接管未来。我刚从 Edugrad 开始学习机器学习课程 http://bit.ly/370fds。
感谢分享。
谢谢。
课程讲师提到需要一年的编程经验。因此,您能否建议我需要什么样的编程知识水平才能轻松跟上课程?
谢谢你。
有一些编程经验听起来是合理的。
我是深度学习的初学者,我想要一个能从文本中提取概念的深度学习示例。
感谢您的建议。
Jason 您好,哪种深度学习方法适合从文本中进行本体学习?如果您有示例,请展示给我。
什么是本体学习?
老师/女士您好,
我目前正在进行一个名为“行人意图预测”的项目,我将使用 LSTM 进行未来帧预测。
我将为此目的使用 JAAD 数据集。
如果您有任何与“视频帧预测”相关的代码或课程或书籍,请帮助我找到它们。
谢谢你
抱歉,我没有关于这个特定问题的教程。感谢您的建议!