Skip to content

深度学习

不动手学深度学习

本段文字具有笔者极强主观看法,请酌情参考。

bilibili.com 上有李沐上传的一系列著名的深度学习课程,叫做动手学深度学习(d2l),其因为超高的质量以及详细的指导而广受好评,而这份教程的特色就在于,除了讲解知识点之外,李沐同时提供了详细的代码指导。可能确实在曾几何时,练习代码能力是必须的(事到如今,代码能力也是个人能力非常重要的一环),但是在具有ChatGPT的当下,一些合理的prompt就可以生成你所希望使用的代码,这极大地降低了书写代码的难度,也为在科研过程中代码的完成提供了一条捷径,伴随着人工智能领域的发展,这种趋势还将继续延续,也就是思想大于工程能力。

因此,笔者在这里将提出一种与传统学习方法相背离的思考,也就是或许不动手学深度学习是可以尝试的。

事实上,在学习的过程中,仅了解关键算法的关键思想,而不进行数学推导,在科研的前期是可以进行的。对于代码的实现以及数学的理解,往往在下游任务中并非必需,对于追求效率的读者来说,选择使用不动手的方式学习深度学习,可能是一种更好的选择,因为这不仅会降低你的学习成本,同时抽象的理解深度学习中的思想已经足够应付绝大多数在下游任务中的场景。具体的工程能力以及数学的理解则可以放在具体对于某一代码项目的修改以及改进之中。

当然,在这里依然要给出一些可供参考的系统性学习的教材。其中需要指出的是,一些传统的教材或许已经过时,而网络上大量的视频教程以及博客反而是具有很高参考价值的,因为人工智能领域的与时俱进,大多数的教材在出版之时,其中所蕴含的人工智能算法早已落后时代一至两年,而两年的代差足以诞生无数的算法迭代。对于某一具体领域的算法的理解,我们将在之后单独开设章节进行讨论,而在这里主要讨论的是对于通识性知识的掌握的教程。

对于视频教程,在这里还是要推荐李沐上传的 动手学深度学习 这门课程。笔者认为相对来说这门课程理解难度较低,而且学习曲线也较为平缓。假如说按照笔者的方案,可以选择不动手实现代码。同时动手实现代码也可以确实增强你的工程能力。对于想要扎实提升自己代码能力的读者来说,或许也是必须的。

更多的教程性的内容可能还要倾向于论文方面。这些内容才是科研一线的产物,也可以帮助你更好地理解那些著名算法的思想。在这里,我们将给出一些关键的算法以及它们所对应的论文,这些或许是已经有一定年头的内容,但是依然对于初学者来说十分必要。这里提及的绝大多数内容均来自于这些算法的原论文,而对于一些原论文难以追溯或者该算法来自一种领域内的共识的内容,一些恰当的视频教程以及博客也会被提及。

  • 反向传播
  • 前馈网络/多层感知机
  • 卷积神经网络
  • 循环神经网络
  • Transformer
  • ......

论文的阅读,对于初学者来说或许是困难的,而我们也将单独开设章节进行讨论,关于论文阅读中的技巧以及如何快速地理解一篇论文。

基础的深度学习的入门知识是十分简单的,在你具有本科数学基础的情况下,基本上使用恰当的方法,慢则一个星期可以入门,但是再次之后才是一切的开始,你需要开始正式接触人工智能领域中的细分领域,而这往往才是重头戏。

本指南计划寻找一些对于某一细分领域较为了解,有顶会论文发表的同学/科研工作者进行分享,之后再进行系统的整理,希望可以对你有帮助。

动手学深度学习

另一种方法则是通过动手的方式学习深度学习,这也是众人所推荐的较为常见的入门方式,通过系统的学习视频课程,你或许可以获得到你需要的知识。

有一些课程是值得推荐的,这其中包括李沐的动手学深度学习,其官网中不仅提供了对应书籍的开源版本,同时配套以Pytorch与其他深度学习库的代码实现。当然,推荐的课程中同样也包括经典的课程CS231n,一方面,可以前往其官网进行观看,而对于英语听力存在困惑的同学,B站也存在其教程的对应中文字幕视频,然而有必要指出的是,单纯的视频课程,仅仅可以做到打好基础这一阶段,更多的内容则仍然有待学习。

Released under the MIT License.