阿尔法狗让深度学习登上了数据科学世界的巅峰。深度学习成为了当今最热门的话题之一,但对于大多数人来说,这是一个陌生而又神秘的学科。很多人认为,深度学习就是包括了大量的数学和统计知识。
本文列举了常见的12个深度学习的问题。
1.什么是深度学习?为什么它会如此受欢迎?
深度学习作为机器学习的典范,近年来已经显示出了广阔的前景。这是因为深度学习与人类大脑的功能很相似。人脑是迄今为止最通用、最有效的自我学习模型。让我们从下面的例子中更好的理解深度学习模型的特点:
你在上图中看到了什么?很明显,“一辆车”。尽管图中也有沙子、绿叶、云彩等,但大脑会将这张图标记为一辆汽车。这是因为我们的大脑已经学会识别图像中的主要对象。
深度学习的特殊之处就在于从大量无关数据中获取有用信息。随着现在生成数据量的增加,我们希望模型能够更好地处理更多数据,深度学习模型变得更好。
尽管深度学习已经出现多年,但其重大突破仅仅在近几年才实现。这其中有两个主要原因,首先是数据量的增加,如下图所示;其次是模型所需的硬件资源的增长,作为运行深度学习模型的GPU,处理速度更快,允许我们在更少的时间内构建更大更深的深度学习模型。
2.深度学习只是一种炒作,还是有真实的应用程序?
现在,深度学习已经在很多实际中得到应用:从Netflix著名的电影推荐系统到Google的无人驾驶,从创造艺术和文学写作到创造现实生活中的钱,都在使用深度学习模型。因此,如果说它只是一个炒作,这是错误的。
目前,深度学习的一些主要应用有:
(1)Google一次性将文本翻译成数百种语言,通过一些应用于自然语言处理任务的深度学习模型实现。
(2)Siri、Alexa、Cortana等智能会话代理通过LSTM和RNN来简化语音识别技术,语音命令打开了一个全新的领域。
(3)计算机视觉领域的应用,例如OCR(光学字符识别)和实时语言翻译。
(4)Snapchat和Instagram等多媒体共享应用程序进行面部特征检测。
(5)医疗领域的应用,用来定位恶性细胞和其他异物,检测疾病。
然而,由于训练深度学习模型所需的标记数据并不容易获得,因此一些人认为深度学习是一种炒作。即使数据可用,训练这些模型所需的计算设备也不便宜。因此人们无法体验到深度学习的力量,并将其视为炒作。
3.深度学习与机器学习有什么区别?
(1)数据依赖性
二者之间最主要的区别与数据的规模有关。当数据很小时,深度学习表现一般,而传统的机器学习表现较好;随着数据量的增加,深度学习的性能则远远高于机器学习。如下图所示。
(2)特征工程
特征工程是一个将原始图像放入特征提取器的创建过程,降低数据复杂性,并使数据更适合于学习算法。这一过程比较耗时、花费较大。
机器学习中,大部分应用特征需要由专家识别,再根据域和数据类型进行手动编码深度学习的独特之处在于从数据中学习高级特征,也是传统机器学习领域的一大进步。因此,深度学习减少了为每个问题开发新的特征提取器的任务。
(3)可解释性
解释性作为机器学习和深度学习的比较因素。
假设使用深度学习给散文自动评分,并接近人类的表现,但没有揭示为什么它给出了这个分数。而像决策树这样的机器学习算法可以解释其背后的推理。因此,决策树和线性逻辑回归等算法主要用于解释性行业。
4.深度学习的先决条件是什么?
在进行深度学习前,你需要了解以下知识:数学:概率、导数、线性代数等。统计:统计的基础知识是进行任何机器学习问题所必需的。工具:具有一定程度的编码技巧。机器学习:机器学习是深度学习的基础。在学习深度学习前,一定要理解机器学习的概念。更多详细信息请看:Python入门深度学习的完整指南。
在深度学习领域是否需要获得博士学位?
博士学位不是必须品,任何工作重点通常是展示你的能力,而不是学位本身。但是,如果你选择在特定领域(如NLP语言学)进行博士深造,肯定会是个加分项。
5.选择哪些工具/语言构建深度学习模型?
Python具有强大的机器学习生态系统,该系统由开发人员和编码人员组成,他们为python用户提供开源库和技术支持。这使开发人员为各种算法编写复杂代码的任务变得更加容易,并且更易于实施和实验。
另外,Python是一种可用于开发和实现的通用编程语言。这极大地简化了从开发到实现的过渡。也就是说,一个可以预测机票价格的深度学习模型不仅可以用python开发,还可以用同样的形式附在网站上。
除此之外,我建议初学者使用像Keras这样的高级库,对算法中隐藏的不必要信息进行抽象,并允许访问可以调整的参数,使实验简化且提高模型性能。
在R、Julia、C ++和Java等深度学习领域,除了Python之外,还有其他的语言。你也可以关注TensorFlow、Pytorch、Caffe2、DL4J等的发展,将他们作为库的替代品。
如果不熟悉编程,还有一些基于GUI的软件,不需要编码,就可以构建深度学习模型,如Lobe或Google的AutoML等。
6.为什么构建深度学习模型需要使用GPU?
深度学习模型有两个主要的操作:前向传递和后向传递。
前向传递将输入数据通过神经网络后生成输出;后向传递根据前向传递得到的误差来更新神经网络的权重。
其本质上都是矩阵乘法,简单的矩阵乘法如下图所示。
在这里,我们可以看到第一个数组的行与第二个数组的列元素分别相乘。因此,在神经网络中,我们可以将第一个矩阵视为神经网络的输入,第二个矩阵可以视为网络的权重。
这似乎是一个简单的任务。VGG16(在深度学习应用中经常使用16个隐藏层的卷积神经网络)大约具有1.4亿个参数,又称权重和偏见。想想你需要做的矩阵乘法,如果我们用传统的方法,训练这种系统需要几年的时间。
神经网络的计算密集部分由多个矩阵乘法组成。那么如何才能更快?
我们可以简单地通过同时执行所有操作,而不是一个接一个地执行。这就是为什么我们要使用GPU(图形处理单元)而不是CPU(中央处理单元)来训练神经网络的原因。
7.何时(何处)应用神经网络?
首先,深度学习模型需要清晰且丰富的数据来训练。将深度学习想象为一个孩子。它首先观察其父母如何走路。然后试图独立行走,并且每走一步,孩子都会学习如何执行特定的任务。经过几次不成功的尝试后,它会学习如何走路。
其次,对于图像处理等复杂问题使用深度学习需要很谨慎。深度学习算法属于表示学习算法。这些算法将复杂问题分解为更简单的形式以便理解(或“可表示”)。对于传统的算法来说,这将更困难。
硬件要求对于运行深度神经网络模型也至关重要。神经网络很久以前就被“发现”了,但近年来得以成功实现,硬件资源更加强大也是其主要原因。
8.是否需要大量数据来训练深度学习模型?
我们确实需要大量的数据来训练深度学习模型,但也可以通过迁移学习来克服数据量不大这一障碍。
训练深度学习模型所需的一些数据如下所示:
即使数据量不大,针对特定任务进行训练的深度学习模型也可以重用于同一个域中的不同问题,这种技术被称为迁移学习。
9.哪里可以找到一些基本的深度学习项目用来练习?
我强烈建议初学者使用MNIST数据,该数据集包含手写数字及其实际标签,即数字从0到9。
对于中级用户来说,这个 Age Detection竞赛是一个不错的项目,该数据集由印度电影演员的面部图像组成,任务是根据面部属性预测年龄。为了简单起见,这个问题已被转换为类,如青年、中年和老年等多个类问题。
10.深度学习的一些免费学习资源有哪些?
(1)图像处理学习资源
卷积神经网络-吴恩达
https://www.coursera.org/learn/convolutional-neural-networks?spm=a2c4e.11153940.blogcont598772.20.f38c609bWchSYP
解密卷积神经网络(CNN)架构
https://www.analyticsvidhya.com/blog/2017/06/architecture-of-convolutional-neural-networks-simplified-demystified/?spm=a2c4e.11153940.blogcont598772.21.f38c609bWchSYP
理解卷积神经网络入门指南
https://adeshpande3.github.io/adeshpande3.github.io/A-Beginner's-Guide-To-Understanding-Convolutional-Neural-Networks/?spm=a2c4e.11153940.blogcont598772.22.f38c609bWchSYP
机器学习很有趣! 第3部分:深度学习和卷积神经网络
https://medium.com/@ageitgey/machine-learning-is-fun-part-3-deep-learning-and-convolutional-neural-networks-f40359318721?spm=a2c4e.11153940.blogcont598772.23.f38c609bWchSYP
深度卷积神经网络的ImageNet分类
http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf?spm=a2c4e.11153940.blogcont598772.24.f38c609bWchSYP&file=4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf
R-CNN
https://arxiv.org/pdf/1311.2524v5.pdf?spm=a2c4e.11153940.blogcont598772.25.f38c609bWchSYP&file=1311.2524v5.pdf
越来越深入的卷积
https://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Szegedy_Going_Deeper_With_2015_CVPR_paper.pdf?spm=a2c4e.11153940.blogcont598772.26.f38c609bWchSYP&file=Szegedy_Going_Deeper_With_2015_CVPR_paper.pdf
(2)序列预测/时间序列学习资源
序列模型-吴恩达
https://www.coursera.org/learn/nlp-sequence-models?spm=a2c4e.11153940.blogcont598772.27.f38c609bWchSYP
深度学习要点:长期短时记忆
https://www.analyticsvidhya.com/blog/2017/12/fundamentals-of-deep-learning-introduction-to-lstm/?spm=a2c4e.11153940.blogcont598772.28.f38c609bWchSYP
递归神经网络的不合理有效性
http://karpathy.github.io/2015/05/21/rnn-effectiveness/?spm=a2c4e.11153940.blogcont598772.29.f38c609bWchSYP
了解LSTM网络
http://colah.github.io/posts/2015-08-Understanding-LSTMs/?spm=a2c4e.11153940.blogcont598772.30.f38c609bWchSYP
循环神经网络和LSTM
https://ayearofai.com/rohan-lenny-3-recurrent-neural-networks-10300100899b?spm=a2c4e.11153940.blogcont598772.31.f38c609bWchSYP
(3)自然语言处理
自然语言处理的深度学习模型
http://cs224d.stanford.edu/?spm=a2c4e.11153940.blogcont598772.32.f38c609bWchSYP
词语和短语的分布式表征及其组合性
https://arxiv.org/pdf/1310.4546.pdf?spm=a2c4e.11153940.blogcont598772.33.f38c609bZtDnb9&file=1310.4546.pdf
用神经网络进行序列学习
https://arxiv.org/pdf/1409.3215.pdf?spm=a2c4e.11153940.blogcont598772.34.f38c609bZtDnb9&file=1409.3215.pdf
深度语音识别:扩大端对端语音识别
https://arxiv.org/pdf/1412.5567.pdf?spm=a2c4e.11153940.blogcont598772.35.f38c609bZtDnb9&file=1412.5567.pdf
11.深度学习的相关面试问题有哪些?
(1)深度学习模型如何学习?
(2)深度学习模型有哪些局限性?
(3)前馈神经网络和递归神经网络之间有什么区别?
(4)什么是激活特征函数?
(5)什么是CNN,它有什么用途?
(6)什么是池化? 简述其工作原理。
(7)什么是dropout层,为什么要用dropout层?
(8)什么是消失梯度问题,如何克服?
(9)什么是优化函数?说出几个常见的优化函数。
更多面试问题如下:
30个数据科学家关于深度学习的问题
https://www.analyticsvidhya.com/blog/2017/08/skilltest-deep-learning/?spm=a2c4e.11153940.blogcont598772.36.f38c609bZtDnb9
40个数据科学家关于深度学习的问题
https://www.analyticsvidhya.com/blog/2017/04/40-questions-test-data-scientist-deep-learning/?spm=a2c4e.11153940.blogcont598772.37.f38c609bZtDnb9
45个有关深度学习基础知识的问题
https://www.analyticsvidhya.com/blog/2017/01/must-know-questions-deep-learning/?spm=a2c4e.11153940.blogcont598772.38.f38c609bZtDnb9
12.深度学习的未来是什么?
近年来,深度学习已经取得了很大的进步,但仍有很大的潜力。在不久的将来,深度学习将成为每个数据科学实践者所需的技能。事实上,现在有一个岗位是“深度学习工程师”——负责部署和维护该公司各部门使用的深度学习模型。毋庸置疑,这个职位在未来将会有很大的需求。
目前,深度学习的局限之一在于:需要符合人类的要求。它需要大量的数据进行学习,这也引起了很多偏见。但随着时间的推移,这种偏见将会逐渐被消除。