迁移学习

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

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

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

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

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

 

相关文章
|
7月前
|
机器学习/深度学习 大数据 测试技术
什么是迁移学习?
在练习机器学习时,训练模型可能需要很长时间。从头开始创建模型架构、训练模型,然后调整模型需要大量的时间和精力。训练机器学习模型的一种更有效的方法是使用已经定义的架构,可能具有已经计算出的权重。这是背后的主要思想 迁移学习,采用已使用的模型并将其重新用于新任务。在深入研究迁移学习的不同使用方式之前,让来了解为什么迁移学习如此强大且有用的技术。
76 2
|
2月前
|
机器学习/深度学习 决策智能
深度学习中的对抗性训练
在这篇技术性文章中,我们将深入探讨深度学习中的对抗性训练。这种训练方法通过引入对抗性样本来提高模型的鲁棒性和泛化能力。文章将从对抗性训练的基本概念、原理以及实现方法等方面进行详细介绍,并结合实际案例分析其在实际应用中的效果和挑战。通过对这一主题的探讨,希望能够为读者提供有益的技术参考和启示。
100 1
|
5月前
|
机器学习/深度学习 自然语言处理 语音技术
|
5月前
|
机器学习/深度学习 数据采集 Python
使用Python实现深度学习模型:自监督学习与对抗性训练
【7月更文挑战第1天】 使用Python实现深度学习模型:自监督学习与对抗性训练
85 0
|
7月前
|
机器学习/深度学习 数据可视化 PyTorch
使用Python实现深度学习模型:迁移学习与预训练模型
使用Python实现深度学习模型:迁移学习与预训练模型
128 0
|
7月前
|
机器学习/深度学习 算法框架/工具 Python
深度学习第4天:感知机模型
深度学习第4天:感知机模型
|
7月前
|
机器学习/深度学习
转弯半径-深度学习训练
转弯半径(RADIUS OF TURNING CIRCLE),是指汽车行驶过程中,由转向中心到前外转向轮与地面接触点的距离。当方向盘转到极限位置时,由转向中心到前外转向轮接地中心的距离称为最小转弯半径,它反映了汽车通过最小曲率半径弯曲道路的能力和在狭窄路面上调头行驶的能力。
127 1
|
机器学习/深度学习 算法 自动驾驶
强化学习模型
强化学习模型
193 0
|
机器学习/深度学习 PyTorch 算法框架/工具
【15】宝可梦数据集基于迁移学习训练
【15】宝可梦数据集基于迁移学习训练
259 0
【15】宝可梦数据集基于迁移学习训练
|
机器学习/深度学习 算法 TensorFlow
深度学习与遗传算法的碰撞——利用遗传算法优化深度学习网络结构(详解与实现)
本文使用MNIST数据集和Tensorflow构建简单的全连接网络,利用遗传算法优化隐藏层数和每层的节点数,使用的原理同样适用于更复杂的网络和数据集。
3408 0
深度学习与遗传算法的碰撞——利用遗传算法优化深度学习网络结构(详解与实现)