迁移学习在深度学习中的应用

2018-04-12 10:34:05 浏览数 (1)

▌简介


迁移学习是一种机器学习方法,其中为一个任务开发的模型可以在另一个任务中重用。

迁移学习是深度学习中的一种流行方法,其中预训练(pre-trained)的模型是计算机视觉和自然语言处理任务的起点。在这些任务上开发神经网络模型需要大量计算时间,用到的技术也差别很大。

在这篇文章中,你将学会如何使用迁移学习来加速训练或者用来提高深度学习模型的性能。

本文介绍以下几点:

  • 什么是迁移学习,如何使用它?
  • 迁移学习在深度学习中的范例
  • 什么时候在你需要在自己的预测建模问题上使用转移学习

▌什么是迁移学习


迁移学习是机器学习技术的一种,在这个技术中,为一个任务开发的模型可以在另一个任务中重用。

迁移学习和领域适应指的是在一个环境中学到的东西被泛化,从而用于另一个环境中。

——《深度学习》Goodfellow 2016, 526页。

迁移学习是一种优化方法,可以在建模第二个任务时加快学习或提高性能。

迁移学习将在相关任务中学习到的相关知识迁移到新任务,可以提高新任务学习的能力。

——《迁移学习,机器学习应用研究手册》,第11章,2009

转移学习与多任务学习和概念漂移等问题有关,并不只是针对深度学习特有的研究领域。

考虑到训练深度学习模型需要消耗巨大的资源,或深度学习模型要非常大规模的数据集上进行训练,因此迁移学习在深度学习中很受欢迎。

如果从第一个任务中模型学习的特征是一般的,迁移学习就只能应用在深度学习中。

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

——深度神经网络特征是如何迁移的?(https://arxiv.org/abs/1411.1792 )

这种用于深度学习的迁移学习形式被称为诱导迁移(inductive transfer)。其中,相似任务的模型之间的偏差,在以有利的方式缩小。

▌如何使用迁移学习


你可以在自己的预测模型中使用迁移学习,有两个常用的方法:

1. 开发模型的方法

2. 预训练模型的方法

▌开发模型方法


1. 选择源任务:您必须选择一个跟目标任务相关的预测模型问题,其中包含大量数据,并且在输入数据、输出数据之间存在一定的关系,这样才能在输入数据到输出数据的映射中进行概念学习。

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

3. 重用模型:然后可以将源任务的模型用作第二任务的模型。可以对源模型及逆行全部或部分重用,这取决于所使用的建模技术。

4. 调整模型:要想将源模型用于感兴趣的新模型中,源模型可能要在输入-输出数据对中进行调整和改进。

▌预训练模型的方法


1. 选择源模型:预训练的源模型是从可用的模型中选择的。许多研究机构在可能发布了基于挑战性数据集的模型,我们可以在这些模型中选择合适的模型作为源模型。

2. 重用模型:预训练的模型可以在下一个任务中使用,可以使用全部或部分模型,这取决于所使用的建模技术。

3. 调整模型:要想将源模型用于感兴趣的新模型中,源模型可能要在输入-输出数据对中进行调整和改进。

▌在深度学习中使用迁移学习的例子


我们可以使用两个常见的例子,来说明在深度学习中使用迁移学习的情况。

▌利用图像数据进行迁移学习


使用图像数据作为输入,并利用迁移学习执行预测建模问题是比较常见的。

这可能就是一个预测任务,其中将图片或视频数据作为输入。

对于这种类型的问题,通常使用预训练的深度学习模型,以应用于诸如ImageNet 1000级图像分类竞赛等大型的和具有挑战性的图像分类任务。

参与这种大型竞赛的科研机构通常会发布他们的模型,并允许重用模型。但是这些模型可能需要几天或几周的训练时间。

可以下载这些模型,并直接将预期图像数据作为输入引入到新的模型。

这种类型的模型有几个典型的例子:

  • 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 )

更多的例子可以参见Caffe Model Zoo,其中分享了很多预训练模型。

这种方法是有效果的,因为图像是在大规模图像上训练的,并在相对较多的类上进行预测,另外,需要模型能够从图像中提取有效的特征。

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

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

——迁移学习,卷积神经网络进行视觉识别,CS231n(http://cs231n.github.io/transfer-learning/ )

▌用语言数据进行迁移学习


自然语言处理问题使用文本作为输入或输出,在自然语言处理上使用转移学习是很常见的。

对于这种问题,常使用词嵌入。词嵌入是将单词映射到高维连续向量空间,其中含义相似的单词具有相似的向量表示。

对于这种分布式单词表示任务存在一些有效的算法,相关研究机构通常会在大规模文本数据集上进行训练,并发布这些预训练的模型。

有两个相关的模型例子:

  • Google’s word2vec Model(https://code.google.com/archive/p/word2vec/ )
  • Stanford’s GloVe Model(https://nlp.stanford.edu/projects/glove/ )

可以下载这些分布式单词表示模型,并将其合并到深度学习语言模型中,这些单词嵌入表示一方面可以作为输入单词的解释,另一方面可以作为模型的输出。

Yoav Goldberg在他的《用深度学习做自然语言处理》一书中提醒:

人们可以下载预训练的词向量(在大规模文本中及逆行训练),训练方法和基础预料对结果有很大的影响。对于你的特定任务来说,可选的预训练词向量可能不是最佳的选择。

——用深度学习做自然语言处理,2017,135页

https://www.amazon.com/Language-Processing-Synthesis-Lectures-Technologies/dp/1627052984/ref=as_li_ss_tl?s=books&ie=UTF8&qid=1505773203&sr=1-1&keywords=Neural Network Methods in Natural Language Processing&linkCode=sl1&tag=inspiredalgor-20&linkId=dc34d824b654bbafe425bd163f77e377

▌什么使用使用迁移学习?


迁移学习是一种优化方法,是节省时间或提高性能的捷径。

一般来说,使用迁移学习的好处一般不会凸显出来,直到开发和评估模型之后。

Lisa Torrey和Jude Shavlik在对迁移学习的介绍中,描述了使用迁移学习可能有三个好处:

1. 更高的开始:源模型中的初始技巧比其他方法要高;

2. 更高的斜率:在源模型的训练中,学习率提高的速度比其他方法要高得多。

3. 更高的渐近线:训练模型的融合技巧比其他方法更好。

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

针对你的任务,如果你有足够的数据,并且有资源为该任务开发模型并将其重用到自己的问题上,或者你有一个预训练好的模型并能将其用在自己的模型中,那么迁移学习是一种值得尝试的方法。

在一些你可能没有太多数据的问题上,迁移学习可以让你开发出一些有技巧的模型,而这些模型在没有迁移学习的情况下是无法开发的。

源数据或源模型的选择是一个开放的问题,可能需要根据专门领域的经验或者你自己的直觉。

▌相关阅读


如果你想进行深入研究,本节将提供更多参考资料。

▌图书


  • 深度学习,2016(Deep Learning)
  • 用神经网络方法做自然语言处理,2017(Neural Network Methods in Natural Language Processing)

▌论文


《迁移学习综述》,2010(A survey on transfer learning, 2010.)

《第11章:迁移学习,机器学习应用研究手册》,2009(Chapter 11: Transfer Learning, Handbook of Research on Machine Learning Applications, 2009.)

《深度神经网络的特征是如何迁移的?》(How transferable are features in deep neural networks?)

▌预训练模型


  • Oxford VGG Model
  • Google Inception Model
  • Microsoft ResNet Model
  • Google’s word2vec Model
  • Stanford’s GloVe Model
  • Caffe Model Zoo

▌文章


  • Transfer learning on Wikipedia(维基百科上的迁移学习)
  • Transfer Learning – Machine Learning’s Next Frontier, 2017.(迁移学习——机器学习的下一个前沿技术)
  • Transfer Learning, CS231n Convolutional Neural Networks for Visual Recognition(迁移学习,CS231n 视觉检测的卷积神经网络)
  • How does transfer learning work? on Quora(迁移学习是如何工作的?)

▌摘要


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

具体地,你学到了下面几点:

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

▌相关链接


  • ImageNet: www.image-net.org
  • Caffe Model Zoo: https://github.com/BVLC/caffe/wiki/Model-Zoo
  • 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
  • Transfer learning on Wikipedia: 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

原文链接:https://machinelearningmastery.com/transfer-learning-for-deep-learning/

0 人点赞