翻译 | AI科技大本营(微信ID:rgznai100,点击查看更多干货文章)git
迁移学习是机器学习方法之一,它能够把为一个任务开发的模型从新用在另外一个不一样的任务中,并做为另外一个任务模型的起点。github
这在深度学习中是一种常见的方法。因为在计算机视觉和天然语言处理上,开发神经网络模型须要大量的计算和时间资源,技术跨度也比较大。因此,预训练的模型一般会被从新用做计算机视觉和天然语言处理任务的起点。算法
这篇文章会发现告诉你,如何使用迁移学习来加速训练过程和提升深度学习模型的性能,以及解答如下三个问题:微信
什么是迁移学习,以及如何使用它网络
深度学习中迁移学习的常见例子机器学习
在本身的预测模型问题上何时使用迁移学习分布式
深刻学习中关于迁移学习的简要介绍Mike拍摄的关于鸟的照片性能
迁移学习是机器学习技术的一种,其中在一个任务上训练的模型被从新利用在另外一个相关的任务上。学习
书本解释:优化
“迁移学习和领域自适应指的是将一个任务环境中学到的东西用来提高在另外一个任务环境中模型的泛化能力” ——2016年“Deep Learning”,526页
迁移学习也是一种优化方法,能够在对另外一个任务建模时提升进展速度或者是模型性能。
“迁移学习就是经过从已学习的相关任务中迁移其知识来对须要学习的新任务进行提升。”
——第11章:转移学习,机器学习应用研究手册,2009年。
迁移学习还与多任务学习和概念漂移等问题有关,它并不彻底是深度学习的一个研究领域。
尽管如此,因为训练深度学习模型所需耗费巨大资源,包括大量的数据集,迁移学习便成了深度学习是一种很受欢迎的方法。可是,只有当从第一个任务中学到的模型特征是容易泛化的时候,迁移学习才能在深度学习中起到做用。
“在迁移学习中,咱们首先在基础数据集和任务上训练一个基础网络,而后将学习到的特征从新调整或者迁移到另外一个目标网络上,用来训练目标任务的数据集。若是这些特征是容易泛化的,且同时适用于基本任务和目标任务,而不仅是特定于基本任务,那迁移学习就能有效进行。” ——深度神经网络中的特征如何迁移的?
这种用于深度学习的迁移学习形式被称为推导迁移(inductive transfer)。就是经过使用合适但不彻底相同的相关任务的模型,将模型的范围(模型误差)以有利的方式缩小。
推导迁移的描述 采起“迁移学习”
你能够在你本身的预测模型问题上使用迁移学习。一般有两种方法:
开发模型方法
预训练模型方法
选择源任务。你必须选择一个与大量数据相关的预测模型问题,这个大量的数据须要与输入数据,输出数据和/或从输入到输出数据映射过程当中学习的概念之间存在某种关系。
开发源模型。接下来,你必须为这个第一项任务开发一个熟练的模型。该模型必须比原始模型更好,以确保一些特征学习已经发挥了其做用。
重用模型。而后能够将适合元任务的模型用做感兴趣的另外一个任务模型的起点。这取决于所使用的建模技术,可能涉及到了所有或部分模型。
调整模型。可选项,对感兴趣任务的调整输入—输出配对数据或改进模型。
选择源任务。从可用的模型中选择预训练的元模型。许多研究机构会发布已经在大量的且具备挑战性的数据集上训练好的模型,在可用模型的模型池里面也能找到这些模型。
重用模型。而后能够将预训练的模型用做感兴趣的另外一个任务模型的起点。这取决于所使用的建模技术,可能涉及使用所有或部分模型。
调整模型。可选项,对感兴趣任务的调整输入—输出配对数据或改进模型。
第二类迁移学习方法在深度学习领域是很常见的。
让咱们用深度学习模型中两个常见的例子来具体说明迁移学习。
迁移学习与图像数据
使用图像数据做为输入的预测模型问题中进行迁移学习是很常见的。
它多是一个以照片或视频数据做为输入的预测任务。
对于这些类型的问题,一般会使用预先训练好的深度学习模型来处理大型的和具备挑战性的图像分类任务,例如ImageNet 1000级照片分类竞赛。
为这次竞赛开发模型的研究机构一般会发布最终的模型,并在许可条例下容许重复使用。 而训练这些模型可能须要在现代的硬件上花费几天或者几周。
能够直接下载这些模型,并将其合并到以本身图像数据做为输入的新模型中。
这类型模型的三个例子包括:
牛津的VGG模型
谷歌的Inception模型
微软的ResNet模型
有关更多示例,请参阅 Caffe Model Zoo ,其中共享了更多预先训练的模型。
这种方法是有效的,由于图像是从大量的照片上选出来进行训练的,而且要求模型对相对较多的类进行预测,反过来要求模型可以有效地从照片中提取到特征以便在具体问题上有好的效果。
在斯坦福大学关于视觉识别的卷积神经网络课程中,做者谨慎地选择了在新模型中可以使用的预训练模型。
“[卷积神经网络]特征在早期层中更为通用,然后面的层更具备原始数据集特有的特征”
——迁移学习,CS231n卷积神经网络的视觉识别课程
使用文本做为输入或输出的天然语言处理问题进行迁移学习是很常见的。
对于这些类型的问题,使用单词嵌入,即将单词映射到高维连续矢量空间,由于在这个矢量空间中类似含义的不一样单词具备类似的矢量表示。
存在一些有效的算法来学习这些分布式的文字表示,并且研究机构一般会在许可条例下发布预先训练的模型,这些模型是在很是大的文本文档上训练出来的。
这种类型的两个例子包括:
谷歌的word2vec模型
斯坦福的GloVe模型
能够下载这些分布式单词表示的模型并将其合并到深度学习语言模型中,以输入单词的解释或者做为从模型输出单词的生成这两种形式。
Yoav Goldberg在他的深度学习之天然语言处理一书中提醒到:
“人们能够下载在大量具备差别的文本上训练过的预训练单词向量,而且基础语料库对该结果表示有很是大的影响,那么这个可用的预训练的表示可能不是您特定用例的最佳选择。”
—— 第135页,天然语言处理中的神经网络方法,2017。
迁移学习是一种优化方法,是节省时间或得到更好性能的捷径。
通常来讲,要到模型开发和评估以后,才能体现迁移学习在某领域中使用的好处。
Lisa Torrey和Jude Shavlik在迁移学习的章节中描述了使用迁移学习时要注意的三个可能的好处:
更高的起点:源模型中的初始性能(在调节模型以前)比其余方法要高。
更大的坡度:在训练源模型期间性能的提升速度比其余状况下更陡峭。
更高的渐近线:训练好的模型的融合性能要好于其余状况。
迁移可能改善学习的三种方式。来自“Transfer Learning”
理想的状况下,你就会看到成功应用迁移学习的三个好处。
一般,若是你可以用丰富的数据来完成相关的任务,而且你有资源为该任务开发一个模型并将其重用于你本身的问题,或者可使用预训练的模型来做为你本身的模型的起点,那么你就能够试一试迁移学习。
在一些你可能没有太多数据的问题上,迁移学习能够解锁一些你的技能。
源数据或源模型的选择是一个公开的问题,这个选择可能须要经过专业领域知识和/或直觉的经验。
在这篇文章中,您了解了如何使用迁移学习来加速训练并提升深度学习模型的性能。
具体来讲,你了解到:
什么是迁移学习,以及如何在深度学习中使用。
什么时候使用迁移学习。
用于计算机视觉和天然语言处理任务中迁移学习的例子。
更多阅读
若是您想深刻了解,本节将提供更多有关该主题的资源。
书
论文
A survey on transfer learning, 2010.
Chapter 11: Transfer Learning, Handbook of Research on Machine Learning Applications, 2009.
How transferable are features in deep neural networks?
文章
Transfer learning on Wikipedia
Transfer Learning – Machine Learning’s Next Frontier, 2017.
Transfer Learning, CS231n Convolutional Neural Networks for Visual Recognition
How does transfer learning work? on Quora
做者:Jason Brownlee
原文连接:https://machinelearningmastery.com/transfer-learning-for-deep-learning/