Flutter开发App的未来及其在各行业的应用潜力分析
1196
2022-11-23
深度迁移学习
文章目录
前言深度网络的可迁移性最简单的深度迁移:finetune
为什么需要已经训练好的网络?为什么需要 finetune?Finetune 的优势Finetune 的扩展
深度网络自适应
基本思路小结
深度对抗网络迁移
基本思路核心方法
参考
前言
随着深度学习方法的大行其道,越来越多的研究人员使用深度神经网络进行迁移学习。对比传统的非深度迁移学习方法,深度迁移学习直接提升了在不同任务上的学习效果。并且,由于深度学习直接对原始数据进行学习,所以其对比非深度方法还有两个优势:自动化地提取更具表现力的特征,以及满足了实际应用中的端到端 (End-to-End) 需求。
近年来,以生成对抗网络 (Generative Adversarial Nets, GAN) [Goodfellow et al., 2014]为代表的对抗学习也吸引了很多研究者的目光。基于 GAN 的各种变体网络不断涌现。对抗学习网络对比传统的深度神经网络,极大地提升了学习效果。因此,基于对抗网络的迁移学习,也是一个热门的研究点。
图 32展示了近几年的一些代表性方法在相同数据集上的表现。从图中的结果我们可以看出,深度迁移学习方法 (BA、DDC、DAN) 对比传统迁移学习方法 (TCA、GFK 等),在精度上具有无可匹敌的优势。
深度网络的可迁移性
这个问题对于理解神经网络以及深度迁移学习都有着非常重要的意义。
来自康奈尔大学的 Jason Yosinski 等人 [Yosinski et al., 2014] 率先进行了深度神经网络可迁移性的研究,将成果发表在 2014 年机器学习领域顶级会议 NIPS 上并做了口头汇报。该论文是一篇实验性质的文章(通篇没有一个公式)。其目的就是要探究上面我们提到的几个关键性问题。因此,文章的全部贡献都来自于实验及其结果。(别说为啥做实验也能发文章:都是高考,我只上了个普通一本,我高中同学就上了清华)
在 ImageNet 的 1000 类上,作者把 1000 类分成两份(A 和 B),每份 500 个类别。然后,分别对 A 和 B 基于 Caffe 训练了一个 AlexNet 网络。一个 AlexNet 网络一共有 8 层,除去第 8 层是类别相关的网络无法迁移以外,作者在 1 到 7 这 7 层上逐层进行 finetune 实验,探索网络的可迁移性。
虽然该论文并没有提出一个创新方法,但是通过实验得到了以下几个结论,对以后的深度学习和深度迁移学习都有着非常高的指导意义:
神经网络的前 3 层基本都是 general feature,进行迁移的效果会比较好;深度迁移网络中加入 fine-tune,效果会提升比较大,可能会比原网络效果还好;Fine-tune 可以比较好地克服数据之间的差异性;深度迁移网络要比随机初始化权重效果好;网络层数的迁移可以加速网络的学习和优化。
最简单的深度迁移:finetune
深度网络的 finetune 也许是最简单的深度网络迁移方法。Finetune,也叫微调、finetuning,是深度学习中的一个重要概念。简而言之,finetune 就是利用别人已经训练好的网络,针对自己的任务再进行调整。从这个意思上看,我们不难理解 finetune 是迁移学习的一部分。
为什么需要已经训练好的网络?
在实际的应用中,我们通常不会针对一个新任务,就去从头开始训练一个神经网络。这样的操作显然是非常耗时的。尤其是,我们的训练数据不可能像 ImageNet 那么大,可以训练出泛化能力足够强的深度神经网络。即使有如此之多的训练数据,我们从头开始训练,其代价也是不可承受的。
那么怎么办呢?迁移学习告诉我们,利用之前已经训练好的模型,将它很好地迁移到自己的任务上即可。
为什么需要 finetune?
因为别人训练好的模型,可能并不是完全适用于我们自己的任务。可能别人的训练数据和我们的数据之间不服从同一个分布;可能别人的网络能做比我们的任务更多的事情;可能别人的网络比较复杂,我们的任务比较简单。
举一个例子来说,假如我们想训练一个猫狗图像二分类的神经网络,那么很有参考价值的就是在 CIFAR-100 上训练好的神经网络。但是 CIFAR-100 有 100 个类别,我们只需要 2 个类别。此时,就需要针对我们自己的任务,固定原始网络的相关层,修改网络的输出层,以使结果更符合我们的需要。
图 37展示了一个简单的 finetune 过程。从图中我们可以看到,我们采用的预训练好的网络非常复杂,如果直接拿来从头开始训练,则时间成本会非常高昂。我们可以将此网络进行改造,固定前面若干层的参数,只针对我们的任务,微调后面若干层。这样,网络训练速度会极大地加快,而且对提高我们任务的表现也具有很大的促进作用。
Finetune 的优势
不需要针对新任务从头开始训练网络,节省了时间成本;预训练好的模型通常都是在大数据集上进行的,无形中扩充了我们的训练数据,使得模型更鲁棒、泛化能力更好;Finetune 实现简单,使得我们只关注自己的任务即可。
Finetune 的扩展
在实际应用中,通常几乎没有人会针对自己的新任务从头开始训练一个神经网络。Fine-tune 是一个理想的选择。
Finetune 并不只是针对深度神经网络有促进作用,对传统的非深度学习也有很好的效果。例如,finetune 对传统的人工提取特征方法就进行了很好的替代。我们可以使用深度网络对原始数据进行训练,依赖网络提取出更丰富更有表现力的特征。然后,将这些特征作为传统机器学习方法的输入。这样的好处是显然的:既避免了繁复的手工特征提取,又能自动地提取出更有表现力的特征。
比如,图像领域的研究,一直是以 SIFT、SURF 等传统特征为依据的,直到 2014 年,伯克利的研究人员提出了 DeCAF 特征提取方法 [Donahue et al., 2014],直接使用深度卷积神经网络进行特征提取。实验结果表明,该特征提取方法对比传统的图像特征,在精度上有着无可匹敌的优势。另外,也有研究人员用卷积神经网络提取的特征作为 SVM 分类器的输入 [Razavian et al., 2014],显著提升了图像分类的精度。
深度网络自适应
基本思路
深度网络的 finetune 可以帮助我们节省训练时间,提高学习精度。但是 finetune 有它的先天不足:它无法处理训练数据和测试数据分布不同的情况。而这一现象在实际应用中比比皆是。因为 finetune 的基本假设也是训练数据和测试数据服从相同的数据分布。这在迁移学习中也是不成立的。因此,我们需要更进一步,针对深度网络开发出更好的方法使之更好地完成迁移学习任务。
以我们之前介绍过的数据分布自适应方法为参考,许多深度学习方法 [Tzeng et al., 2014,Long et al.,2015a] 都开发出了自适应层 (Adaptation Layer) 来完成源域和目标域数据的自适应。自适应能够使得源域和目标域的数据分布更加接近,从而使得网络的效果更好。
从上述的分析我们可以得出,深度网络的自适应主要完成两部分的工作:
一是哪些层可以自适应,这决定了网络的学习程度;
二是采用什么样的自适应方法 (度量准则),这决定了网络的泛化能力。
深度网络中最重要的是网络损失的定义。绝大多数深度迁移学习方法都采用了以下的 损失定义方式:
上述的分析指导我们设计深度迁移网络的基本准则:决定自适应层,然后在这些层加入自适应度量,最后对网络进行 finetune。
小结
基于深度网络进行迁移学习,其核心在于,找到网络需要进行自适应的层,并且对这些层加上自适应的损失度量。越来越多的研究者开始使用深度网络进行迁移学习 [Long et al., 2016,Zhuo et al., 2017, Zhuang et al., 2015, Sun and Saenko, 2016, Wei et al., 2016a, Luo et al., 2017]。在这其中,几乎绝大多数方法都采用了卷积神经网络,在已训练好的模型 (如 AlexNet、Inception、GoogLeNet、Resnet 等) 上进行迁移。 特别地,最近意大利的学者 Carlucci 等人在 2017 年计算机视觉领域顶级会议 ICCV 上提出了自动深度网络自适应层 (AutoDIAL, Automatic DomaIn Alignment Layers) [Carlucci et al., 2017]。该方法可以很简单地被加入现有的深度网络中,实现自动的自适应学习,使得深度网络的迁移更便捷。
深度对抗网络迁移
生成对抗网络 GAN(Generative Adversarial Nets) [Goodfellow et al., 2014] 是目前人工智能领域最炙手可热的概念之一。其也被深度学习领军人物 Yann Lecun 评为近年来最令人欣喜的成就。由此发展而来的对抗网络,也成为了提升网络性能的利器。本小节介绍深度对抗网络用于解决迁移学习问题方面的基本思路以及代表性研究成果。
基本思路
GAN 受到自博弈论中的二人零和博弈 (two-player game) 思想的启发而提出。它一共包括两个部分:一部分为生成网络 (Generative Network),此部分负责生成尽可能地以假乱真的样本,这部分被成为生成器 (Generator);另一部分为判别网络 (Discriminative Network),此部分负责判断样本是真实的,还是由生成器生成的,这部分被成为判别器 (Discriminator)。生成器和判别器的互相博弈,就完成了对抗训练。
GAN 的目标很明确:生成训练样本。这似乎与迁移学习的大目标有些许出入。然而,由于在迁移学习中,天然地存在一个源领域,一个目标领域,因此,我们可以免去生成样本的过程,而直接将其中一个领域的数据 (通常是目标域) 当作是生成的样本。此时,生成器的职能发生变化,不再生成新样本,而是扮演了特征提取的功能:不断学习领域数据的特征,使得判别器无法对两个领域进行分辨。这样,原来的生成器也可以称为特征提取器(Feature Extractor)。
通常用 Gf 来表示特征提取器,用 Gd 来表示判别器。
正是基于这样的领域对抗的思想,深度对抗网络可以被很好地运用于迁移学习问题中。
核心方法
ℓrecon: 重构损失,确保私有部分仍然对学习目标有作用ℓdif f erence: 公共部分与私有部分的差异损失ℓsimilarity: 源域和目标域公共部分的相似性损失
参考
https://github.com/jindongwang/transferlearning
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~