转移培训学习深度学习模型
转移的学习是一种深度学习的方法模型,已经训练了一个任务作为一个模型的一个起点,执行类似的任务。更新和培训网络转移学习通常是快得多,也更容易比从头培训网络。的方法是常用的目标检测、图像识别、和语音识别应用程序等等。
学习是一个受欢迎的技术,因为:转移
- 它使您训练模型与不带安全标签的数据时通过重用流行模型已经在大型数据集训练。
- 它可以减少培训时间和计算资源。转移学习,权重不从头开始学,因为pretrained模型已经学会了权重基于以前的经验。
- 您可以利用模型架构开发的深度学习研究社区,包括流行的架构如GoogLeNet和ResNet。
Pretrained模型转移学习
转移的中心学习的pretrained深学习模型,由深度学习人员,培训使用成千上万的样本训练图像。
许多pretrained模型是可用的,每个人都有优点和缺点考虑:
- 大小:所需的内存占用为模型是什么?您的模型的重要性的大小取决于你打算在哪里以及如何部署它。它将运行在嵌入式硬件或桌面?网络的大小当部署低内存系统尤其重要。
- 准确性:培训前模型的表现如何?通常情况下,一个模型,ImageNet表现良好,常用数据集包含一百万张图片和一千类的图片,可能会执行新的,相似的任务。然而,准确度较低分数ImageNet并不一定意味着模型将所有任务上表现不佳。
- 速度:预测模型预测新输入的有多快?虽然预测速度可以随等深度学习硬件和批量大小,速度也将随选择的架构模型,和大小的模型。
您可以使用MATLAB和深度学习工具箱来访问pretrained网络的最新研究一行代码。工具箱还提供了指导选择正确的网络传输的学习项目。
哪种模式最适合学习转移应用程序?
与许多转移学习的型号供你选择,重要的是要记住权衡和特定项目的总体目标。网络精度较低,例如,可能是完全适合一个新的深度学习的任务。一个好的方法是尝试各种模型来找到最适合您的应用程序。
简单的模型开始。用简单的模型,如AlexNet、GoogLeNet VGG-16, VGG-19,你可以快速迭代和尝试不同的数据预处理步骤和培训选项。一旦你看到什么设置工作得很好,你可以尝试一个更精确的网络是否改善您的结果。
轻量级和效率计算模型。SqueezeNet、MobileNet-v2 ShuffleNet都是不错的选择,当部署环境的地方限制模型的大小。
您可以使用深层网络设计师为您的项目快速评估各种pretrained模型和更好的理解不同的模型架构之间的权衡。
转移学习工作流程
虽然有各种转移学习体系结构和应用程序,大多数转移学习工作流遵循共同的一系列步骤。
- 选择一个pretrained模型。开始的时候,它可以帮助选择一个相对简单的模型。这个示例使用GoogLeNet流行的网络,22层深,一直训练1000对象类别进行分类。
- 取代最后一层。再培训网络分类一套新的图像和类,你替换的最后一层GoogLeNet模型。最后完全连接层修改为包含相同数量的节点作为新类的数量,和一个新的分类层将产生一个输出基于计算出的概率将softmax层。
- 修改后层,最后完全连接层将指定新数量的类网络将学习和分类层将决定输出的新输出的类别。例如,GoogLeNet最初训练1000类别,但取代最后一层,你可以训练它分类只有5(或任何其他数字)你有兴趣类别的对象。
- 选择冻结权重。你可以冻结层早些时候在网络的权重通过设置在这些层学习率为零。培训期间,冻层的参数不更新,可以显著加快网络训练。如果新数据集很小,然后冻结权重也可以防止过度拟合的网络新数据集。
- 重新培训模型。培训相关的网络学习和识别功能将更新与新图片和类别。在大多数情况下,培训需要较少的数据比从头训练模型。
- 预测和评估网络的准确性。重新训练模型之后,您可以将新图片和评估网络性能。
从头训练或转让学习吗?
深度学习的两种常用的方法是从头训练模型和转移学习。
从头开发和培训模型更好的适用于非常具体的任务既存模型不能使用。这种方法的缺点是,它通常需要大量的数据来产生精确的结果。如果你执行文本分析,例如,和你没有访问pretrained模型文本分析但你有访问大量的数据样本,然后从头开始开发一个模型可能是最好的方法。
转移等任务的学习是非常有用的对象识别,各种各样的流行pretrained模型存在。举个例子,如果你需要分类的图像鲜花和你有有限数量的花的图片,你可以把重量和层从一个AlexNet网络取代最后分类层,和重新训练模型的图像。
在这种情况下,可以在更短的时间内达到较高的模型精度与转移学习。
交互式传输方法的学习
你可以使用深层网络设计师交互式地完成整个转移学习工作流程(包括进口pretrained模型,修改最后一层,使用新数据和再培训网络,很少或根本没有编码。