金博体育深度学习如何入门?

  常见问题     |      2023-08-10 03:25

  金博体育准备用三个月入门,和想要一个月速成,肯定是截然不同的路径。当然我建议大家稳扎稳打,至少可以拿出五个月的时间来学好机器学习的基础知识。

  基础很重要,知其所以然很重要。毕竟工具总在进步,每个月都会出现更好的深度学习技术,但基础知识是不变的。

  如何用五个月时间入门?下面分三个部分,详细指南。(以及,如果你确实时间有限,最后还有一个速成指南)

  最好的入门教程,就是吴恩达讲授的机器学习。吴恩达这套课程发布很久了,虽然有些地方稍微过时,但相信我,现在没有任何公开的课程,能比吴恩达讲得更好。真的,课程结束时我几乎哭了出来。

  这个课程可以说适合任何水平的学生,当然,你最好还是得知道两个矩阵如何相乘,以及对编程有一些基本的了解。

  如果你有时间,一定要听完全部的课程。如果时间紧张,至少要听完前五节课程,后面的可以暂时跳过。

  吴恩达的机器学习课程深入讲解了经典的机器学习模型,如线性回归、逻辑回归、神经网络、支持向量机、PCA、无监督学习等等。大部分重要概念,都以简单易懂的方式进行了介绍。

  当你学习到第五节课,也就是开始讲述神经网络时,建议开始查看与课程平行的外部资料。比方3bule1brown推出的神经网络讲解视频。推荐必看。

  以及,我觉得吴恩达在讲神经网络时有点快,所以建议补充阅读一些资料。比如有关神经网络和深度学习的在线书籍,免费的就很好了。

  作者Michael A. Nielsen以一种简单直观的方式,深入探究了神经网络的每个细节。建议阅读这本书的前两章,与吴恩达的课程并行。当你熟悉更多概念后,开始搞深度学习时,可以再看书中的其余部分。

  如果你英文不好,这本《神经网络与深度学习》也有中文翻译版本,可以免费在线查看。

  这个部分的学习结束之后,你就能明白机器/深度学习的许多概念。最后推荐阅读Christopher Olah的博客,很有意思。

  开始研究深度学习之前,最好重温一下大学数学。Ian Goodfellow传奇般的“花书”《深度学习》,简明扼要的概括了大部分重要主题。

  建议大家尽可能深入地阅读线性代数、概率、信息理论的章节。每当读论文遇到深度学习概念时,都可以在书中找到参考。

  再一次,我觉得最好的选择,还是听吴恩达的《深度学习专项系列课程(Deep Learning Specialization)》。

  这门课程包括五大章节。其实不是免费的,你可以按照50美元/月购买。当然,如果你负担不起,还能申请“助学金”。申请时请详细阐明理由,处理的时间大概需要15天左右。

  当然不付费,大部分内容都是可以看的。以及视频的部分,在很多地方也能免费收看。

  前三门课程涉及一般的神经网络和深度学习,第四、第五门课程涉及特定主题。如果你打算搞视觉,第四课必听;如果你搞NLP、音频等,第五课必听。但如果你需要听第五课,那么建议也把第四课好好听一下。

  这里鼓励大家一下,课程里每周的内容,实际上一两天就能学完,所以不要被课程表吓倒。劳逸集合、提升效率。

  学到这个地步,其实就可以再去neuralnetworksanddeeplearning.com/,查看第三到第六章的内容,来强化你的概念。如果你有什么还没搞懂的,请前往Olah的博客。

  以及,这时候你要开始看深度学习的论文了,从中学习知识。深度学习有个强烈的特点,那就是内容都非常新,阅读论文是跟上时代唯一的方法。不想被抛下,那么还是养成阅读论文的好习惯吧。

  学到这里,你应该对机器学习和深度学习中的大多数概念有了正确的理解,现在是时候投入沸腾的实际生活中了。

  他们在流行的深度学习工具PyTorch上构建了一个库,只需要几行代码,就能实现世界级的性能。

  fast.ai的理念有点不同。吴恩达等老师的教授方法是自上而下,先讲再做。而fast.ai倡导自下而上,先做再讲。

  所以在他们的课程中,第一节就带你建立一个强大的图像分类器。自己训练模型的快感,刺激着你去完成其余的课程。

  斯坦福大学的CS231n和CS224n。CS231n专注于计算机视觉的深度学习,而CS224n专注于序列建模。

  以及最后,兑现一个开头的承诺。如果你确实时间很紧张,必须尽快入门机器/深度学习,那么请看——

  5、搜索你感兴趣的开源实现。如果你还没想好用什么语言,推荐Keras。然后根据需要,再迁到TensorFlow或者PyTorch框架。

  想要在30天完成入门超级困难。除非,你只是想了解机器学习的工作原理,然后应用到自己的项目中。

  如果是这样的线、略读吴恩达机器学习课程第1-5周的课程,只看视频,掌握概念即可。第三周可以跳过MATLAB/Octave课程。

  遇到困境的时候,记得reddit和Facebook上有很多志同道合的人,不要犹豫,在社区里寻求帮助,大家会伸出援手。

  需要提醒的是,与计算机学科的其他领域不同,深度学习的资源还不够丰富。很多时候你会遇到失败挫折,千万不要灰心丧气,你可以向更多人寻求帮助,很多人都愿意伸出援手,大家都在学习。

  关于机器/深度学习,有一个误解是需要计算机科学的背景才能学习。这不是真的,你确实需要一些编程的思维才好入手,但也仅限于此。现在机器学习领域的很多专家,都来自其他研究领域。

  如果你有计算机科学的背景,这是一个非常好的开始。但如果你出身其他学科,想要迎头赶上并不难。

  深度学习的资料非常多,但这也成为了深度学习坑最大的地方,学习者很容易迷失在各种资料当中,最后只看了个皮毛。所以,我认为学习深度学习一开始就要盯着你挑选的那么一两个资料学习,最多不要同时看三本书。深度学习是一个理论与实践相结合的学科,所以我建议找一本理论和实践都覆盖的书,或者一本书讲理论,然后找些代码做实验。下面来说说我自己学习的总结的一条路径,难度由简到难,由浅到深。永远不要忽视基础,他们不是你学会之后就可以抛弃的东西,而是一点点积累让你达到更高高度的坚实台阶。

  1. 入门材料。我推荐Neural networks and deep learning金博体育,这本简短的书满足了上面我所说的既注重理论又有充分的实验代码伴随。这本书先是引入了最原始最简单的神经元和神经网络的概念,然后一步步引出全连接网络、激活函数、反向传播、优化方法、卷积神经网络等深度学习中最基本的内容,然后还给出一个视觉上的(非严格的)证明,神经网络可以计算任意函数(严格来讲,是有限制条件的)。书中还有大量的配图(其中还有很多可交互的动图),非常有助于理解。这本书对应的是作者自己的 python 代码,自己从头实现一个神经网络非常有助于理解。这本书真正做到了深入浅出,在不失理论深度的同时让难度变得很低。下图就是它展示改进学习方法的一个例子,你甚至可以在浏览器里面改变参数的值然后点击右下角的按钮立马看到反馈效果,看到 cost 曲线是如何下降的

  2. 找一本更深入的书学习理论,挑一个喜欢的框架可以做实验。我在入门深度学习的时候没有专门讲这个话题的书,还得自己寻找各种资料,看 paper,走了很多弯路,现在的同学可以直接看Deep Learning这本书了,对于基础理论讲的非常详尽了,是深入理解的一条捷径。至于框架,挑个主流的、教程完备的,我推荐 pytorch/tensorflow/mxnet 里面选一个,我个人比较喜欢 pytorch,程序非常优雅简洁。然后一边看书一边做实验,把书中的东西能实现的实现一下,把框架里面的教程也都跑一遍,这样你对于深度学习就入门了。

  3.1 找一个专门的问题开始钻研,不断地试验自己的想法,前人没有的想法。同时阅读这个领域最新的文章,尝试实现。比如你可以挑物体检测这个问题,既然你对于理论和实践都已经比较熟练了,你完全可以开始修改别人的网络架构,改变训练的模式,尝试把先验信息加进来金博体育。总之,有很多的玩法都可以实验。说不定玩着玩着就能写一篇文章出来发表。

  3.2 尝试实现一个自己的深度学些框架。目前深度学习离不开 c/c++ 和 cuda,所以你可以从头写一个 c/c++ 版本的,把坑自己踩一遍,这样工程能力肯定大为提高。或者,你也可以利用现有框架的后端实现一个前端,这样你对于这些框架后端的理解也能够大为提高。且你的所有的想法都可以写进这个前端里面。比如 pytorch 就是用 torch 的后端实现了一个 python 的前端,而且相比于原版的 torch 有了很多改进。

  另外建议看看大神Yoshua Bengio的推荐(左边的链接是论文,右边的是代码),有理论有应用(主要应用于CV和NLP)

  入门个Python就给你介绍10本入门教材,一个Bayesian介绍5个online course,你觉得这些罗文益们是在帮你还是在害你?

  在Medium分享平台上,有一篇文章总结了截至2017年机器学习领域最值得阅读的10篇文章(其实是10份资料),以及一些开源项目和公开课的清单。这些材料是从14500篇机器学习的文章中精心挑选出来的最有价值的10篇(0.069%)。

  这些资料中有适合零基础的人入门的完整课程,也有最近这一年深度学习领域最新的的进展、应用、以及开源项目等。干货很多、质量很高。不论是初学者还是这个领域的研究者,都值得花些时间阅读和学习一下金博体育。