深度学习

 

什么是深度学习?

您需要知道的三件事

深度学习是一种机器学习技术,教授计算机执行人类与生俱来的活动:从示例中学习。深度学习是无人驾驶汽车背后的关键技术,使它们能够识别停车标志,或区分行人与路灯杆。它是手机、平板电脑、电视机和免提扬声器等消费类设备实现语音控制的关键。深度学习近来获得了大量关注,理由也很充分。深度学习正在实现以前不可能实现的成果。

在深度学习中,计算机模型直接从图像、文本或声音中学习执行分类任务。深度学习模型可以达到最先进的精确度,有时甚至超出人类的表现。该模型通过使用大量的标签化数据以及包含许多层的神经网络架构得到训练。

深度学习的重要性

深度学习如何获得如此惊人的成果?

简而言之,精确。深度学习在比以往更高的层次上实现了识别精确性。这有助于消费电子产品满足用户期望,并且对于无人驾驶汽车等安全关键应用至关重要。深度学习最近已经发展到在一些任务(如对图像中的对象分类)中胜过了人类。

虽然深度学习理论最初创立于上世纪八十年代,但有两个主要原因导致其直到近期才发挥作用:

  1. 深度学习需要大量的标签化数据。例如,无人驾驶汽车开发需要数百万张图片和数千小时的视频。
  2. 深度学习需要巨大的计算能力。具有并行架构的高性能 GPU 对于深度学习很有效。与集群或云计算相结合时,开发团队能够将深度学习网络的训练时间从数周缩短至数小时或更少。

深度学习应用示例

从自动驾驶到医疗设备的各种行业使用了深度学习应用程序。

自动驾驶:汽车研发人员正在使用深度学习来自动检测物体,如停车标志和红绿灯。此外,深度学习还用于探查行人,这有助于减少交通事故。

航空和国防:深度学习用于识别人造卫星照片中的物体以定位关注的区域,以及为部队确定安全或非安全区域。

医学研究:癌症研究人员正在使用深度学习自动检测癌细胞。加州大学洛杉矶分校的团队建造了一种高级显微镜,能产生高维的数据集,用来训练深度学习应用程序以准确地识别癌细胞。

工业自动化:深度学习通过自动检测处于机械不安全距离内的人员或物体,帮助改善在重型机械附近作业的工人的安全性。

电子学 (CES):深度学习正被用于自动听说翻译。例如,响应您的语音并了解您的偏好的家庭助理设备,即是装载了基于深度学习的应用程序。

深度学习的工作原理

大多数深度学习方法使用神经网络架构,这也是深度学习模型通常被称为深度神经网络的原因。

“深度”一词通常是指神经网络中的隐藏层数。传统神经网络只包含 2 到 3 个隐藏层,而深度网络可能包含多达 150 个隐藏层。

深度学习模型通过使用大量的标签化数据进行训练,而神经网络架构直接通过数据学习特征,而不需要手动提取特征。

图 1:神经网络由多个层构成,每个层包含一系列互连节点。网络可能包含数十或数百个隐藏层。

卷积神经网络(CNN ConvNet)是最流行的深度神经网络类型之一。CNN 卷积通过输入数据学习到的特征,并使用二维卷积层,使此架构非常适合用来处理二维数据(例如图像)。

CNN 无需使用手动特征提取,因此不需要识别用于对图像进行分类的特征。CNN 通过直接从图像提取特征来运作。不预先训练相关特征;网络在对一组图像进行训练时学习相关特征。这种自动化的特征提取使深度学习模型能够为计算机视觉任务(如对象分类)提供高精确度。

图 2:具有大量卷积层的网络示例。以不同的分辨率对每个训练图像应用滤波器,且每个卷积图像的输出会用作下一层的输入。

CNN 使用数十或数百个隐藏层检测图像的不同特征。每个隐藏层都增加了所学习的图像特征的复杂度。例如,第一个隐藏层可以学习如何检测边缘,而最后一个隐藏层学习如何检测更复杂的形状,特别是针对我们正在尝试识别的对象的形状。

机器学习与深度学习有什么区别?

深度学习是一种特殊的机器学习形式。机器学习工作流程起始于从图像手动提取的相关特征。然后使用这些特征创建对图像中的对象进行分类的模型。在深度学习工作流程中,自动从图像提取相关特征。此外,深度学习还执行“端到端学习”,即为网络提供原始数据和分配要执行的任务(如分类),而神经网络学习如何自动执行此操作。

另一个主要区别是深度学习算法会随数据发散,而浅层学习则会收敛。浅层学习是指当您向网络添加更多示例和训练数据时,在一定性能水平上趋于稳定的机器学习方法。

深度学习网络的一个主要优势在于,随着数据量增加,它们经常会持续改进。

图 3.将对车辆进行分类的机器学习方法(左)与深度学习(右)进行比较。

在机器学习中,手动选择用于对图像进行分类的特征和分类器。在深度学习中,特征提取和建模步骤是自动化的。

Choosing Between Machine Learning and Deep Learning

Machine learning offers a variety of techniques and models you can choose based on your application, the size of data you're processing, and the type of problem you want to solve. A successful deep learning application requires a very large amount of data (thousands of images) to train the model, as well as GPUs, or graphics processing units, to rapidly process your data.

When choosing between machine learning and deep learning, consider whether you have a high-performance GPU and lots of labeled data. If you don’t have either of those things, it may make more sense to use machine learning instead of deep learning. Deep learning is generally more complex, so you’ll need at least a few thousand images to get reliable results. Having a high-performance GPU means the model will take less time to analyze all those images.

在机器学习和深度学习之间作出选择

机器学习提供了多种技术和模型,您可以根据应用程序、所处理数据的规模以及想要解决的问题类型进行选择。成功的深度学习应用程序需要海量数据(数千张图片)来训练模型,以及 GPU(图形处理单元)来快速处理您的数据。

在机器学习和深度学习之间进行选择时,考虑您是否拥有高性能 GPU 和大量标记化数据。如果您不具备其中任何一项,则使用机器学习代替深度学习可能更明智。深度学习通常更复杂,因此您至少需要几千张图片才能获得可靠的结果。拥有高性能 GPU 意味着该模型将花费更少的时间来分析所有这些图像。

如何创建和训练深度学习模型

人们使用深度学习来执行对象分类的三种最常见的方法如下:

从头开始训练

要从头开始训练深度网络,您需要收集庞大的标签化数据集,并设计用于学习特征和模型的网络架构。这适合新应用程序以及将具有大量输出类别的应用程序。由于需要处理大量数据且学习速率低下,导致这种方法不太常用,这类网络通常需要花费数天乃至数周的时间进行训练。

迁移学习

大多数深度学习应用程序使用迁移学习方法,该过程涉及对预先训练的模型进行微调。您从现有网络(如 AlexNet 或 GoogLeNet)起步,并输入包含以前未知的类的新数据。对网络做出一些改进后,现在可以执行新任务,例如仅对狗或猫进行分类,而不是对 1000 个不同的对象进行分类。还有一项优势是需要的数据少得多(处理数千张图片而不是数百万张图片),因此计算时间下降到数分钟或数小时。

迁移学习需要用于访问现存网络内部的接口,因此可以针对新任务进行精确的修改和增强。MATLAB® 包含旨在帮助您进行迁移学习的工具和功能。

特征提取

一种不太常见、更加专业化的深度学习方法是使用网络作为特征提取器。由于所有层的任务都是从图像中学习某些特征,因此我们可以在训练过程中随时将这些特征从网络中提取出来。然后可以将这些特征用作机器学习模型(如 支持向量机 (SVM))的输入。

利用 GPU 加速深度学习模型

训练深度学习模型可能会花费很长的时间,可能是几天,也可能是几周。使用 GPU 加速可以显著提升处理速度。将 MATLAB 与 GPU 结合使用可以减少训练网络所需的时间,并且可以将图像分类问题所需的训练时间从几天缩短到几个小时。在训练深度学习模型时,MATLAB 会使用 GPU(如果可用),而不需要您了解如何另行对 GPU 进行编程。

图 4.Deep Learning Toolbox 决定是从头训练您自己的 CNN 还是使用预先训练好的模型进行迁移学习。

深度学习应用场景

通过执行迁移学习或特征提取,预训练的深度神经网络模型可用于对您的问题快速应用深度学习。对于 MATLAB 用户,一些可用的模型包括 AlexNet、VGG-16 和 VGG-19,以及使用 importCaffeNetwork 导入的 Caffe 模型(例如来自 Caffe Model Zoo)。

使用 AlexNet 通过您的网络摄像头识别物体

使用 MATLAB、一个简单的网络摄像头和一个深度神经网络识别您周围的物体。

示例:使用深度学习进行对象检测

对象识别(识别图片或视频中的特定对象)外,深度学习还可用于对象检测对象检测表示识别和定位场景中的对象,并允许定位图像中的多个对象。

使用 MATLAB 进行深度学习

MATLAB 让深度学习简单易行。除了管理大型数据集的工具和功能,MATLAB 还提供用于处理机器学习、神经网络、计算机视觉和自动驾驶的专用工具箱。

只需几行代码,MATLAB 就可以让您进行深度学习,而不需要成为专家。快速入门,创建和可视化模型,并将模型部署到服务器和嵌入式设备。

众多团队正在成功地使用 MATLAB 进行深度学习,因为它可以让您:

  1. 只需几行代码就能创建和可视化模型。
  2. MATLAB 让您可以使用极少的代码构建深度学习模型。利用 MATLAB,您可以快速导入预训练的模型,并在您调整训练参数时直观地显示和调试中间结果。

  3. 无需成为专家也能执行深度学习。
  4. 您可以使用 MATLAB 来学习和获取深度学习领域的专业知识。大多数人从未参加过深度学习课程。我们必须在工作中学习。MATLAB 使这一领域的学习变得切实可行且容易实现。此外,MATLAB 使领域专家能够执行深度学习,而不是将任务转交给可能不了解您的行业或应用的数据科学家。

  5. 自动化图像和视频的路面真实标记。
  6. MATLAB 使用户可以交互地标记图像中的对象,并且可以在视频中自动进行路面真实标记,以用于训练和测试深度学习模型。这种交互式和自动化方法可以在更短的时间内获得更好的结果。

  7. 将深度学习整合到单个工作流程中。
  8. MATLAB 可以在单个工作流中统一多个领域。使用 MATLAB,您可以在同一个环境中进行思考和编程。它提供用于深度学习的工具和功能,还提供针对馈送到深度学习算法中的一系列领域(例如信号处理、计算机视觉和数据分析)的工具和功能。

使用 MATLAB,您可以将结果整合到现有的应用程序中。MATLAB 可在企业系统、集群、云和嵌入式设备上自动部署您的深度学习模型。

查看更多深度学习特性并获取示例代码

有关如何训练和使用深度学习模型的更多信息,请参见 MATLABComputer Vision Toolbox™Statistics and Machine Learning Toolbox™Deep Learning Toolbox™Automated Driving Toolbox™

了解有关深度学习的更多信息

在此 MATLAB® 技术讲座中探索深度学习基础知识。您将了解深度学习为何变得如此受欢迎,您将了解到 3 个概念:深度学习是什么、如何在现实世界中使用,以及如何入门。
观看关于如何使用 MATLAB®、一个简单的网络摄像头和一个深度神经网络来识别周围物体的快速演示。该演示使用 AlexNet,这是针对一百多万张图片进行了预先训练的深度卷积神经网络(CNN 或 ConvNet)。
了解使用深度学习网络进行语义分割的高级工作流程。此外,了解图像标注应用如何能够加速您的工作流程,以在像素级进行Ground Truth的标注。.
利用一个综合运用流式细胞技术、光子时间拉伸和机器学习算法的成像系统,加州大学洛杉矶分校的研究人员能够在不使用生物标记标签的情况下对血液样本中的癌细胞进行分类。
在 MATLAB 中使用机器学习技术并根据图像中的独特特征来识别场景。