迁移学习

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

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

目录:

1. 它是什么?

2. 怎么运行的

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

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

5. 受欢迎的预训练模型

它是什么?

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

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

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

怎么运行的

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

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

为什么使用它?

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

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

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

你什么时候应该使用它

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

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

迁移学习的方法

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

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

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

2. 使用预训练模型

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

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

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

3. 特征提取

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

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

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

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

受欢迎的预训练模型

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

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

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

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

END.

云栖社区翻译

文章原标题《Transfer Learning》

作者:Niklas Donges

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

原文:https://towardsdatascience.com/transfer-learning-946518f95666?spm=a2c4e.11153940.blogcont585449.21.3c044c3dZbDB6J

本文分享自微信公众号 - PPV课数据科学社区(ppvke123)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-04-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 谷歌用3亿张图做了个深度学习实验,结论:数据还是越大越好

    都说深度学习的兴起和大数据息息相关,那么是不是数据集越大,训练出的图像识别算法准确率就越高呢? Google的研究人员用3亿张图的内部数据集做了实验,然后写了篇...

    小莹莹
  • 【机器学习】你需要多少训练数据?

    从谷歌的机器学习代码中得知,目前需要一万亿个训练样本。 训练数据的特性和数量是决定一个模型性能好坏的最主要因素。一旦你对一个模型输入比较全面的训练数据,通常针对...

    小莹莹
  • 机器学习:你需要多少训练数据?

    作者为Google 软件工程师,美国西北大学电子信息工程博士,擅长大规模分布式系统,编译器和数据库。 ? 从谷歌的机器学习代码中得知,目前需要一万亿个训练样...

    小莹莹
  • 纳米神经网络 NanoNet:数据有限,照样玩转深度学习

    【新智元导读】解决深度学习问题时,使用迁移学习能够很好地减少所需的训练数据量。但是,使用这种方法需要更多的专业知识,比如判断如何调试问题、将哪一层的输出作为输入...

    新智元
  • NanoNets:数据有限如何应用深度学习?

    使用深度学习解决问题的一个常见障碍是训练模型所需的数据量。对大数据的需求是因为模型中有大量参数需要学习。

    AI研习社
  • 集成学习(Ensemble Learning)

    现实生活中,大家都知道「人多力量大」,「3 个臭皮匠顶个诸葛亮」。而集成学习的核心思路就是「人多力量大」,它并没有创造出新的算法,而是把已有的算法进行结合,从而...

    easyAI
  • 不再受限于数据集和硬件,下一代机器学习软件如何构建?

    在 Cortex,我们看到用户推出了基于深度学习的新一代产品,与以前不同的是,这些产品并非都是使用独一无二的模型架构构建的。

    AI研习社
  • 一个案例掌握深度学习

    人工智能越来越火,甚至成了日常生活无处不在的要素。人工智能是什么?深度学习、机器学习又与人工智能有什么关系?作为开发者如何进入人工智能领域?

    会呼吸的Coder
  • 应用 AI 之前,你必须了解的 10 项准备工作

    ? 这篇文章对你的人工智能和机器学习项目进行分解,讨论其各个部分所带来的影响,从而帮助你确定公司是否真正准备利用机器学习、深度学习或人工智能。 不是每一个问题...

    CDA数据分析师
  • 作为一个深度学习新手团队,我是如何拿到 Kaggle 比赛第三名的?

    The Women in Data Science组织与她们的合作伙伴共同发起了 WiDS Datathon 的活动。这个活动的挑战在于,你需要建立一个预测卫星...

    AI研习社

扫码关注云+社区

领取腾讯云代金券