迁移学习与多任务学习简析

对于深度学习而言,训练网络这一过程是相当乏味的,需要不断根据实验结果调整网络结构和模型。相对于随机初始化后调参而言,有没有更加高效的方式呢?答案是肯定的。一些科研人员发现,将其它训练好的模型重新应用于另外一个任务,或者是将相同的网络模型应用于多任务中,模型性能可能会更好。本文将讨论这两种重要方法——迁移学习(Transfer Learning)和多任务学习(Multi-task Learning)。

迁移学习

在迁移学习中,科研人员希望利用源任务(source task)学到的知识来帮助学习另一个目标任务(target task)。例如,可以将一个训练好的图像分类网络模型用于另一个与图像识别相关的任务。另外一个例子是将模拟环境中训练的网络所学到的知识(网络参数)迁移到真实环境的网络中。

基本上,神经网络迁移学习主要有两个应用场景:特征提取(Feature Extraction)和微调(Fine Tuning)。对于ImageNet挑战赛而言,众所周知的一个网络模型是VGG网络,该网络模型可以分类1000种不同的图像,因此可以将其应用到另外一个任务中,比如具体的医学图像分类。如何去寻找已训练好的网络模型呢?有些网站已经对此有所总结,比如Model zoo。

clipboard.png

1.特征提取

在特征提取中,可以在预先训练好的网络结构后添加一个简单的分类器,将源任务上的预先训练好的网络作为另一个目标任务的特征提取器,只对最后增加的分类器参数进行重新学习,而预先训练好的网络参数不被修改。这使得新任务的特征提取时使用的是源任务中学习到的参数,而不用重新学习所有参数。但是,这些网络参数可能对源任务而言显得更加适合。

2.微调

微调允许修改预先训练好的网络参数来学习目标任务。一般而言,其大致过程是在预先训练过的网络上添加新的随机初始化层,此外预先训练的网络参数也会被更新,但会使用较小的学习率以防止预先训练好的参数发生较大改变。常用的方法是固定底层的参数,调整一些顶层或具体层的参数。这样做的好处可以减少训练参数的数量,同时也有助于克服过拟合现象的发生,尤其是当目标任务的数据量不足够大的时候,该方法实践起来很有效果。实际上,微调要优于特征提取,因为它能够对迁移过来的预训练网络参数进行优化,使其更加适合新的任务。

迁移学习应用的基本场景

迁移学习大体上根据两个主要因素(1.目标任务的数据集大小、2.源目标和目标任务之间的相似性)将其分成以下四种场景:

场景1:目标任务的数据集是小数据集,且目标任务类似于源目标任务:在这种情况下,建议使用迁移学习中的特征提取方法,因为目标任务的数据集很小,再对其进行训练会导致模型发生过拟合现象。

场景2:目标数据集很小,且目标任务与源任务不同:这种情况建议对底层进行微调,而移除源任务中更深的层、特定层。简而言之,就是只使用源任务中的底层特征提取网络。

场景3:目标数据集很大,且目标任务类似于源任务:在这种情况下,由于拥有大量的数据集,建议从头开始训练网络,网络参数初始化是使用随机初始化的方式。简而言之,就是不依赖于其它预训练好的网络。但是,根据相关研究,利用预先训练好的网络模型来初始化或微调底层的几层网络效果会比完全随机初始化的效果更好。

场景4:目标数据集很大,且目标任务与源任务不同:在这种情况下,可以微调预先训练好的网络中的多层或整个网络的参数。

多任务学习

拿大家经常使用的school data做个简单的对比,school data是用来预测学生成绩的回归问题的数据集,总共有139个中学的15362个学生,其中每一个中学都可以看作是一个预测任务。单任务学习就是忽略任务之间可能存在的关系分别学习139个回归函数进行分数的预测,或者直接将139个学校的所有数据放到一起学习一个回归函数进行预测。而多任务学习则看重任务之间的联系,通过联合学习,同时对139个任务学习不同的回归函数,既考虑到了任务之间的差别,又考虑到任务之间的联系,这也是多任务学习最重要的思想之一。
 

多任务学习的主要目标是通过使用来自这些任务的样本来优化所有网络参数,同时提升多任务的性能。例如,我们希望有一个网络模型可以将输入的人脸图像分类为男性或女性,同时还能够预测其年龄。这个案例中有两个相关的任务:一个是二元分类任务,另一个是回归任务。显而易见,这两个任务是相关的,学习其中一个任务的同时应该增强对另一个任务的理解。

clipboard.png

一种简单的多任务网络设计模型示例如上图所示,可以在任务和任务之间共享部分网络结构。共享部分学习到的是多个任务的共享表示,共享表示具有较强的抽象能力,能够适应多个不同但相关的目标任务,通常使得多任务中的主任务获得更好的泛化能力。另一方面,针对每个不同的任务都会设计具体的顶层网络结构(头),顶层网络结构用来学习如何使用共享表示来完成每个特定的任务。

 

Multi-tasklearning的学习方法

目前多任务学习方法大致可以总结为两类,一是不同任务之间共享相同的参数(common parameter),二是挖掘不同任务之间隐藏的共有数据特征(latent feature)。下面将简单介绍几篇比较经典的多任务学习的论文及算法思想。

A. Regularized multi-task learning

这篇文章很有必要一看,文中提出了基于最小正则化方程的多任务学习方法,并以SVM为例给出多任务学习支持向量机,将多任务学习与经典的单任务学习SVM联系在一起,并给出了详细的求解过程和他们之间的联系,当然实验结果也证明了多任务支持向量机的优势。文中最重要的假设就是所有任务的分界面共享一个中心分界面,然后再次基础上平移,偏移量和中心分界面最终决定了当前任务的分界面。

 

B. Convex multi-task feature learning

本文也是一篇典型的多任务学习模型,并且是典型的挖掘多任务之间共有特征的多任务模型,文中给出了多任务特征学习的一个框架,也成为后来许多多任务学习参考的基础。

 

C. Multitask sparsity via maximum entropy discrimination

这篇文章可以看作是比较全面的总结性文章,文中总共讨论了四种情况,feature selection, kernel selection,adaptive pooling and graphical model structure。并详细介绍了四种多任务学习方法,很具有参考价值。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值