这篇文章的灵感来源于一位聪明的、对深度学习感兴趣的高中生,他给我发邮件寻求建议。
问:您好,Thomas博士!我一直在努力寻找关于深度学习的优秀资源,但目前这个领域对我来说似乎相当神秘,而且技术门槛有点高。如果您不介意的话,我有几个关于学习深度学习的问题很想请教您
- 您是否找到过能很好地解释深度学习的某本书或一套书籍?我查阅过 deeplearning.net 或麻省理工学院的免费书籍等资源,但我找到的所有资源要么介绍过于简略,要么在数学上深入但完全不实用
- 您认为我现在应该首先攻克数学严谨性,还是等我进一步深入后再尝试掌握技术细节比较好?
- 当您着手解决一个数据科学问题时,您如何回答经典的“下一步尝试什么”的问题?例如,有时在 Kaggle 比赛中,我会遇到瓶颈,不知道下一步最好的做法是什么。
答:您对大多数深度学习资源要么过于简略要么过于数学化的评估非常准确!我的搭档 Jeremy Howard 和我也有同感,我们正在努力创建更实用的资源。我们很快将基于今年秋天与 旧金山大学数据学院 合作教授的面授课程制作一门 MOOC。在此之前,以下是我的推荐
在我看来,现有最好的资源是 斯坦福大学的 CNN 课程。我建议完成所有作业。
以下是一些我最喜欢的、适合深度学习初学者的教程、博客文章和视频
卷积
- 可视化解释图像核 - 绝佳的卷积交互式可视化
- 理解卷积 - 深入探讨卷积,不仅关注图像处理应用,还采取更通用的方法
- Jeremy 的 卷积入门 视频从零开始讲解并构建卷积,并介绍了最大池化
- 这篇博客文章 是一篇关于 CNN 的不错的入门概述,包括卷积和最大池化。
- 对一项图像分类问题的 Kaggle 获胜方案 进行了精彩深入的探讨
梯度下降
- 在他关于 DL 和随机梯度下降的入门 视频中,Jeremy 使用 Excel 解释(并简化)了 SGD 的工作原理。
- 这里提供了详细的教程,解释并用 Python 实现 梯度下降 和 随机梯度下降。
RNNs
- Jeremy 的 RNN 入门 视频是一段包含代码的入门介绍。
- Andrej Karpathy 关于 RNN 惊人的有效性 的文章包含许多有趣的例子。
词嵌入
- Chris Olah 关于 语言表示可视化 的启发性文章
至于您关于是否应该首先攻克数学严谨性的问题,我认为最好专注于实际编程,因为这样您可以进行实验,并对您正在做的事情建立良好的直觉和理解。数学最好是按需学习——如果您在学习过程中遇到了不熟悉的数学概念而无法理解,请前往 可汗学院 或观看绝对精彩的 3Blue1Brown 线性代数的本质 视频(非常适合视觉思考者),然后开始学习!上面 Jeremy 的 RNN 教程就是一个很好的面向代码的深度学习方法的例子,尽管我知道鉴于现有资源,这可能有些困难。
您正在参加 Kaggle 比赛,这很棒。这是一种绝佳的学习方式,也能检验您是否理解所读理论。我需要更多地了解您正在尝试解决的问题,才能给出下一步建议。