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

简介: 本文简要介绍迁移学习与多任务学习的思想,给出了两种方法的模型示例图,适合对此感兴趣的初学者。

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

迁移学习

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

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

4e4ff5fd8a9dced8e3916d997679f56b64181ee5

1.特征提取

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

2.微调

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

迁移学习应用的基本场景

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

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

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

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

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

多任务学习

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

a09aa35100677a63c383ee79f301ef01da574006

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

数十款阿里云产品限时折扣中,赶紧点击领劵开始云上实践吧!

作者信息

Ibrahim sobh,首席研究员,专注于深度学习

个人主页:https://www.linkedin.com/in/ibrahim-sobh-8681757/#/

本文由阿里云云栖社区组织翻译文章原标题《Transfer Learning vs Multitask Learning》,作者:Ibrahim sobh,译者:海棠,审阅:袁虎。

文章为简译,更为详细的内容,请查看原文

 

 

相关文章
|
机器学习/深度学习 传感器 编解码
再谈注意力机制 | 运用强化学习实现目标特征提取
再谈注意力机制 | 运用强化学习实现目标特征提取
再谈注意力机制 | 运用强化学习实现目标特征提取
|
4月前
|
机器学习/深度学习 自然语言处理 语音技术
Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧
本文介绍了Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧,并通过TensorFlow和PyTorch等库展示了实现神经网络的具体示例,涵盖图像识别、语音识别等多个应用场景。
130 8
|
5月前
|
机器学习/深度学习 PyTorch 算法框架/工具
聊一聊计算机视觉中常用的注意力机制以及Pytorch代码实现
本文介绍了几种常用的计算机视觉注意力机制及其PyTorch实现,包括SENet、CBAM、BAM、ECA-Net、SA-Net、Polarized Self-Attention、Spatial Group-wise Enhance和Coordinate Attention等,每种方法都附有详细的网络结构说明和实验结果分析。通过这些注意力机制的应用,可以有效提升模型在目标检测任务上的性能。此外,作者还提供了实验数据集的基本情况及baseline模型的选择与实验结果,方便读者理解和复现。
296 0
聊一聊计算机视觉中常用的注意力机制以及Pytorch代码实现
|
7月前
|
机器学习/深度学习 自然语言处理 算法
深度学习的奥秘:探索神经网络的核心机制
在这篇文章中,我们将深入浅出地探讨深度学习背后的科学原理和实际应用。通过简化的语言和生动的比喻,我们将揭示神经网络如何模仿人脑处理信息的方式,以及它们如何在各种领域内实现惊人的成就。无论你是技术新手还是资深专家,这篇文章都将为你提供新的视角和深刻的见解。
|
机器学习/深度学习 算法 搜索推荐
多任务学习模型之DBMTL介绍与实现
本文介绍的是阿里在2019年发表的多任务学习算法。该模型显示地建模目标间的贝叶斯网络因果关系,整合建模了特征和多个目标之间的复杂因果关系网络,省去了一般MTL模型中较强的独立假设。由于不对目标分布做任何特定假设,使得它能够比较自然地推广到任意形式的目标上。
|
机器学习/深度学习 资源调度 算法
深度学习原理篇 第六章:DETR
简要介绍DETR的原理和代码实现。
654 0
|
机器学习/深度学习 数据采集 人工智能
头疼!卷积神经网络是什么?CNN结构、训练与优化一文全解
头疼!卷积神经网络是什么?CNN结构、训练与优化一文全解
132 0
|
机器学习/深度学习 Shell 数据处理
深度学习原理篇 第九章:UP-DETR
简要介绍UP-DETR的原理和代码实现。
276 0
|
机器学习/深度学习 自然语言处理 计算机视觉
Transformer系列 | 更深、更强、更轻巧的Transformer,DeLighT(文末获取论文与源码)(一)
Transformer系列 | 更深、更强、更轻巧的Transformer,DeLighT(文末获取论文与源码)(一)
105 0
|
自然语言处理
Transformer系列 | 更深、更强、更轻巧的Transformer,DeLighT(文末获取论文与源码)(二)
Transformer系列 | 更深、更强、更轻巧的Transformer,DeLighT(文末获取论文与源码)(二)
87 0