转移学习

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

迁移学习是一种深度学习方法,其中一个已经为一个任务训练的模型被用作执行类似任务的模型的起点。使用迁移学习更新和重新训练网络通常比从头开始训练网络更快更容易。该方法通常用于对象检测、图像识别和语音识别应用程序等。

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

  • 它使您能够通过重用已经在大型数据集上训练过的流行模型来训练具有较少标记数据的模型。
  • 它可以减少训练时间和计算资源。在迁移学习中,权重不是从头开始学习的,因为预训练模型已经根据之前的学习学习了权重。
  • 你可以利用深度学习研究社区开发的模型架构,包括流行的架构,如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编码器人工智能生物医学信号处理

Baidu
map