首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无人驾驶、语音识别这些大火的技术都怎么实现的?

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

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

1. 放弃海量资料

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

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

2. 放弃从零起步

说到入门,很多人会从最基础的知识开始学起!深度学习是一门融合概率论、线性代数、凸优化、计算机、神经科学等多方面的复杂技术。学好深度学习需要的理论知识很多,有些人基础可能不是特别扎实,就想着从最底层知识开始学起,概率论、线性代数、机器学习凸优化公式推导,等等。但这样做比较耗时间,且容易造成“懈怠学习”,打消学习的积极性。因为啃书本和推导公式相对来说比较枯燥,远不如自己搭建一个简单的神经网络更能激发学习积极性。

当然,不是说不需要钻研基础知识,基础理论知识非常重要!只是说,在入门的时候,最好先从顶层框架上有个系统认识,然后再从实践到理论,有的放矢地查缺补漏机器学习知识点。从宏观到微观,从整体到细节,更有利于深度学习快速入门!而且从学习的积极性来说,也能起到“正反馈”的作用。

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

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

俗话说“工欲善其事,必先利其器!”学习深度学习,掌握一门合适的编程语言非常重要!最佳的选择就是 Python。

为什么人工智能、深度学习会选择 Python 呢?一方面是因为Python 作为一门解释型语言,入门简单、容易上手。另一方面是因为Python 的开发效率高,有很多库方便我们研究人工智能,比如 Numpy、Scipy 用来数值计算,Sklearn 专注机器学习,Matplotlib 可将数据可视化,等等。总的来说,Python 既容易上手,又是功能强大的编程语言。毫不夸张地说,Python 可以从支持航空航天器系统到小游戏研发的几乎所有领域。

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

4. 选择一个深度学习框架: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 静态构图的致命弱点。

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

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

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

- 神经网络的正向传播

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

- 防止过拟合技巧

- 神经网络梯度优化算法

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

- 激活函数的选择与比较

- 卷积神经网络(CNN)

- 循环神经网络(RNN)

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

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

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

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

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

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

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

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

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

本课程的具有的特色包括:

- 内容深入浅出、理论推导详细;

- 理论结合实践,在代码实践中巩固知识;

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

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

扫码免费试读

《深度学习 Python入门与实战》

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181213B06O5900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券