迁移学习

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

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

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

  • 它使您能够通过重用已经在大型数据集上训练过的流行模型来训练带有较少标记数据的模型。
  • 它可以减少训练时间和计算资源。在迁移学习中,权值不是从零开始学习的,因为预先训练的模型已经学习了基于先前学习的权值。
  • 您可以利用深度学习研究社区开发的模型体系结构,包括流行的体系结构,如GoogLeNet和ResNet。

迁移学习的预训练模型

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

有许多预训练模型可用,每种模型都有其优点和缺点需要考虑:

  • 大小:模型所需的内存占用量是多少?模型大小的重要性将因部署位置和方式而异。它是在嵌入式硬件上运行还是在桌面上运行?在部署到内存不足的系统时,网络的大小尤其重要。
  • 准确性:模型在再培训前表现如何?通常,对于ImageNet(一个包含一百万个图像和一千个图像类的常用数据集)来说,一个性能良好的模型也可能在新的类似任务中表现良好。然而,ImageNet上的低准确度分数并不一定意味着该模型在所有任务上都表现不佳。
  • 预测速度:模型预测新输入的速度有多快?虽然预测速度可能会因其他深度学习(如硬件和批量大小)而有所不同,但速度也会因所选模型的体系结构和模型的大小而有所不同。

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

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

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

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

简单的入门模型。使用简单的模型,如AlexNet、GoogLeNet、VGG-16和VGG-19,您可以快速迭代并试验不同的数据预处理步骤和训练选项。一旦你发现哪些设置是有效的,你可以尝试一个更精确的网络,看看它是否改善了你的结果。

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

你可以用深度网络设计器快速评估项目的各种预训练模型,并更好地理解不同模型体系结构之间的权衡。

迁移学习流程

虽然迁移学习的架构和应用多种多样,大多数迁移学习工作流遵循一系列共同的步骤

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

    从头开始培训还是转移学习?

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

    从零开始开发和培训模型更适用于先前存在的模型无法用于的高度特定的任务。这种方法的缺点是通常需要大量数据才能产生准确的结果。例如,如果您正在执行文本分析,并且您无法访问用于文本分析的预训练模型,但可以访问大量数据样本,那么从头开始开发模型可能是最佳方法。

    迁移学习对于以下任务非常有用:对象识别,为之流行的各种pretrained模型存在。例如,如果需要对花卉图像进行分类,并且花卉图像的数量有限,则可以从AlexNet网络传输权重和层,替换最终分类层,并使用现有图像重新训练模型。

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

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

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

一种互动式的迁移学习方法

使用深层网络设计器你可以交互式地完成整个迁移学习工作流-包括导入一个预先训练的模型,修改最后的层,并使用新的数据对网络进行再训练-只需要很少或不需要编码。

Deep Network Designer是一个指向和点击工具,用于在MATLAB中创建或修改深度神经网络。这个视频展示了如何在迁移学习工作流中使用应用程序。

有关详细信息,请参阅深度学习工具箱计算机视觉工具箱™


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

参见:深度学习卷积神经网络GPU编码器人工智能生物医学信号处理