迁移学习

简介: 到底是迁移学习?什么时候使用它?如何使用它?

所谓迁移学习是指针对新问题重新使用预先训练的模型。由于它能用较少的数据训练深度神经网络,这使得目前它在深度学习领域非常流行。通过这篇文章您将会了解什么是迁移学习,它是如何工作的,为什么应该使用它以及何时可以使用它。同时这篇文章将向您介绍迁移学习的不同方法,并为您提供一些已经预先训练过的模型的资源。

a31329d35f76547a11ea555081bfecfb1996defc

目录:

1.   它是什么?

2.   怎么运行的

3.   你什么时候应该使用它

4.   迁移学习的方法(训练一个模型以重用它,使用预训练模型,特征提取)

5.   受欢迎的预训练模型

它是什么?

在迁移学习中,能够使用预先训练模型的问题只能是与之不同但相类似的问题。比如,您训练了一个简单的分类器来预测图像中是否有背包,则可以使用模型在训练过程中获得的知识来识别太阳镜等其他物体。

000cd85269bf7e6e35910cb9f84af5d194df6b34

迁移学习的总体思路是利用已有知识,即一个模型从一项任务中学到的很多被标记的训练数据可以用在另外一个我们没有很多数据的新任务中。

迁移学习主要用于需要大量计算能力的计算机视觉和自然语言处理任务,如情感分析。

怎么运行的

例如,在计算机视觉领域,神经网络通常会尝试检测早期图层的边缘,中间图层的形状以及底图层中的一些特定人物的特征。通过迁移学习,您可以利用最初接受培训任务留下的早期层和中间层,并仅对底图层进行重新的训练。

例如,上述提到的识别背包的训练模型示例,该模型将用于识别太阳镜。在早期的图层中,模型学会识别物体,因此,我们只需重新训练后一层,这样它就能了解到太阳镜和其他物体的区别。

7acff6ce2f65609102cef9920fa26ac1ae6f2172

为什么使用它?

迁移学习的主要优点是节省训练时间,在大多数情况下您的神经网络不需要大量数据就能使得性能更好。

通常情况下,从头开始训练一个神经网络需要大量的数据,但你并不总是能够获得足够的数据。比如自然语言处理(NLP),它需要创建大型标记数据集。而要训练深度神经网络有时需要大量时间,这样您还可以节省大量训练时间。

DeepMind Technologies首席执行官Demis Hassabis介绍,Transfer也是最有前途的技术之一,它有朝一日可以引领我们进入人工智能(AGI)领域。

8a3b53958682d44db3794bfcc6f22fbed9de6aa8

你什么时候应该使用它

一种情况是,当满足以下一点或两点:(a)您没有足够的带标签的培训数据来从头开始培训您的网络(b)已经存在一个预先培训过的类似任务的网络,该网络通常是经过大量数据的培训的。另一个适用的情况是,任务1和任务2具有类似的输入。

如果原始模型是使用TensorFlow进行训练的,您可以简单地恢复它并为您的任务重新训练一些层。请注意,只有当从第一个任务中学习的特性具有一般性时,转移学习才会起作用,这意味着他们对于另一个相关的任务也很有用。此外,模型的输入需要与初始训练时的尺寸同步。如果没有,您需要增加一个预处理步骤,将输入大小调整到所需大小。

迁移学习的方法

1. 训练一个模型并运用它

举个例子,你想解决任务A,但没有足够的数据来训练深度神经网络。但是你有关于与之类似的任务B的大大量数据,您可以在任务B上训练一个深度神经网络,并以此模型为出发点来解决您的初始任务A。

您所尝试解决的问题决定了您是使用整个模型还是仅使用其中的几层。如果您在两个任务中有相似的输入,则可以重新使用该模型并对新输入进行预测。或者,您也可以更改并重新训练不同的任务特定图层或输入图层。

2. 使用预训练模型

这里有很多这样的模型,所以你需要做一些研究。你可以重复使用多少层,需要再次训练多少层,很难形成一个通用规则。

例如,Keras提供了九种预先训练的模型,可用于迁移学习、预测、特征提取和微调。从这里您可以了解到如何使用这些模型。

也有很多研究机构发布了他们已经培训过的模型。这种类型的迁移学习在深度学习中最为常用。

3. 特征提取

另一种方法是使用深度学习找出表述问题的最佳形式,这意味着要找到最重要的特征。这种方法也被称为表示学习,并且通常可以获得比用手工设计的表示更好地性能。

4401d2097fcd16a807dd840ec9d47205f5b57ff6

在机器学习的大部分时间里,这些功能都是由研究人员和领域专家手工制作的,好在深度学习可以自动提取特征,但是您仍然需要决定应将哪些功能放入网络。神经网络可以了解到你已经投入了哪些功能,哪些是真正重要的,哪些不是。表示学习算法可以在很短的时间内发现一个很不错的特征组合(就算是需要大量人力的复杂任务也可以做到这一点)。

表示学习也可以用于其他问题。您只需使用第一层来找出特征的正确表示,但由于它任务特定性太强,不能使用网络的输出。只需将数据提供给您的网络,并使用其中一个中间层作为输出层。这一层可以被解释为原始数据的表示。

这种方法主要用于计算机视觉领域,因为它可以减少数据集的大小,从而缩短计算时间并使其更适合传统算法。

受欢迎的预训练模型

有一些预先训练好的机器学习模型非常流行,其中之一是Inception-v3模型,该模型经过了ImageNet“大型视觉识别挑战”的培训。在这个挑战中,参与者必须将图像分为1000个类,如“斑马”“斑点狗”和“洗碗机”。

在这里,您可以从TensorFlow中看到有关如何重新训练图像分类器的教程。

微软还通过MicrosoftML R软件包microsoft Python软件包提供了一些预先训练好的模型,可用于R和Python开发。

其他非常流行的模型是ResNet和AlexNet。您可以访问pretrained.ml,它是一个可排序搜索的预训练深度学习模型汇编,还有演示和代码。

数十款阿里云产品限时折扣中,赶紧点击领券开始云上实践吧!

本文由北邮@爱可可-爱生活 老师推荐,阿里云云栖社区组织翻译

文章原标题《Transfer Learning》

作者:Niklas Donges

译者:乌拉乌拉,审校:袁虎。

文章为简译,更为详细的内容,请查看原文文章

 

相关文章
|
3月前
|
机器学习/深度学习 自然语言处理 数据格式
训练你自己的自然语言处理深度学习模型,Bert预训练模型下游任务训练:情感二分类
训练你自己的自然语言处理深度学习模型,Bert预训练模型下游任务训练:情感二分类
55 0
|
6月前
|
机器学习/深度学习 算法 自动驾驶
强化学习模型
强化学习模型
117 0
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
神经网络与深度学习模型
神经网络与深度学习模型
69 0
|
10月前
|
机器学习/深度学习 数据采集 编解码
深度学习如何训练出好的模型
深度学习如何训练出好的模型
|
12月前
|
机器学习/深度学习 编解码 算法
卷积神经网络分类算法的模型训练
卷积神经网络分类算法的模型训练
127 0
|
机器学习/深度学习 算法 PyTorch
使用Pytorch实现对比学习SimCLR 进行自监督预训练
SimCLR(Simple Framework for Contrastive Learning of Representations)是一种学习图像表示的自监督技术。 与传统的监督学习方法不同,SimCLR 不依赖标记数据来学习有用的表示。 它利用对比学习框架来学习一组有用的特征,这些特征可以从未标记的图像中捕获高级语义信息。
636 0
|
机器学习/深度学习 PyTorch 算法框架/工具
【15】宝可梦数据集基于迁移学习训练
【15】宝可梦数据集基于迁移学习训练
210 0
【15】宝可梦数据集基于迁移学习训练
|
机器学习/深度学习 算法
ELECTRA:类似GAN的预训练语言模型
ELECTRA:类似GAN的预训练语言模型
137 0
ELECTRA:类似GAN的预训练语言模型
|
大数据 计算机视觉 异构计算
经典论文系列 | 重新思考在ImageNet上的预训练
这是一篇19年何凯明发的论文,论文基于目标检测、实例分割和人体关键点检测三个方向进行了多项实验,比较了从零使用随机初始化开始训练与使用预训练进行fine-tuning的效果,并得出了一些结论。 在本文将介绍论文的主要思想,主要结论,一些细节和作者基于实验结论上的讨论。
经典论文系列 | 重新思考在ImageNet上的预训练
|
机器学习/深度学习 人工智能
数据不足,如何进行迁移学习?
在没有足够的训练数据时,本文详细介绍了如何使用FloydHub、fast.ai和PyTorch进行迁移学习。
2179 0