深度学习

什么是深度学习?

深度学习在智能工程系统设计中的应用

深度学习是机器学习的一个分支,它使用神经网络训练计算机像人类一样自然而然地做事情:从示例中学习。在深度学习中,模型学习直接从图像、文本或声音等数据执行分类或回归任务。深度学习模型可以达到最高的准确度,其表现往往超过人类。

深度学习的工作原理

深度学习模型基于神经网络架构。受人脑的启发,一个神经网络由分层结构中相互连接的节点或神经元组成,这些节点或神经元将输入与所需输出相关联。神经网络的输入层和输出层之间的神经元称为隐藏层。“深度”一词通常是指神经网络中的隐藏层数。深度学习模型可以有数百甚至数千个隐藏层。

深度学习网络由一系列层组成,每层包含一组相互连接的神经元。

查看典型的神经网络架构。

深度学习模型是用大型标注数据集训练的,它们通常可以直接从数据中学习特征,而无需手动提取特征。虽然关于人工神经网络的理念早在 1958 年就被首次提出,但是,深度学习需要强大的计算能力,而这种算力需求直到二十一世纪才得到满足。如今,研究人员可以利用各种计算资源,使得建立和训练具有数百个连接和神经元的网络成为可能。

高性能 GPU 具有并行架构,可用于高效地实现深度学习。当这些 GPU 与集群或云计算结合使用时,开发团队能够大幅减少深度学习网络的训练时间,从数周缩短至几小时甚至更少。

深度学习模型的类型

深度学习模型有三种类型:卷积神经网络 (CNN)、循环神经网络 (RNN) 和变换器模型

CNN:卷积神经网络 (CNN) 将学习到的特征与输入数据进行卷积,并使用二维卷积层,这使得此架构非常适合处理图像等二维数据。CNN 的工作原理是直接从图像中提取特征。在基于一组图像训练的过程中,该网络会学习相关特征。这种自动化的特征提取使深度学习模型在执行图像分类任务时具有高度准确性。CNN 还可用于对其他类型的数据进行分类,例如时间序列和文本。

用于深度学习的卷积神经网络自动从输入图像中学习特征,并计算每个类的概率。

可视化卷积神经网络的示例。

RNN:循环神经网络 (RNN) 是一种用于深度学习的网络架构,它可以对时间序列或顺序数据进行预测。RNN 特别适合处理长度不同的顺序数据,以及解决自然信号分类、语言处理和视频分析等问题。长短期记忆 (LSTM) 网络是一种特殊类型的 RNN,它比简单的 RNN 更适合学习长期依赖关系。

变换器:变换器旨在跟踪顺序数据中的关系。这些变换器依靠自注意力机制来捕获输入与输出之间的全局依赖关系。它们通常用于自然语言处理,也是 BERT 和 ChatGPT™ 等大型语言模型 (LLM) 的基础。

如何创建深度学习模型

您可以从头开始创建深度学习模型,也可以从预训练深度学习模型入手。换言之,您可以将该模型直接应用于任务,也可以根据任务对该模型进行调整。

从头开始训练:要从头开始训练深度学习模型,您需要收集大型标注数据集,并设计能够学习特征和模型的网络架构。这是适用于新应用或特定应用的好方法。从更广泛的角度讲,它适用于没有现成模型可用的应用领域。这种方法的主要缺点是,它需要标注了真值的大型数据集,而且训练时间可能是几小时到数周不等,具体视任务和计算资源而定。

迁移学习:在图像分类、计算机视觉、音频处理和自然语言处理等深度学习应用领域,迁移学习是一种常用的方法。这种方法涉及微调预训练深度学习模型。您可以从用于图像分类的 SqueezeNet 或 GoogLeNet 等现有模型入手,然后输入包含前所未见的类的新数据。对网络进行一些调整后,您现在便可执行一项新任务,例如只对狗或猫而非 1,000 个不同对象进行分类。此方法还有另一个优势,那就是需要的数据更少,因此训练时间大大减少。

预训练深度学习模型也可以用作特征提取器。您可以将层激活值用作特征来训练另一个机器学习模型,例如支持向量机 (SVM)。您也可以在预训练模型的基础之上构建另一个深度学习模型。例如,您可以使用图像分类 CNN 作为目标检测器的特征提取器。

深度学习与机器学习

深度学习是机器学习的一种特殊类型,两者均属于人工智能 (AI) 范畴。机器学习提供了多种方法和模型,您可以根据具体应用、所处理的数据大小以及要解决的问题类型进行选择。

图中显示人工智能、机器学习和深度学习这三者的定义。

针对您的人工智能应用,选择的是深度学习算法还是机器学习算法,取决于您的系统目标和要求。

为什么选择的是深度学习而不是机器学习?简而言之,准确度使然。与机器学习相比,深度学习通常可以实现更高的准确度,并提供更自动化的扩展工作流。深度学习模型的主要缺点在于,它们更为复杂,需要更大的训练数据集,因此需要更长的训练时间。但是,通过某些方法,可以克服这些缺点或至少削弱它们所带来的影响。

特征工程自动化

机器学习工作流始于从数据中手动提取相关特征。这些特征随后用于创建一个模型,该模型可以基于新数据进行预测。使用深度学习工作流时,在图像识别计算机视觉等应用中,相关特征会自动从图像数据中提取。在处理信号或文本数据时,深度学习可以减少所需的数据预处理

比较用于车辆分类的机器学习(左)与深度学习(右)方法。

训练数据和时间

深度学习的准确度与数据大小成正比。换而言之,随着训练数据大小的增加,深度学习的性能会不断提高。通常,深度学习需要海量数据(例如,用于图像分类的数千张图像)来训练模型。使用高性能 GPU 可以显著减少训练时间。作为替代方案,通过迁移学习修改和重新训练预训练网络,比从头开始训练网络往往要快得多,并且所需的标注数据也更少。

如果训练数据不足,您可以使用合成数据补充现有数据。合成数据可通过使用生成对抗网络 (GAN) 或创建和仿真物理系统模型来生成。

模型大小和复杂度

与机器学习模型相比,深度学习模型要复杂得多,规模也更大,因为它们是由数百个相互连接的层构建而成的。随着深度学习技术的不断进步,深度学习网络架构的复杂度也日益增加。深度学习模型的复杂度和规模对于实现高准确度至关重要。

鉴于其复杂性,深度学习模型通常被视为缺乏可解释性的“黑盒”。可解释 AI 是一个新兴领域,该领域提供旨在用人类术语解释深度学习模型行为的方法。例如,您可以使用 Grad-CAMLIME 来解释深度学习模型在执行图像分类任务过程中所做的预测。

深度学习模型不再局限于在桌面电脑上运行。如何将日益庞大和复杂的深度学习模型部署到资源受限的设备上,是许多深度学习实践者面临的一项越来越严峻的挑战。压缩深度学习模型的方法有很多,这些方法可用于减小深度学习模型占用的磁盘大小、运行时内存和推断时间,同时保持高准确度。

使用投影压缩一个全连接层。层运算写在图的下方。

对一个全连接层进行投影。投影是一种网络压缩方法。

为什么深度学习如此重要

作为无人驾驶汽车背后的一项关键技术,深度学习使汽车能够识别停车标志,或区分行人与灯柱。它是手机、平板电脑、电视机和免提扬声器等消费类设备实现语音控制的关键所在。深度学习近来受到广泛关注,这是有充分理由的。凭借深度学习,计算机和系统能够以越来越高的准确度和自动化程度执行复杂的任务。

深度学习应用

深度学习广泛应用于计算机视觉、图像处理、自动驾驶、信号处理和许多其他领域。每个深度学习应用领域都可能包含若干子应用领域。例如,图像分类、目标检测语义分割均为计算机视觉的子应用。随着新深度学习方法和技术的开发,深度学习应用将继续得到扩展,而深度学习可以提高准确度的新子应用也将浮出水面。

深度学习实用示例

视觉检查是基于图像的部件检查过程,其中,相机扫描被测部件是否存在故障和质量缺陷。通过深度学习和计算机视觉方法,可以实现视觉检查自动化,用于在生物技术、汽车和半导体等许多行业中自动检测制造缺陷。

脑电图 (EEG) 信号是最容易获得的大脑信号,无疑也是被研究最多的信号。您可以使用深度学习自动诊断癫痫,并基于 EEG 信号预测癫痫发作。

虚拟传感器可用于任何需要实时监视和控制的系统,以及使用物理传感器可能不切实际或成本过高的系统。您可以将深度学习与基于模型的设计相结合来设计虚拟传感器。

深度学习在癌症研究中的应用

了解莫菲特癌症中心如何使用深度学习加速科学发现和提供个性化治疗计划。

MATLAB® 提供了成功将人工智能应用于成像和影像组学所需的各种工具。MATLAB 已用于数据预处理、去噪和图像分割等任务。

使用 MATLAB 进行深度学习

通过将 MATLABDeep Learning Toolbox™ 结合使用,您可以设计、分析和仿真深度学习网络。使用其他工具箱(例如 Computer Vision Toolbox™Signal Processing Toolbox™Text Analytics Toolbox™),您可以将深度学习工作流扩展到诸多应用,例如计算机视觉、信号处理和自然语言处理。

深度学习工作流包括预处理和标注数据、构建人工智能模型、可视化模型的决策、仿真 AI 系统以及部署到目标。

可视化从数据准备到部署的深度学习工作流。

用于深度学习的数据

深度学习需要大量的高质量数据。您可以使用数据存储轻松地管理因太大而无法一次性放入内存的数据集合。您也可以使用低代码 App 和内置函数来提高数据质量并自动标注真值

设计深度学习模型

 

从头开始构建的网络

  • 您只需编写几行代码,即可创建深度学习网络,如 CNN、LSTM、GAN 和变换器。
  • 使用多个 GPU、云或集群加速训练。在训练深度学习模型时,MATLAB 可以直接使用 GPU(如果可用),而不要求您对 GPU 进行显式编程。
只需编写几行 MATLAB 代码,即可创建一个 LSTM 深度学习网络。

以编程方式创建 LSTM 网络。

预训练网络

  • 将预训练模型直接应用于您的任务,通过执行迁移学习对其进行调整,或将其用作特征提取器。
  • 浏览 MATLAB 深度学习模型中心,按类别访问最新模型,并在命令行加载预训练模型。
  • 通过使用导入函数,将 TensorFlow™、PyTorch® 和 ONNX™ 模型转换为 MATLAB 网络。将经过训练和未经训练的网络从 Deep Learning Toolbox 导出到 TensorFlow 和 ONNX。
  • 使用内置函数轻松执行迁移学习,用于替换层和调整学习率以执行重新训练。

获取预训练模型,以根据您的深度学习任务对其进行调整。

低代码 App

  • 使用深度网络设计器,您可以通过交互方式设计、分析和修改网络。您还可以从 Deep Learning Toolbox、TensorFlow 和 PyTorch 中导入预训练网络。
  • 试验管理器可帮助您管理多个深度学习实验,跟踪训练参数,分析结果,并比较来自不同试验的代码。
深度网络设计器的截图,显示 CNN 深度学习网络的层。

使用深度网络设计器以图形方式设计、分析和修改深度学习网络。

面向工程师的深度学习

可解释的稳健深度学习

使用 MATLAB,您可以可视化和验证深度学习模型及其预测。

  • 监控深度学习模型的训练进度并绘制性能度量。
  • 通过应用可解释性方法,如 Grad-CAM、遮挡敏感度、LIME 和 Deep Dream,可视化深度学习模型的输出。这有助于您了解深度学习模型如何进行预测。
  • 训练稳健的深度学习模型并验证模型的稳健性。您可以验证网络稳健性,计算网络输出边界,查找对抗样本,检测分布外数据,并验证是否符合行业标准

系统级仿真

使用 Deep Learning Toolbox 模块将经过训练的网络与 Simulink® 系统相集成。这样,您便能够测试深度学习模型与系统其他部分的集成。

部署到目标

您可以将深度学习模型部署到边缘设备、嵌入式系统或端。部署之前,您可以通过执行量化、投影或剪枝来压缩模型