上周在 twitter 上看到一篇关于深度学习入门的帖子,翻译完之后一直没时间发出来,今天抽空整理完分享一下。

核心观点

这篇文章详细描述了作者如何从一个机器学习初学者转变为深度学习领域的专家,并为那些对深度学习感兴趣的读者提供了一系列学习策略和资源。

  1. 背景和动机:作者拥有非计算机科学背景,但因为对深度学习的强烈兴趣,他决定克服初学者的困难,重新学习这一领域。

  2. 自学之路:作者强调,他的深度学习技能主要是通过自学获得的。他最初通过Kaggle竞赛接触机器学习,但后来意识到这种方式虽然快速,却无法深入理解深度学习的数学和算法基础。

  3. 技能和工具:作者认为扎实的Python编程能力对于深度学习非常重要,因为Python是AI领域的主流语言。此外,数据清洗和处理技能占据了他工作的大部分时间,这些是进入AI领域不可或缺的实用技能。

  4. 学习策略和资源

    • 作者选择了自底向上的学习方法,首先通过阅读《深度学习》这本书建立坚实的理论基础。
    • 为了更好地理解复杂的数学概念和术语,他建议通过绘图和编程实践来辅助学习。
    • 提及了多个高质量的在线资源,如fast.ai的课程和Andrej Karpathy的视频,这些都是优秀的自学材料。
    • 推荐使用Google Colab和Weights and Biases这样的工具来访问GPU资源并监控训练过程。
  5. 应用和实践

    • 在掌握理论后,作者开始研究并实现从2015年到2022年间的重要深度学习论文,如Transformers和视觉Transformer等,进一步深化了他对深度学习架构的理解。
    • 他还创建了一个名为“从零到GPT”的课程,通过教学来加深自己对深度学习的理解。
  6. 实用主义的重要性:作者强调,在深度学习中,能够识别何时应深入钻研,何时应追求快速简便的解决方案是一个重要的技能。

原文

我曾经运营了一家名为 Dataquest 的教育公司长达8年。去年,我重新产生了创造的渴望。深度学习对我来说一直很有吸引力,但我对它知之甚少,因此我决定解决这个问题。从那时起,我训练了许多模型(其中几个达到了开源领域的最先进水平),开发了两个GitHub星标超过5000的,并最近接受了 answer.ai 的工作邀请,该研究所由 Jeremy Howard 创立。我这样描述是为了大致勾勒出我的学习历程。在本文中,我将更详细地讲述我是如何学习深度学习的。希望这对你的学习之旅有所帮助。

我并非在学校里学到这些技能的。我本科主修美国历史,期间挂了不少科。2012年,我涉足了机器学习和Python编程,但我曾自认为深度学习对我而言过于复杂。其中一个原因是我通过参加Kaggle竞赛来学习。Kaggle竞赛是迅速学习的好方法,但可能会让你在基础知识上有所欠缺——比如算法的数学原理。

当深度学习开始流行,它非常依赖数学,我认为自己永远无法理解它。当然,这种看法是错误的,我在十年后证明了这一点,但接近问题的角度决定了一切。我第一次学习深度学习是从顶向下的方式,即直接组装模型而不理解其工作原理。最终我遇到了障碍,无法突破。

去年我再次学习深度学习时,已经具备了一些有用的技能。最重要的是扎实的Python编程能力。尽管有人尝试改变,但Python仍然是AI领域的通用语言。如果你想进入AI领域,那就从精通编程开始吧。

不论我身处AI的哪个阶段,数据清洗都占了我工作的超过70%。如果你从事纯理论研究或者只处理简单问题,可能可以避免数据处理,但在其他情况下,数据处理技能是必不可少的。

还有一个更加抽象的技能,我称之为实用主义。深度学习中充满了各种诱惑,从“什么是完美的基模型?”到“如果我去掉这里的sigmoid会怎样?”虽然有些探索是有价值的,但大部分都会耗费大量时间。能够识别何时应深入钻研,何时应追求快速简便的解决方案,这一点非常重要。

这次,我决定从底层基础开始学习。我精读了一本书,名为《深度学习》。这本书虽已出版数年,但依然是学习深度学习不可多得的资源。建议慢慢阅读。书中许多术语和数学公式初看会让人生疏——需要查阅资料。你可能需要通过绘图或编程来帮助理解这些概念——给自己足够的时间和空间去做这些。如果你觉得数学部分有难度,可以辅以阅读《机器学习的数学》。虽然我个人未参与,但fast.ai的课程和Andrej Karpathy的视频都是非常优质的学习资源。

尽管在一个向Transformer全面过渡的世界里,CNN或RNN可能显得有些过时,但是CNN依然广泛应用于多个领域,RNN在某些方面也是旧技术重用

当你读完这本书的前两部分之后(第三部分可以跳过),你应该能够自己用纯numpy编码实现任何主流的神经网络架构,包括前向和后向传播。

我在阅读《深度学习》书的同时,开始编写了一个课程,名为从零到GPT。教学是加深理解的最好方式,我发现自己进入了一个良性循环:学习新知识,梳理并描绘不理解的部分,然后教授它。

在读完这本书之后,你将对2015年以来的深度学习有一个全面的理解。随后,我开始研究一些从2015年到2022年间的重要深度学习论文,并在PyTorch中实现这些理论。你可以使用 Google Colab 来免费或低成本地访问GPU资源,并借助 Weights and Biases 来监控你的训练进程。

以下是一些关键论文的非全面列表:

深入这些文献之后,你应该能够理解关于深度学习模型架构的大多数讨论。