迁移学习是一种深度学习方法,就是将为一项任务训练的模型作为起点,重新用于执行类似任务的模型的过程。通过迁移学习更新和重新训练网络,要比从头开始训练网络更便捷。迁移学习可用于图像分类、目标检测、语音识别和其他应用。
从头开始训练还是执行迁移学习?
要创建深度学习模型,您既可以从头开始训练模型,也可以使用预训练模型执行迁移学习。
对于非常特别的任务,从头开始开发和训练模型效果更好,因为在这些任务中无法使用预先存在的模型。这种方法的缺点在于,它通常需要大量数据才能生成准确的结果。如果较小的网络就能实现所需的准确度,则也可以从头开始创建模型。例如,循环神经网络 (RNN) 和长短期记忆 (LSTM) 网络特别适用于长度不同的顺序数据,这些网络有助于解决信号分类和时间序列预测等问题。
迁移学习适用于存在各种预训练模型的任务。例如,许多常见的卷积神经网络 (CNN) 都是基于 ImageNet 数据集预训练的,该数据集包含 1,400 多万张图像和 1,000 个图像类。如果您需要对花园中的花卉图像(或 ImageNet 数据集中未包含的任何图像)进行分类,并且您的花卉图像数量有限,您可以从 SqueezeNet 网络迁移层及其权重,替换最终层,并使用您的花卉图像重新训练您的模型。
这种方法可以帮助您通过迁移学习在更短时间内获得更高的模型准确度。
迁移学习应用
迁移学习常见于许多深度学习应用,例如:
语音和音频处理
请参阅 MATLAB 示例在深度网络设计器中使用预训练音频网络进行迁移学习。
文本分析
请参阅 MATLAB GitHub 示例微调日语文本的 BERT 模型。
使用预训练模型进行迁移学习
迁移学习的核心是预训练深度学习模型,该模型由深度学习研究人员构建,已使用数千或数百万样本数据点进行了训练。
预训练模型有许多,每种模型各有优缺点:
- 预测速度:模型预测新输入的速度有多快?预测速度可能因硬件和批量大小等其他因素而异,但也受模型架构和大小的影响。
- 大小:模型需要占用多大的内存?模型大小的重要性取决于其预期的部署位置和部署方式。它是在嵌入式硬件还是桌面上运行?当部署到资源受限的目标时,网络的大小非常重要。
- 准确度:模型在重新训练前的表现如何?如果模型在 ImageNet 数据集上表现良好,则可能在新的类似任务中同样表现良好。然而,如果在 ImageNet 上准确度分数低,则不一定意味着该模型在所有任务中都表现不佳。
哪个模型最适用于您的迁移学习工作流?
由于有多种迁移学习模型可供选择,因此,务必牢记涉及的权衡因素和具体项目的总体目标。最好尝试各个模型,以找到最适合您的应用的模型。
凭借简单的快速入门模型,例如 GoogLeNet、VGG-16 和 VGG-19,您可以实现快速迭代,并试验不同数据预处理步骤和训练选项。您一旦找到适合的设置,就可以尝试更准确的网络,看看能否改进您的结果。
如果模型大小受到部署环境的限制,您可以考虑轻量级和计算高效的模型,如 SqueezeNet、MobileNet-v2 和 ShuffleNet。
如何在 MATLAB 中得到预训练模型?
浏览 MATLAB® 深度学习模型中心,按类别访问最新模型并获取关于选择模型的提示。您可以使用单个 MATLAB 函数(例如 darknet19 函数)加载大多数模型。
您也可以从外部平台获得预训练网络。您可以使用导入函数,例如 importNetworkFromTensorFlow 函数,将模型从 TensorFlow™、PyTorch® 或 ONNX™ 转换为 MATLAB 模型。
迁移学习在软传感器设计中的应用
阅读 Poclain Hydraulics 如何在 MATLAB 中利用预训练网络加速软传感器的设计。
使用 MATLAB 进行迁移学习
通过将 MATLAB 与 Deep Learning Toolbox™ 结合使用,您可以访问数百个预训练模型,并使用内置函数或交互式 App 执行迁移学习。对于不同迁移学习应用,您可能还需要使用其他工具箱,如 Computer Vision Toolbox™、Audio Toolbox™、Lidar Toolbox™ 或 Text Analytics Toolbox™。
迁移学习工作流
迁移学习工作流的步骤示意图。
虽然有各种迁移学习架构和应用,但迁移学习工作流的步骤大同小异。下图显示图像分类的迁移学习工作流。迁移学习是基于预训练的 GoogLeNet 模型执行的,这是一个常见网络,深度为 22 层,经训练可将对象分类为 1,000 个类别。
- 选择一个预训练模型。开始时,最好选择一个简单模型。
GoogLeNet 模型的架构,网络深度为 22 层,经过训练可将对象分类为 1,000 个类别。
- 替换最终层。要重新训练网络以对一组新图像和类进行分类,您需要替换 GoogLeNet 模型的最后一个可学习层和最终分类层。最终全连接层(最后一个可学习层)经过修改可包含与新类数量相同的节点数量。新分类层将根据 softmax 层计算的概率生成输出。
在重新训练模型之前,替换 CNN 模型的最后一个可学习层和分类层。
修改这些层后,最终全连接层将指定网络要学习的新类的数量,而分类层将根据可用的新输出类别确定输出。例如,GoogLeNet 最初是基于 1,000 个类别进行训练的,但通过替换最终层,您可以重新训练它,使其只对您感兴趣的五个(或任何其他数量)类别的对象进行分类。
- 可以选择冻结权重。您可以通过将网络前几层的学习率设置为零来冻结这些层的权重。在训练过程中,冻结层的参数不会更新,这可以显著加快网络训练速度。如果新数据集较小,则冻结权重还可以防止网络对新数据集进行过拟合。
- 重新训练模型。重新训练将更新网络,以学习和识别与新图像和类别相关联的特征。在大多数情况下,相较于从头开始训练模型,重新训练需要的数据更少。
- 预测和评估网络准确度。在重新训练模型后,您可以对新图像进行分类,并评估网络的性能。
交互式迁移学习方法
使用深度网络设计器,您能够以交互方式完成整个迁移学习工作流,其中包括选择或导入(从 MATLAB、TensorFlow 或 PyTorch 中)预训练模型,修改最终层,以及使用新数据重新训练网络,这一切只需很少的编码或根本无需编码即可实现。
了解有关迁移学习的更多信息
观看这些视频,了解如何通过命令行或使用深度网络设计器开始迁移学习。
相关主题
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)