一文读懂在深度学习中使用迁移学习的好处

迁移学习是一种使用为任务开发的模型做第二个任务模型起点的机器学习方法。使用预训练模型作计算机视觉和自然语言处理任务的起点是深度学习中一种流行的方法。因为在这些问题上开发神经网络模型需要的大量计算资源和时间资源,并且预训练模型能提供给相关问题技术的巨大助力。

在这篇文章中,你会了解如何使用迁移学习来加速训练并改善深度学习模型的表现。

阅读这篇文章后,你会知道:

  • 什么是迁移学习,以及它的使用方法。
  • 深度学习中迁移学习的常见例子
  • 什么时候在自己的预测建模问题上使用迁移学习。

什么是迁移学习?

迁移学习是一种机器学习技术:一个训练用于完成某个任务上的模型被重新用于第二个相关任务上。

迁移学习和域适应(domain adaptation)指的是在一个环境中学到的东西被利用来改善另一环境中的泛化

第526页,深度学习,2016。

迁移学习是一种优化,可以让你对第二个任务建模的进展变快或提高它的性能。

迁移学习是通过从已学习的相关任务中转移知识来改善新任务的学习。

第11章:迁移学习,机器学习应用研究手册,2009年。

迁移学习与多任务学习和概念漂移等问题有关,并不完全是一个深度学习的研究领域。

由于训练深度学习模型需要巨大的计算资源或使用庞大的数据集,所以在深度学习中的迁移学习非常流行。

如果从第一个任务学习的模型特征是通用(general)的,迁移学习才在深度学习中起作用。

在迁移学习中,我们首先在基础数据集和任务上训练一个基础网络,然后将学习到的特征重新调整或者转移到第二个目标网络上以训练目标数据集和任务。如果这些特征是通用的,这个过程往往会起作用,这意味着特征适合于基础任务和目标任务,而不是只适合于基础任务。

深度神经网络中的特征如何迁移?

以这种形式用于深度学习的迁移学习被称为归纳迁移(inductive transfer)。这就是通过使用适合于不同但相关任务的模型,使可能模型的范围(模型偏差)以有利的方式缩小。

如何使用转移学习?

你可以在你自己的预测建模问题上使用迁移学习。两种常用方法如下:

1. 开发模型方法

2. 预训练的模型方法

开发模型方法

1. 选择源任务。你必须选择与大量数据相关的预测建模问题,这个大量数据要求输入数据、输出数据以及从输入到输出数据映射过程中学习的概念之间存在某种关系。

2. 开发源模型。接下来,你必须为这个第一项任务开发一个熟练的模型。该模型必须比原始模型更好,以确保已经执行了一些特征学习。

3. 重(chong)用模型。然后可以将适合于源任务的模型用作第二任务的模型的起点。这可能涉及使用全部或部分模型,这取决于所使用的建模技术。

4. 调整模型。模型可能需要进行调整

5. 对可用于任务的输入 – 输出配对数据调整或改进模型(视情况而定)。

预训练的模型方法

1. 选择来源模型。预先训练的源模型是从可用的模型中选择的。许多研究机构发布了大量具有挑战性的数据集的模型,这些数据集可能包含在可供选择的候选模型库中。

2. 重用模型。模型预先训练的模型然后可以被用作关于第二任务的模型的起点。这可能涉及使用全部或部分模型,这取决于所使用的建模技术。

3. 调整模型。可选地,可能需要对可用于感兴趣任务的输入 – 输出配对数据调整或改进模型。

这种第二类转移学习在深度学习领域是很常见的。

深度学习转移学习的例子

让我们用深度学习模型的两个常见的转移学习的例子来具体说明。

转移学习与图像数据

使用图像数据作为输入的预测性建模问题进行转移学习是很常见的。

这可能是以照片或视频数据作为输入的预测任务。

对于这些类型的问题,通常使用预先训练好的深度学习模型来处理大型和具有挑战性的图像分类任务,例如ImageNet 1000级照片分类竞赛。

为此次竞赛开发模型的研究机构经常发布最终的模型,并允许重复使用。这些模型可能需要几天或几周才能在现代硬件上进行训练。

这些模型可以下载,并直接合并到需要图像数据作为输入的新模型中。

这种模型的三个例子包括:

  • Oxford VGG Model
  • Google Inception Model
  • Microsoft ResNet Model

有关更多示例,请参阅Caffe模型动物园,其中共享了更多预先训练的模型。

这种方法是有效的,因为图像是在大量的照片上进行训练的,并且要求模型对相对较多的类进行预测,反过来要求模型有效地学习从照片中提取特征以便良好地执行问题。

在“斯坦福大学关于视觉识别的卷积神经网络课程”中,作者谨慎地选择在新模型中使用多少预训练模型。

[卷积神经网络]特征在早期图层中更为通用,后面的图层更具有原始数据集特有的特征

– 迁移学习,CS231n卷积神经网络的视觉识别

迁移学习与语言数据

使用文本作为输入或输出的自然语言处理问题进行传输学习是很常见的。

对于这些类型的问题,使用单词嵌入,即将单词映射到高维连续矢量空间,其中具有相似含义的不同单词具有相似的矢量表示。

存在有效的算法来学习这些分布式文字表示,研究机构通常会发布预先训练过的模型,这些模型是根据许可许可证在非常大的文本文档上进行训练的。

这种类型的两个例子包括:

  • Google的word2vec模型
  • 斯坦福的Glove模型

这些分布式单词表示模型可以被下载并且被合并到深度学习语言模型中,或者作为输入的单词的解释或者作为模型输出的单词的生成。

Yoav Goldberg在他的“深度学习自然语言处理”一书中警告说:

…可以下载训练过的预先训练过的单词向量,在训练状态和基础语料上的差异对结果表示有很大的影响,并且可用的预先训练的表示可能不是最好的选择你的特定用例。

– 第135页,自然语言处理中的神经网络方法,2017。

何时使用转移学习?

转移学习是一种优化,是节省时间或获得更好性能的捷径。

一般来说,直到模型开发和评估之后,在领域中使用转移学习才有好处。

Lisa Torrey和Jude Shavlik在转移学习的章节中描述了使用转移学习时要注意的三个可能的好处:

1. 更高的开始。源模型中的初始技能(在提炼模型之前)比其他方法要高。

2. 较高的坡度。在训练源模型期间技能的提高速度比其他情况下更陡峭。

3. 较高的渐近线。训练好的模型的融合技能要好于其他情况。

理想的情况下,你会看到成功应用转移学习的三个好处。

如果你能够用丰富的数据识别相关的任务,并且你有资源为该任务开发模型并在自己的问题上重复使用它,或者有可用的预训练模型你自己的模型的起点。

在一些你可能没有太多数据的问题上,转移学习可以使你发展熟练的模式,在没有转移学习的情况下你根本无法发展。

源数据或源模型的选择是一个公开的问题,可能需要通过经验开发的领域专业知识和/或直觉。

进一步阅读

如果想深入了解,本节将提供更多有关该主题的资源。

  • 深度学习,2016(http://amzn.to/2fwdoKR)
  • 自然语言处理中的神经网络方法,2017(http://amzn.to/2fwTPCn)

论文

  • 关于迁移学习的调查,2010(https://pdfs.semanticscholar.org/a25f/bcbbae1e8f79c4360d26aa11a3abf1a11972.pdf)
  • 第11章:迁移学习,机器学习应用研究手册,2009年(http://amzn.to/2fgeVro)
  • 深度神经网络中的特征如何转移?(https://arxiv.org/abs/1411.1792)

预训练的模型

  • Oxford VGG Model(http://www.robots.ox.ac.uk/~vgg/research/very_deep/)
  • Google Inception Model(https://github.com/tensorflow/models/tree/master/inception)
  • Microsoft ResNet Model(https://github.com/KaimingHe/deep-residual-networks)
  • Google’s word2vec Model(https://code.google.com/archive/p/word2vec/)
  • Stanford’s GloVe Model(https://nlp.stanford.edu/projects/glove/)
  • Caffe Model Zoo(https://github.com/BVLC/caffe/wiki/Model-Zoo)

文章

  • 维基百科中的迁移学习(https://en.wikipedia.org/wiki/Transfer_learning)
  • Transfer Learning – Machine Learning’s Next Frontier, 2017.(http://ruder.io/transfer-learning/)
  • Transfer Learning, CS231n Convolutional Neural Networks for Visual Recognition(http://cs231n.github.io/transfer-learning/)
  • How does transfer learning work? on Quora(https://www.quora.com/How-does-transfer-learning-work)

总结

在这篇文章中,你了解了如何使用迁移学习来加速培训并提高深度学习模型的性能。

具体来说,你了解到:

  • 什么是迁移学习,以及如何在深度学习中使用。
  • 何时使用迁移学习。
  • 用于计算机视觉和自然语言处理任务的转换学习的例子。

原文发布于微信公众号 - ATYUN订阅号(atyun_com)

原文发表时间:2018-01-07

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏算法channel

3000字详细总结机器学习中如何对模型进行选择、评估、优化

对于一个机器学习工程而言,我们可以选择的模型众多,就之前的章节,我们已经可以选择:

810
来自专栏CSDN技术头条

逻辑回归、决策树和支持向量机(I)

分类问题是我们在各个行业的商业业务中遇到的主要问题之一。在本文中,我们将从众多技术中挑选出三种主要技术展开讨论,逻辑回归(Logistic Regression...

2026
来自专栏SIGAI学习与实践平台

FlowNet到FlowNet2.0:基于卷积神经网络的光流预测算法

光流预测一直都是计算机视觉中的经典问题,同时又是解决很多其他问题的基础而备受关注,例如,运动估计、运动分割和行为识别。随着深度神经网络技术在计算机视觉领域中引发...

805
来自专栏机器之心

学界 | 综述论文:机器学习中的模型评价、模型选择与算法选择

3138
来自专栏机器之心

CVPR 2018 | 中国科学院大学Oral论文:使用鉴别性特征实现零样本识别

选自arXiv 机器之心编译 参与:Panda 在将于今年六月举办的 CVPR 2018 会议上,中国科学院大学、英国邓迪大学和中国科学院脑科学与智能技术卓越创...

3499
来自专栏机器之心

学界 | 通过Crowd Layer,利用众包标注数据集进行深度学习

选自arXiv 机器之心编译 参与:刘晓坤、路雪 本文通过在深度神经网络中引入一种新型众包层(crowd layer),通过反向传播方式,直接利用噪声标签实现端...

3336
来自专栏AI科技评论

动态 | 谷歌大脑新奇发现:分类误差为零的模型就不存在对抗性样本了

AI 科技评论按:谷歌大脑近期的一篇新论文对对抗性样本做了多方面的理论性研究,不仅首次发现了简单数据分布下对抗性样本的分布特性,而且得出了「分类误差为零的模型不...

2272
来自专栏机器之心

入门 | 简述迁移学习在深度学习中的应用

3507
来自专栏人工智能头条

逻辑回归、决策树和支持向量机(I)

1238
来自专栏新智元

【Bengio vs 谷歌】深度学习兄弟对决,神经网络泛化本质之争

【新智元导读】一场或许有关深度学习本质的争论正在火热进行中。去年底,MIT、DeepMind 和谷歌大脑合著的论文《理解深度学习需要重新思考泛化》引发热论。论文...

34412

扫描关注云+社区