迁移学习

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

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

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

  • 它可以让你通过重用那些已经接受过培训的大型数据集热门机型训练较少的标记数据模型。
  • 它可以减少训练时间和计算资源。在迁移学习中,权值不是从零开始学习的,因为预先训练的模型已经学习了基于先前学习的权值。
  • 您可以通过深学研究界开发的模型架构,包括流行的架构,如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编码器人工智能生物医学信号处理