从Facebook的研究到DeepMind的传奇算法,深度学习已经登上了数据科学界的顶峰。它带来了惊人的创新,不可思议的突破,而且在这一领域我们才刚起步!

不过如果你是这个领域的新手,“深度”这个词可能会让你产生怀疑。深度学习是当今这一行业最热门的话题之一,但不幸的是,它对大多数人来说是陌生的和神秘的。很多人的印象是深入学习涉及到大量的数学和统计知识。

如果你有类似的关于深度学习的问题,但不知道如何、何时、何地去提问-本文正是你要找的地方。这篇文章回答了你想知道的大部分内容。

640.webp.jpg

在这篇文章中,我们将消除一些关于深度学习的神话,并回答关于这个领域的一些被广泛问到的问题。我们还提供了大量的资源让你起步。

令人兴奋的部分来了,深度学习并没有大多数人想象中的那么苦难。继续读下去,你会发现更多!

目录

Q1:什么是深度学习?为什么它如此受欢迎?

Q2:深度学习是一种炒作还是有现实生活中的应用?

Q3:深度学习和机器学习有什么区别?

Q4:深造的先决条件是什么?

Q5:是否有必要有一个研究背景的深度学习,以开始它?

Q6:我应该选择哪种工具/语言来构建深度学习模型?

Q7:为什么GPU是构建深度学习模型所必需的?

Q8:什么时候(和在哪里)应用深度学习?

Q9:我们需要大量的数据来训练深度学习模式吗?

Q10:我在哪里可以找到一些基本的项目想法,以实践深入学习?

Q11:深度学习的免费学习资源是什么?

Q12:深度学习领域面试常见问题?

Q13:深度学习的未来是什么?

Q1:什么是深度学习,为什么现在如此受欢迎?

深度学习只不过是机器学习中近年来表现出惊人前景的一个分支。这是因为深度学习与人脑的功能有很大的相似之处。人脑的优越性是一个显而易见的事实,它被认为是有史以来最富创造力、最多才多艺、最有效的自学习模型。

现在,让我们举一个例子来理解深度学习模型的功能:

640.webp (1).jpg

在上面的图片中你看到了什么?

最明显的答案是“一辆车”,对吗?尽管图片里有沙子,绿色植物,云和很多其他的东西,我们的大脑标记这个图像为一辆汽车。这是因为我们的大脑已经学会了识别图像的主要对象。

这种从大量外来数据中提取有用信息的能力使深度学习变得特别。随着日渐增涨的数据量,我们希望我们的模型有更好的,更多的数据输入进来。而深度学习模型会随着数据量的增加而变得更优。

尽管深度学习已经存在了很多年,但这些技术的重大突破仅仅是在最近几年才出现的。这是因为两个主要原因-正如我们前面所看到的,首先是各种来源生产的数据的增加。下面的信息图表简洁地展示了这一趋势。第二个问题是运行这些模型所需的硬件资源的提升。GPU正在成为运行深度学习模型的一种需求,它的速度比以前快了好几倍,它们帮助我们在相对较短的时间内建立更大、更深入的学习模型。

640.webp (2).jpg

这就是为什么深度学习已经成为数据科学行业的一个热门词汇的原因。

Q2:深度学习是一种炒作

还是有现实生活中的应用?

近年来,深度学习已经有了许多实际的应用。从Netflix著名的电影推荐系统到谷歌的自动驾驶汽车,深度学习已经在改变许多企业,并有望在几乎所有行业带来一场革命。从诊断癌症到赢得总统选举,从创作艺术和写作文学到赚到现实生活的钱,深度学习模型正在被应用到方方面面。因此,如果说这只是一个被炒作的话题,那就错了。

技术型公司正在采用的一些深度学习的主要应用包括:

d47e62d2b349aca45e42305ed6714efbe5ed61d9谷歌和Facebook将文本翻译成数百种语言。这是深入学习模型应用于NLP任务的一个重要的成功案例。
d47e62d2b349aca45e42305ed6714efbe5ed61d9像Siri,Alexa,Cortana这样的对话媒介基本上致力于通过LSTMS和RNN简化语音识别技术。语音命令为机器识别的可能性增加了一个全新的领域。
d47e62d2b349aca45e42305ed6714efbe5ed61d9深度学习正被应用于有效的计算机视觉领域,如光学字符识别和实时语言翻译。
d47e62d2b349aca45e42305ed6714efbe5ed61d9像Snapchat和Instagram这样的多媒体共享可应用于面部特征检测,这是深度学习的另一个应用。
d47e62d2b349aca45e42305ed6714efbe5ed61d9深度学习正应用于医疗保健领域,用来定位恶性细胞和其他异物,以检测疑难杂症。

然而,有些人认为深度学习被夸大了,因为培训深度学习模型所需的标签数据并不容易获得。即使有数据,训练这些模型所需的算力的成本也很高。因此,由于这些障碍,人们无法体验到深度学习的强大力量,而将其称为炒作。

可以通过下面的博客来构建一些真实的生活中的深度学习应用:

初学者可以在几分钟内构建的深度学习的六个应用程序(使用Python语言)

https://www.analyticsvidhya.com/blog/2017 /02/6-deep-learning-applications-beginner-python/

Q3:深度学习和机器学习有什么区别?

这是我们大多数人需要理解的最重要的问题之一。这种比较主要可以在以下三个方向进行:

1. 数据依赖度

深度学习与传统机器学习最重要的区别在于,随着数据规模的增加的性能。当数据很小时,深度学习算法的表现得不那么好。这是因为深度学习算法需要大量的数据才能完全理解它。此时,传统的机器学习算法和手工规则占上风。下图归纳了这一事实。

640.webp (3).jpg

2. 特征工程

特征工程是将领域知识应用于特征提取的过程,以降低数据的复杂性,使模型更直观地为学习算法所用。就时间和专业知识而言,这一过程是有难度的,也是十分耗时和昂贵的。

在机器学习中,大多数应用的特征需要由专家识别,然后根据领域和数据类型手工编码。

例如,特征可以是像素值、形状、纹理、位置和方向。大多数机器学习算法的性能取决于识别和提取特征的准确性。

深度学习算法试图从数据中学习高级特征。这是深度学习的一个非常独道的部分,也是比传统机器学习主要领先得一步。因此,深度学习减少了为每个问题开发新的特征提取器的任务。例如,卷积神经网络将尝试学习低层次的特征,比如在一开始得网络层中是边缘和线条,然后是人的部分脸,最后是人脸的高级表示。

640.webp (4).jpg

3. 可解释性

最后,我们把可解释性作为机器学习和深度学习比较的一个因素。这一因素是深度学习在应用于工业之前需要多加思考的主要原因。

举个例子。假设我们用深度学习来自动给文章打分。它在打分方面的表现相当出色,接近人类的表现。但有个问题。它并没有说明为什么会给出这个分数。实际上,从数学上来说,你可以找出深层神经网络的哪些节点被激活了,但我们不知道神经元应该建立什么模型,以及这些神经元层共同在做什么。所以我们不能对结果做出解释。

另一方面,机器学习算法,如决策树,给了我们明确的规则,为什么它选择这个,所以它特别容易解释背后的推理。因此,决策树和线性/Logistic回归等算法主要用于工业因为它们的可解释性

如果您想了解机器学习和深度学习之间的更深入的比较,我建议您浏览以下博客:

深入学习与机器学习-你需要知道的本质差异!

https://www.analyticsvidhya.com/blog/2017 /04/comparison-between-deep-learning-machine-learning/

Q4:接触深度学习的先决条件是什么?

开始探索深度学习并不像人们想象得那么困难。在深入学习之前,你应该先了解一些基本的基础知识。深入学习需要了解以下课题:

d47e62d2b349aca45e42305ed6714efbe5ed61d9数学:你应该对概率、导数、线性代数和一些其他基本问题有所了解。Khan学院提供了一个系统的课程,几乎涵盖了上述所有主题。
d47e62d2b349aca45e42305ed6714efbe5ed61d9统计学:对于任何机器学习问题来说,统计的基础是必需的。理解统计学的概念是必要的,因为大部分的深度学习概念来自于统计学的概念。你可以查看这里的在线课程。
d47e62d2b349aca45e42305ed6714efbe5ed61d9工具:需要一个像样的编码技巧来实现深度学习到现实生活中的问题。Coursera的《Python中的数据科学入门》是以Python为工具开始的一个全面的课程。
d47e62d2b349aca45e42305ed6714efbe5ed61d9机器学习:机器学习是深度学习的基础。没有理解机器学习的概念,就无法开始深度学习。你可以先学习机器学习的课程:吴恩达机器学习理论基础。

有关先决条件的更详细了解,请参看下文

Python深度学习入门教程

https://www.analyticsvidhya.com/blog/2016/08 /deep-learning-path/

Q5:我是否需要攻读博士学位

才能开启深度学习的职业生涯?

完全没有必要,博士学位并不是从事深度学习的必修课。你可以不用去学校就可以学习、实验和开始你的职业生涯。任何工作或职位的重点通常是展示你的能力,而不是你的学位本身。

话虽如此,如果你选择将此与深度学习结合起来,那么一个特定领域的博士学位(比如NLP的语言学)肯定会加快你的学习速度。

Q6:我应该选择哪种工具/语言

来构建深度学习模型?

建议您使用Python,因为它具有用于机器学习的健壮的生态系统。python生态系统由开发人员和程序员组成,他们为python社区的用户提供开源库和支持。这使得为各种算法编写复杂代码的任务更加容易,而实现和实验技术也会更加容易。

同时,Python是一种更通用的编程语言,可以用于开发和实现。这大大简化了从开发到操作的转换。也就是说,一个可以预测机票价格的深度学习产品,不仅可以用python开发,还可以同样的形式与您的网站连接。这就是Python成为一种通用语言的原因。

除此之外,我建议初学者使用像Keras这样的高级库。这使得实验变得更容易,因为它为隐藏在算法中的不必要的信息提供了抽象表达。并允许访问可以被调整的参数来提高此类模型性能。让我们举一个例子来理解这一点:

当您按下电视遥控器上的按钮时,您是否需要关心在遥控器内发生的后台进程?你需要知道按下那个按键后是什么信号被发送出去,或者它是如何被放大的吗?

没必要,对吧?

因为理解这一过程可能需要一个物理学家,但对于一个坐在卧室里的瘸子来说,这只是一个信息过度。

在深度学习领域,除了Python之外,还有其他竞争者,如R、Julia、C和Java。对于库的替代方案,您可以查看TensorFlow、Pytorch、Caf 2、DL4J等。我们还应该了解它们的最新发展。

如果您对编程不太熟悉,还有一些基于GUI的软件,不需要编写代码,可以构建深度学习模型,如LOB或Google的AutoML等。

Q7:为什么GPU是构建深度学习模型所必需的?

当您训练一个深度学习模型时,将执行两个主要操作:

d47e62d2b349aca45e42305ed6714efbe5ed61d9前向传递
d47e62d2b349aca45e42305ed6714efbe5ed61d9后向传递

在前向传递中,输入通过神经网络传递,并在对输入进行处理后生成输出。而在反向传递中,我们根据前向传递的误差对神经网络的权值进行修正。

640.webp (5).jpg

这两种运算本质上都是矩阵乘法。一个简单的矩阵乘法可以用下面的图来表示:

640.webp (6).jpg

在这里,我们可以看到,第一个数组第一行中的每个元素与第二个数组的第一列相乘。因此,在神经网络中,我们可以把第一个数组作为神经网络的输入,而第二个阵列可以作为网络的权值。

这任务似乎不难。现在让你对大规模深度学习有一个直观的感觉,VGG16(带有16个隐藏层的卷积神经网络是经常使用到的深度学习应用),它有1亿4000万个参数;AKA权值和偏置。你只是给了网络一个输入,想想看这里面所有的矩阵乘法!如果我们采用传统的方法,需要花费几年的时间来训练这种系统。

我们注意到,神经网络的计算集中部分由多个矩阵乘法组成。那么我们怎么才能更快呢?

我们只需同时执行所有操作,而不是一个接一个顺序执行。简而言之,这就是为什么我们使用GPU(图形处理单元)而不是CPU(中央处理单元)来训练神经网络的原因。

Q8:何时(何地)应用神经网络?

深度学习已经成为人们关注的焦点之一。它的“更深”版本在图像识别、语音和自然语言处理等领域都取得了巨大的突破。

既然我们知道它是如此的有影响,那么主要问题来了:什么时候能,什么时候不能应用神经网络?这个领域现在就像一个金矿,每天都有许多发现被发现。要想成为这场“淘金热”的一部分,你必须记住以下几点:

d47e62d2b349aca45e42305ed6714efbe5ed61d9深度学习模型需要清晰、信息丰富的数据(大部分是大数据)来进行训练。

试着把深度学习模型想象成一个孩子。它首先观察父母是如何走路的。然后,它试图自己走,每走一步,孩子就学会如何完成一项特定的任务。它可能会摔倒几次,但经过几次失败的尝试,它学会了如何走路。如果你不让它走,它可能永远学不会走路。你能提供给孩子的机会越多,效果就越好。

d47e62d2b349aca45e42305ed6714efbe5ed61d9对于复杂的问题,如图像处理,使用深度学习需要更为谨慎。

深度学习算法属于一表征学习算法。这些算法将复杂的问题分解成更简单的形式,使它们变得可以理解(或“可表示”)。把深度学习的过程想象成在你吞咽之前需要咀嚼食物。这对于传统的(非表示性学习)算法来说难度将更大。

d47e62d2b349aca45e42305ed6714efbe5ed61d9你要有合适的深度学习算法来解决相应的问题。

每个问题都有自己的特点。所以数据决定了你解决问题的方式。例如,如果问题是序列生成,递归神经网络更为适合。然而,如果是图像相关的问题,可能采取卷积神经网络会更好些。

d47e62d2b349aca45e42305ed6714efbe5ed61d9运行深度神经网络模型必需对硬件有要求。

神经网络早在很久以前就被“发现”了,但它们在最近几年里才开始闪光,这主要是因为现在的计算资源更好、更为强大。如果你想用这些网络来解决现实生活中的问题,就准备买一些高端硬件吧!

Q9:我们需要大量的数据

来训练深度学习模型吗?

的确,我们需要大量的数据来训练一个典型的深度学习模型。但是,我们通常可以通过使用所谓的迁移学习来克服这一问题。让我详细解释一下。

在工业应用中使用深度学习模型的障碍之一是数据量太小。训练一些流行的深度学习模型所需的数据示例如下:

640.webp (7).jpg

然而,即使数据量不是很大,针对特定任务的深度学习模型也可以用于同一领域中的不同问题。这种技术被称为迁移学习。

例如,我们有一组1000张猫和狗的图像,标记为1和0(猫1,狗0),我们还有另一组500张测试图像,我们需要对它们进行分类。因此,我们不需要对1000幅图像的数据进行深度学习,我们可以使用预先训练过的VGGNet模型对数据进行再训练,并使用它对未标记的图像集进行分类。在你的应用程序中,一个经过预先训练的模型可能不会100%准确,但它利用他山之玉,节省了巨大工作量。

您可以看看下面这篇文章,以便对使用预训练的模型有更直观的了解:

迁移学习及深度学习中使用预训练模型的技巧

https://www.analyticsvidhya.com/blog/2017/06/transfer-learning-the-art-of-fine-tuning-a-pre-trained-model/

Q10:我在哪里可以找到基本的项目想法

以实践深度学习?

要实践深度学习,光靠想法是不行的。我们还需要有标签的数据来测试我们的想法能否利用深度学习来实现。

对于初学者,强烈建议开始使用MNIST数据。数据集包含手写数字及其实际标签,即0到9之间的数字。您甚至可以在识别数字竞赛中来评估您的模型。

对于中级用户来说,“年龄检测挑战”是一个很好的项目。数据集由印度电影演员的面部图像组成。这项任务是根据一个人的面部特征来预测他或她的年龄。为了简单起见,这个问题已经转化为一个多类问题,其中包括青年、中年和老年三个分类。

您还可以参考令人兴奋的深度学习数据集和问题的列表。

https://www.analyticsvidhya.com/blog/2018/03/comprehensive-collection-deep-learning-datasets/

Q11:深度学习的免费学习资源有哪些?

作为一种相对较新的技术,没有足够的内容和教程可供初学者使用。然而,与深度学习相关的免费内容和资源却在稳步增长。学习资源可以根据深度学习的不同应用进行分类。

  • 图像处理:

  • 吴恩达的卷积神经网络

https://www.coursera.org/learn/convolutional-neural-networks

  • 卷积神经网络的体系结构理解

https://www.analyticsvidhya.com/blog/2017/06/architecture-of-convolutional-neural-networks-simplified-demystified/

  • 卷积神经网络的初学者指南

https://www.analyticsvidhya.com/blog/2017/06/architecture-of-convolutional-neural-networks-simplified-demystified/

  • 机器学习很有趣!第三部分:深度学习与卷积神经网络

https://medium.com/@ageitgey/machine-learning-is-fun-part-3-deep-learning-and-convolutional-neural-networks-f40359318721

  • 基于深度卷积神经网络的图像网络分类

http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf

  • R-CNN

https://arxiv.org/pdf/1311.2524v5.pdfc

  • 深度卷积

https://www.cv-foundation.org/openaccess /content_cvpr_2015 /papers/Szegedy_Going _Deeper_With_2015_CVPR_paper.pdf

  • 序列预测/时间预测

  • 吴恩达的序列模型

https://www.coursera.org/learn/nlp-sequence-models

  • 深度学习的要点:LSTM简介

https://www.analyticsvidhya.com/blog/2017/12/fundamentals-of-deep-learning-introduction-to-lstm/

  • 递归神经网络的不合理有效性

http://karpathy.github.io/2015/05/21/rnn-effectiveness/

  • 理解LSTM网络

http://colah.github.io/posts/2015-08-Understanding-LSTMs/

  • 递归神经网络与LSTMS

https://ayearofai.com/rohan-lenny-3-recurrent-neural-networks-10300100899b

  • 自然语言处理

  • 自然语言处理的深度学习

http://cs224d.stanford.edu/

  • 词和短语的分布式表示及其组成

https://arxiv.org/pdf/1310.4546.pdf

  • 基于神经网络的序列学习

https://arxiv.org/pdf/1409.3215.pdf

  • 深度语音:扩展端到端语音识别

https://arxiv.org/pdf/1412.5567.pdf

此外,还可通过以下博客获得更多的资源列表:

  • Python深度学习入门教程

https://www.analyticsvidhya.com/blog/2016/08/deep-learning-path/

  • 超赞深度学习资源

https://github.com/ChristosChristofidis/awesome-deep-learning

Q12:深度学习领域面试常见问题?

在深度学习中可能会问到的一些常见问题有:

深度学习模式是如何学习的?
深度学习模式有哪些局限性?
前馈神经网络和递归神经网络有什么区别?
什么是激活功能,为什么需要它们?
什么是CNN?它有哪些应用?
什么是池化?它是怎么工作的?
什么是dropout layer,为什么要使用它?
什么是梯度消失问题,我们如何克服这一问题?
什么是优化函数?列举几个常见的优化函数。

请注意,这不是一个面试问题的详尽的清单。你可以通过下面的技能测试来测试自己在深度学习中遇到的重要问题。

30道测试一名数据科学家的深度学习的题

https://www.analyticsvidhya.com/blog/2017/08/skilltest-deep-learning/

40道测试一名数据科学家的深度学习的题

https://www.analyticsvidhya.com/blog/2017/04/40-questions-test-data-scientist-deep-learning/

45道测试数据科学家的基本试题

https://www.analyticsvidhya.com/blog/2017/01/must-know-questions-deep-learning/

Q13:深度学习的未来是什么?

近年来,深度学习取得了长足的进步,但仍有许多尚未开发的潜力。我们仍然处于这一领域的初级阶段,似乎每天都有新的突破。我们确实能看到的应用之一是汽车行业,在那里,深度学习可以通过实现自动驾驶汽车而使驾驶发生革命性的变化。虽然我们无法预测未来,但我们可以看到深度学习模型需要越来越少的人类数据科学家和研究人员的投入。

在不久的将来,我们肯定会看到一种趋势,即深度学习的知识将成为每一个数据科学实践者所必备的技能。事实上,你一定注意到了最近出现了一个叫“深度学习工程师”的工作岗位。该人员负责部署和维护公司各部门使用的深度学习模型。不用说,业界对这类人士的需求会很大。

目前,DL的一个局限性是它只是做人类要求它做的事。它需要大量的数据来学习它的目标,并重复这个过程。这在某些应用中引起了偏差。我们可以看到随着时间的推移,这种改进使得在训练过程中会消除一些偏差。

随着时间的推移,我们甚至可能不再把深度学习和其他类型的学习区分开来。它将成为一个流行的和常用的领域,将不需要做特别的品牌推广,市场推广或销售推广。

在很多情况下,研究人员在训练了DL模型之后,仍然无法解释背后的“原因”。“它产生了很好的效果,但是为什么你要用这种方式来调整一个超参数呢?”希望随着DL的迅速发展,我们将看到这个“黑匣子”的概念将成为历史,我们可以解释它所做决定背后的直觉。

尾注

这些都是我们的门户网站或其他网站上最常见的问题的答案,也是那些想要加入这股深度学习潮流的人们希望看到的回答。

关于深度学习,你还有什么需要澄清的问题吗?使用下面的评论部分来提问;或者跳到我们的讨论门户上,我们会帮助到您的!


作者:VIDHYA小组

翻译:陈之炎

校对:顾佳妮


本文转自微信公众号“数据派THU