迁移学习用于训练深度学习模型

迁移学习是一种深度学习方法,在这种方法中,一个已经为一个任务训练过的模型被用作一个执行类似任务的模型的起点。使用迁移学习更新和再培训一个网络通常比从头培训一个网络要快得多,也容易得多。该方法通常用于目标检测、图像识别和语音识别等应用。

迁移学习是一种流行的技术,因为:

  • 它使您能够通过重用已经在大型数据集上训练过的流行模型来使用较少标记的数据来训练模型。
  • 它可以减少训练时间和计算资源。使用迁移学习,权重不会从头学习,因为预先训练的模型已经根据之前的学习学习了权重。
  • 您可以利用深度学习研究社区开发的模型架构,包括流行的架构,如googleet和ResNet。

为迁移学习预先训练的模型

迁移学习的中心是预先训练的深度学习模型它是由深度学习研究人员构建的,已经使用了数千或数百万个样本训练图像。

有许多预先训练过的模型可供选择,每种模型都有各自的优缺点:

  • 大小:模型所需的内存占用是多少?模型大小的重要性取决于您打算在哪里部署它以及如何部署它。它将运行在嵌入式硬件还是桌面?在部署到低内存系统时,网络的大小特别重要。
  • 准确性:再培训前模型的表现如何?通常,对于ImageNet(一个包含一百万个图像和一千类图像的常用数据集)性能良好的模型在新的、类似的任务上也可能表现良好。然而,ImageNet上的低精度分数并不一定意味着该模型在所有任务上的表现都很差。
  • 预测速度:模型对新输入的预测速度有多快?虽然预测速度可能会根据其他深度学习如硬件和批大小而变化,但速度也会根据所选模型的架构和模型的大小而变化。

比较流行的预训练网络模型的大小、速度和精度。

您可以使用MATLAB和深度学习工具箱来访问从最新的研究中预先训练的网络只需要一行代码。工具箱还提供了为迁移学习项目选择正确网络的指导。

哪种模式最适合您的迁移学习应用程序?

有许多迁移学习模式可供选择,记住涉及的权衡和特定项目的总体目标是很重要的。例如,一个精确度相对较低的网络可能非常适合一个新的深度学习任务。一个好的方法是尝试各种模型,以找到最适合您的应用程序的模型。

入门的简单模型。使用简单的模型,如AlexNet, GoogLeNet, VGG-16,和VGG-19,你可以快速迭代和实验不同的数据预处理步骤和训练选项。一旦您看到哪些设置工作得很好,您可以尝试一个更准确的网络,看看这是否会改善您的结果。

轻量级和计算效率高的模型。当部署环境限制模型大小时,SqueezeNet、MobileNet-v2和ShuffleNet是很好的选择。

您可以使用深层网络设计师快速评估项目的各种预训练模型,更好地理解不同模型架构之间的权衡。

迁移学习工作流

虽然迁移学习体系结构和应用有很大的不同,大多数迁移学习工作流程遵循一系列常见的步骤

  1. 选择一个预先训练好的模型。在开始的时候,选择一个相对简单的模型会有帮助。这个例子使用了googleet,这是一个流行的网络,有22层深度,经过训练可以对1000个对象类别进行分类。
  1. 替换最后的图层。要重新训练网络对一组新的图像和类进行分类,您需要替换googleet模型的最后一层。最终的全连接层被修改为包含与新类别数目相同的节点数目,以及一个新的分类层,该分类层将根据softmax层计算的概率产生输出。
  • 修改图层后,最终完全连接的图层将指定网络将学习的类的数量,分类层将决定输出输出的类别。例如,googleet最初训练的是1000个类别,但是通过替换最后的层,您可以重新训练它,使它只对您感兴趣的对象的5个(或任何其他数量)类别进行分类。
  1. 可以选择冻结重量。您可以通过将网络中较早层的学习速率设置为零来冻结这些层的权值。在训练过程中,不更新冻结层的参数,可以显著加快网络的训练速度。如果新数据集很小,那么冻结权重也可以防止网络对新数据集的过拟合。
  2. 重新培训模型。再训练将更新网络,以学习和识别与新图像和类别相关的特征。在大多数情况下,再培训比从头培训一个模型需要的数据更少。
  3. 预测和评估网络准确性。在模型被重新训练后,你可以对新图像进行分类并评估网络的性能。

    从零开始培训还是迁移学习?

    深度学习的两种常用方法是从头训练模型和迁移学习。

    从头开始开发和训练一个模型,对于不能使用现有模型的高度特定的任务来说效果更好。这种方法的缺点是通常需要大量数据才能产生准确的结果。例如,如果您正在执行文本分析,并且不能访问文本分析的预先训练的模型,但是您可以访问大量的数据样本,那么从头开始开发模型可能是最好的方法。

    迁移学习对于诸如对象识别,其中各种流行pretrained模型存在。例如,如果你需要对花的图像进行分类,而你的花的图像数量有限,你可以从AlexNet网络中转移权重和图层,替换最终的分类层,并用现有的图像重新训练你的模型。

迁移学习工作流程:负荷网络,替换层,训练网络,评估准确性。

在这种情况下,迁移学习可以在更短的时间内获得更高的模型精度。

比较从零开始训练和迁移学习的网络性能(准确性)。

一种互动的迁移学习方法

你可以使用深度网络设计器交互式地完成整个迁移学习流程-包括导入一个预先训练的模型,修改最终层,并使用新数据重新训练网络-很少或没有编码。

Deep Network Designer是一款用于在MATLAB中创建或修改深度神经网络的点击工具。本视频展示如何在迁移学习工作流程中使用该应用程序。

有关更多信息,请参见深度学习工具箱计算机视觉工具箱™


了解有关迁移学习的更多信息

参见:深度学习,卷积神经网络,GPU编码器,人工智能