AI 入门 101
什么是迁移学习?

什么是迁移学习?
在进行机器学习实践时,训练一个模型可能需要很长时间。从头开始创建一个模型架构,训练模型,然后调整模型,这是一个巨大的时间和精力投入。训练机器学习模型的一种更高效的方法是使用已经定义好的架构,可能还带有已经计算好的权重。这是迁移学习的主要思想,迁移学习的概念就是取一个已经使用过的模型并将其用于新的任务。
在深入探讨迁移学习的不同使用方法之前,让我们花一点时间来理解为什么迁移学习是一种如此强大和有用的技术。
解决深度学习问题
当你尝试解决一个深度学习问题,例如构建一个图像分类器时,你需要创建一个模型架构,然后在你的数据上训练模型。训练模型分类器涉及调整网络的权重,这个过程可能需要数小时甚至数天,具体取决于模型和数据集的复杂性。
如果模型不能达到所需的任务准确性,模型可能需要调整,然后模型需要重新训练。这意味着需要更多的训练时间,直到找到一个最佳的架构、训练长度和数据集分区。考虑到有多少变量需要相互协调以使分类器有用,这是有道理的,机器学习工程师总是在寻找更简单、更高效的方法来训练和实现模型。因此,迁移学习技术被创造出来。
设计和测试模型后,如果模型被证明是有用的,它可以被保存和稍后用于类似问题。
迁移学习类型
一般来说,有两种不同的迁移学习:从头开始开发一个模型和使用预训练模型。
当你从头开始开发一个模型时,你需要创建一个能够解释你的训练数据并从中提取模式的模型架构。模型训练完成后,你可能需要对其进行更改以获得最佳性能。然后,你可以保存模型架构并将其用作一个将用于类似任务的模型的起点。
在第二种情况下 – 使用预训练模型 – 你只需要选择一个预训练模型来使用。许多大学和研究团队会将他们的模型规格公开,以供一般使用。模型的架构可以与权重一起下载。
进行迁移学习时,可以使用整个模型架构和权重,也可以只使用模型的某些部分/层。仅使用预训练模型的一部分并训练模型的其余部分被称为微调。
微调网络
微调网络描述了训练网络中某些层的过程。如果新训练数据集与用于训练原始模型的数据集非常相似,则可以使用许多相同的权重。
应该解冻和重新训练的网络层数应该根据新数据集的大小进行调整。如果训练数据集很小,最佳做法是保持大多数层不变,只训练最后几层。这是为了防止网络过拟合。或者,可以删除预训练网络的最后几层并添加新的层,然后训练这些新层。相反,如果数据集很大,可能比原始数据集还大,则应该重新训练整个网络。为了使用网络作为固定特征提取器,可以使用网络的大部分来提取特征,只解冻和训练网络的最后一层。
当你微调网络时,请记住,ConvNet的早期层包含表示图像的更通用特征的信息,例如边缘和颜色。相比之下,ConvNet的后层包含与原始模型训练数据集中的个别类别更具体的细节。如果你正在训练一个模型,其数据集与原始数据集非常不同,你可能想要使用模型的早期层来提取特征,只重新训练模型的其余部分。
迁移学习示例
迁移学习最常见的应用可能是使用图像数据作为输入的应用,通常是预测/分类任务。 卷积神经网络 解释图像数据的方式使得重用模型的方面变得容易,因为卷积层通常区分非常相似的特征。迁移学习问题的一个常见示例是 ImageNet 1000 任务,这是一个包含 1000 个不同对象类别的巨大数据集。实现高性能的公司通常会在允许他人重用模型的许可下发布他们的模型。一些通过此过程产生的模型包括 Microsoft ResNet 模型、Google Inception 模型和 牛津 VGG 模型 组。












