转移学习

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

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

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

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

转移学习的预磨模模型

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

有许多预制模型可用,每个备用型号都有优势和缺点:

  • 尺寸:模型的所需内存足迹是什么?您的模型尺寸的重要性会根据您打算部署的位置以及如何进行而有所不同。它会在嵌入式硬件或桌面上运行吗?在部署到低存储器系统时,网络的大小尤为重要。
  • 准确性:在再培训之前,模型的表现如何?通常,对ImageNet执行良好的模型,该模型是包含百万图像和千类图像的常用数据集,也可能在新的类似任务上表现良好。但是,在想象中的低精度得分并不一定意味着模型将在所有任务中执行不佳。
  • 预测速度:模型可以在新输入上预测有多快?虽然预测速度可以基于其他深度学习,例如硬件和批量大小,但速度也基于所选模型的架构和模型大小而变化。

比较流行磨普网络的模型大小,速度和准确性。

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

哪种型号最适合您的转移学习申请?

许多迁移学习模式可供选择,重要的是要记住所涉及的权衡以及您特定项目的整体目标。例如,精度相对较低的网络可能是完全适合新的深度学习任务。一种良好的方法是尝试各种模型来找到最适合您申请的模型。

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

轻量级和计算效率高的模型.当部署环境放置型号大小的限制时,Screezenet,MobileNet-V2和Shufflenet都是好的选择。

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

迁移学习流程

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

  1. 选择佩带的模型。入门后,它可以帮助选择一个相对简单的模型。此示例使用Googlenet,一个流行的网络,具有22层深度,已培训以分类1000个对象类别。
  1. 替换最后的图层。要重新培训网络以对新的图像和类进行分类,请替换Googlenet模型的最后一层。最终完全连接的层被修改为包含与新类的数量相同数量的节点,以及将基于由Softmax层计算的概率产生输出的新分类层。
  • 修改层后,最终完全连接的层将指定新的网络将学习的类数量,并且分类层将确定来自的输出新的输出的类别。例如,GoogLeNet最初训练1000个类别,但是通过替换最后的层,你可以重新训练它只分类你感兴趣的5个(或任何其他数字)类别的对象。
  1. 任选地冻结重量。您可以通过将网络中较早层次的学习速率设置为零来冻结网络中较早层次的权重。在训练过程中,不更新冻结层的参数,可以显著加快网络训练速度。如果新数据集很小,那么冻结权值也可以防止网络对新数据集的过拟合。
  2. 恢复模型。Retringing将更新网络以学习和标识与新图像和类别相关联的功能。在大多数情况下,Retrings需要较少的数据,而不是从头训练模型。
  3. 预测和评估网络准确性。在对模型进行重新训练之后,您可以对新的图像进行分类,并评估网络的性能。

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

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

    对于从划痕开发和培训模型,更好地为无法使用预先存在的模型的高度特定任务工作。这种方法的缺点是它通常需要大量数据来产生准确的结果。If you’re performing text analysis, for example, and you don’t have access to a pretrained model for a text analysis but you do have access to a large number of data samples, then developing a model from scratch is likely the best approach.

    转移学习对于诸如此类的任务是有用的对象识别,为之流行的各种pretrained模型存在。例如,如果您需要对花图像进行分类并且您有有限数量的花卉图像,则可以从亚历克网网络传输权重和层,替换最终分类层,并用您拥有的图像恢复模型。

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

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

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

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

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

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

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


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

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