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

▌简介


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

迁移学习是深度学习中的一种流行方法,其中预训练(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/

原文发布于微信公众号 - 专知(Quan_Zhuanzhi)

原文发表时间:2017-12-25

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PPV课数据科学社区

机器学习算法比较

本文主要回顾下几个常用算法的适应场景及其优缺点!(提示:部分内容摘自网络)。 机器学习算法太多了,分类、回归、聚类、推荐、图像识别领域等等,要想找到一个合适算法...

30190
来自专栏数据派THU

这份深度学习课程笔记获吴恩达点赞

来源:机器之心 通过本文用优美的信息图为大家解读深度学习课程的知识与亮点~ 吴恩达在推特上展示了一份由 TessFerrandez 完成的深度学习专项课程信息...

55670
来自专栏新智元

清华&伯克利ICLR论文:重新思考6大剪枝方法

网络剪枝(Network Pruning)是常用的模型压缩方法之一,被广泛用于降低深度模型的繁重计算量。

15910
来自专栏机器学习养成记

AdaBoost算法(R语言)

Boost算法是根据Valiant提出的PAC学习模型衍生得到,是一种可以自适应的改变训练样本的分布,从而使得基分类器聚焦在特殊样本的迭代方法。从基本的Boos...

405110
来自专栏云时之间

《机器学习》西瓜书读书笔记2

2.1:经验误差与过拟合 通常我们把分类错误的样本数占样本总数的比例称为“错误率”,相应的。精度即“1-错误率”。更一般的,我们把学习器的实际预测输出和样本的真...

40960
来自专栏ACM算法日常

第四篇:《机器学习之逻辑回归(上)》

前面我们学习了线性回归,它通过输入一个样本的所有特征,然后和参数计算得到了自己的预测值,再通过梯度下降完成代价函数的最小化。

11050
来自专栏机器学习、深度学习

人群计数--Cross-scene Crowd Counting via Deep Convolutional Neural Networks

Cross-scene Crowd Counting via Deep Convolutional Neural Networks CVPR2015 本文主...

35060
来自专栏机器之心

学界 | 李飞飞等人提出MentorNet:让深度神经网络克服大数据中的噪声

57240
来自专栏IT派

机器学习各类算法比较

导语:机器学习算法太多了,分类、回归、聚类、推荐、图像识别领域等等,要想找到一个合适算法真的不容易,所以在实际应用中,我们一般都是采用启发式学习方式来实验。通常...

433120
来自专栏大数据挖掘DT机器学习

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

作者:赵屹华,计算广告工程师@搜狗, http://www.csdn.net/article/2015-11-26/2826332 这篇文章,我们将讨论如何在逻...

29840

扫码关注云+社区

领取腾讯云代金券