深度学习如何入门

很早之前,红色石头就听过雷军说的一句话:“站在风口上,猪都可以飞起来”!这句话用来形容现在的深度学习非常贴切。是的,近几年来,深度学习的发展极其迅速。其影响力已经遍地开花,在医疗、自动驾驶、机器视觉、自然语言处理等各个方面大展身手。在深度学习这个世界大风口上,谁能抢先抢先进入深度学习领域,学会运用深度学习技术,谁就能真正地在 AI 时代“飞”起来。

对于每一个想要开始深度学习的大学生、IT 程序员或者其他转行的人来说,最头疼也是最迫切的需求就是深度学习该如何入门呢?下面我来谈一谈我的看法。

1. 放弃海量资料

没错,就是放弃海量资料!在我们想要入门深度学习的时候,往往会搜集很多资料,什么 xx学院深度学习内部资源、深度学习从入门到进阶百 G 资源、xx 人工智能教程,等等。很多时候我们拿着十几 G、几百 G 的学习资源,然后踏踏实实地放到了某云盘里存着,等着日后慢慢学习。殊不知,有 90% 的人仅仅只是搜集资料、保存资料而已,放在云盘里一年半载也忘了打开学习。躺在云盘的资料很多时候只是大多数人“以后好好学习”的自我安慰和“自我”安全感而已。而且,面对海量的学习资料,很容易陷入到一种迷茫的状态,最直接的感觉就是:天啊,有这么多东西要学!天啊,还有这么多东西没学!简单来说,就是选择越多,越容易让人陷入无从选择的困境。

所以,第一步就是要放弃海量资料!而是选择一份真正适合自己的资料,好好研读下去、消化它!最终会发现,收获很大。

2. 放弃从零起步

说到入门,很多人会想着那就要从最基础的知识开始学起!深度学习是一门融合概率论、线性代数、凸优化、计算机、神经科学等多方面的复杂技术。学好深度学习需要的理论知识很多,有些人可能基础不是特别扎实,就想着从最底层的知识开始学起,概率论、线性代数、机器学习凸优化公式推导,等等。但是这样做的坏处是比较耗时间,而且容易造成“懈怠学习”,打消学习的积极性。因为啃书本和推导公式相对来说是比较枯燥的,远不如自己搭建一个简单的神经网络更能激发自己的学习积极性。当然,不是说不需要钻研基础知识,基础理论知识非常重要!只是说,在入门的时候,最好先从顶层框架上有个系统的认识,然后再从实践到理论,有的放矢的查缺补漏机器学习知识点。从宏观到微观,从整体到细节,更有利于深度学习快速入门!而且从学习的积极性来说,也起到了“正反馈”的作用。

好了,谈完了深度学习入门的两个“放弃”之后,我们来看下一步深度学习究竟该如何快速入门?又该掌握哪些必备的知识?

1. 选择一门合适的编程语言:Python

俗话说“工欲善其事,必先利其器”!学习深度学习,掌握一门合适的编程语言非常重要!最佳的选择就是 Python。为什么人工智能、深度学习会选择 Python 呢?一方面是因为 Python 作为一门解释型语言,入门简单、容易上手。另一方面是因为 Python 的开发效率高,Python 有很多库很方便做人工智能,比如 Numpy、Scipy 做数值计算的,Sklearn 做机器学习的,Matplotlib 将数据可视化的,等等。总的来说,Python 既容易上手,又是功能强大的编程语言。可以毫不夸张地说,Python 可以从支持航空航天器系统的开发到小游戏开发的几乎所有的领域。

也许有的人会说 底层还所有的深度学习框架,例如 PyTorch、TensorFlow 等,虽然是 Python 语言,但是底层都是由 C/C++ 编写的。Python 实际上是实现 API 调用的功能,所以运行速度慢。事实上,这丝毫不影响 Python 的普及。如今,在 GPU 加速的前提下,Python 的运行速度已经很快了。在众多因素影响下,Python 毫无疑问成为了人工智能的最主要的编程语言。

2. 选择一个最好的深度学习框架:PyTorch or TensorFlow?

如果说 Python 是我们手中的利器,那么一个好的深度学习框架就无疑给了我们更多的资源和工具,方便我们实现庞大、高级、优秀的深度学习项目。随着深度学习的研究热潮持续高涨,各种开源深度学习框架也层出不穷,包括 TensorFlow、PyTorch、Caffe2、Keras、CNTK、MXNet、Paddle、DeepLearning4、Lasagne、Neon 等等。其中,谷歌推出的 TensorFlow 无疑在关注度和用户数上都占据绝对优势,最为流行。但是作为入门推荐,我却选择了 PyTorch。这是为什么呢?

首先,从难易程度上,PyTorch 是 Numpy 的替代者,支持 GPU,可以用来搭建和训练深度神经网络。熟悉 Numpy、Python 以及常见的深度学习概念(卷积层、循环层、SGD 等),会非常容易上手 PyTorch。而 TensorFlow 可以看成是一个嵌入 Python 的编程语言。你写的 TensorFlow 代码会被 Python 编译成一张图,然后由 TensorFlow 执行引擎运行。我见过好多新手,因为这个增加的间接层而困扰。也正是因为同样的原因,TensorFlow 有一些额外的概念需要学习,例如会话、图、变量作用域(Variable Scoping)、占位符等。另外还需要更多的样板代码才能让一个基本的模型运行。所以 TensorFlow 的上手时间,肯定要比 PyTorch 长。

其次,创建和运行计算图可能是两个框架最不同的地方。在 PyTorch 中,图结构是动态的,这意味着图在运行时构建。而在 TensorFlow 中,图结构是静态的,这意味着图先被“编译”然后再运行。PyTorch 中简单的图结构更容易理解,更重要的是,还更容易调试。调试 PyTorch 代码就像调试 Python 代码一样。你可以在任何地方设置断点。调试 TensorFlow 代码可不容易。要么得从会话请求要检查的变量,要么学会使用 TensorFlow 的调试器。

总的来说,选择 PyTorch 的原因很简单,因为简单易懂。而且,它还弥补了 Tensorflow 静态构图的致命弱点。

3. 夯实深度学习数学推导与理论

有人说深度学习就像一个黑匣子,完全不知道内部发生了什么。也有人说深度学习不需要数学理论,只要会调参数就行了。其实,这两种说法都有失偏颇。掌握基本的深度学习理论非常重要。神经网络是深度学习最重要的结构,关于神经网络包含了许多我们入门需要掌握的基本理论和数学推导。具体包括:

  • 神经网络基础知识:感知机、梯度下降

  • 神经网络的正向传播

  • 神经网络的误差反向传播

  • 防止过拟合技巧

  • 神经网络梯度优化算法

  • 网络初始化技巧与超参数调试

  • 激活函数的选择与比较

  • 卷积神经网络(CNN)

  • 循环神经网络(RNN)

掌握深度学习基本的数学理论知识是非常重要的!只有对神经网络模型结构和推导过程有清晰的认识才能更好地建立模型优化直觉,构建性能良好的神经网络模型,而不是做只会使用框架和库,知其然不知其所以然的“调包侠”。

4. 实践是最好的学习方式

纸上得来终觉浅,觉知此事要躬行!理论与模型的建立都是为了更好地实践,为了解决实际问题。深度学习也是这样,掌握每个理论知识后,更重要的是将理论用于实践。例如,使用深度学习模型解决图像识别、语音识别等,或者参加 kaggle。通过实战,更能加深自己的理解,帮助自己更加熟练地掌握深度学习应用技巧。

而现在很多教程和课程往往忽视了实战的重要性,将大量的精力放在了理论介绍上。我们都知道纸上谈兵的典故,重理论,轻实战的做法是非常不可取的!就像我开头说的第 2 个“放弃”一样,在具备基本的理论知识之后,最好就去在实践、编写代码,解决实际问题。从学习的效率上讲,速度是最快的。

那么,针对以上关于深度学习入门的建议,有没有一份涵盖这些重点的完整的教程呢?答案是肯定的!针对这些建议,结合我自己在入坑深度学习的经验,我特此推出了一份写给所有想要入门深度学习的极简教程《深度学习 Python 入门与实战》。以上的经验分享,它全都包含!

这门课的知识体系完整,知识架构清晰。整体分为三个部分:

第一部分(第01-04课),主要介绍一些深度学习的预备知识,列举重要的 Python 基础知识,手把手教你搭建本课程需要的开发环境,使用 Anaconda 平台,重点介绍 Jupyter Notebook 的使用以及知名的深度学习框架 PyTorch。

第二部分(第05-14课),主要介绍神经网络的基础,以最简单的两层神经网络入手,详细推导正向传播与反向梯度的算法理论。然后,从简单网络推导至深度网络,并重点介绍神经网络优化算法及构建神经网络模型的实用建议。每一部分都会使用 Python 构建神经网络模型来解决实际问题。

第三部分(第15-18课),主要介绍卷积神经网络 CNN 和循环神经网络 RNN,重点剖析两种模型的数学原理和推导过程。最后,利用越来越火的深度学习框架 PyTorch 分别构建 CNN 和 RNN 模型,解决实际项目问题。

本课程的独具特色包括:

  • 内容深入浅出、理论推导详细。

  • 理论结合实践,在代码实践中巩固知识。

  • 知识体系完善,深度学习知识点各个击破

回到开头,虽然“站在风口上,猪都可以飞起来”成为了日后很多人引用的金句,但是在这句话的后面,“长出一个小翅膀,就能飞得更高”却鲜有人提及。归根结底,站在风口上固然重要,但是能否靠自己长出一双小翅膀才是能否取得成功的关键。不要犹豫,选择《深度学习 Python入门与实战》,给自己的深度学习之路助力一把!

欢迎扫描二维码或点此试读购买!

阅读更多

没有更多推荐了,返回首页