深度学习的迁移学习

本文介绍迁移学习的基本概念,迁移时需要关注从源域拿来什么“知识”,以使得目标域不是从0开始学习

什么是迁移学习 (transfer learning)?

  • 将知识从较简单任务的解决方案迁移到较复杂的任务,或者将知识从数据较多的任务迁移到数据较少的任务,大多数机器学习系统都只能完成一项任务
  • 迁移学习的核心是:找到源领域和目标领域之间的相似性,并加以合理利用。这种相似性非常普遍。比如,不同人的身体构造是相似的;自行车和摩托车的骑行方式是相似的;国际象棋和中国象棋是相似的;羽毛球和网球的打球方式是相似的
  • 迁移学习是迈向人工智能的一小步;在人工智能中,单个程序可以完成多项任务

为什么需要迁移学习?

  • 大数据与少标注的矛盾:虽然有大量的数据,但往往都是没有标注的,无法训练机器学习模型。人工进行数据标定太耗时
  • 大数据与弱计算的矛盾:普通人无法拥有庞大的数据量与计算资源。因此需要借助于模型的迁移
  • 普适化模型与个性化需求的矛盾:即使是在同一个任务上,一个模型也往往难以满足每个人的个性化需求,比如特定的隐私设置。这就需要在不同人之间做模型的适配

什么是负迁移?

  • 在源域上学习到的知识,对于目标域上的学习产生负面作用
  • 可能是数据问题导致,即源域和目标域压根不相似;也可能是方法问题,虽然源域和目标域是相似的,但是,迁移学习方法不够好,没找到可迁移的成分

什么是基于样本迁移?

  • 根据一定的权重生成规则,对数据样本进行重用,来进行迁移学习
  • 上图表示了基于样本迁移方法的思想源域中存在不同种类的动物,如狗、鸟、猫等,目标域只有狗这一种类别。在迁移时,为了最大限度地和目标域相似,我们可以人为地提高源域中属于狗这个类别的样本权重

什么是基于特征迁移?

  • 通过特征变换的方式互相迁移,来减少源域和目标域之间的差距;或者将源域和目标域的数据特征变换到统一特征空间中,然后利用传统的机器学习方法进行分类识别。根据特征的同构和异构性,又可以分为同构和异构迁移学习

什么是基于模型迁移?

  • 指从源域和目标域中找到他们之间共享的参数信息,以实现迁移的方法。这种迁移方式要求的假设条件是: 源域中的数据与目标域中的数据可以共享一些模型的参数

什么是基于关系迁移?

  • 这种方法比较关注源域和目标域的样本之间的关系

什么是模型微调 (fine tune)?

  • 指利用别人己经训练好的网络,针对自己的任务再进行调整,是迁移学习的一种实现方式。微调和从头训练(train from scratch)的本质区别在于模型参数的初始化
  • 从头训练(train from scratch):通常指对网络各类参数进行随机初始化(当然随机初始化也存在一定技巧),随机初始化模型通常不具有任何预测能力,通常需要大量的数据或者特定域的数据进行从零开始的训练,这样需要训练到优秀的模型通常是稍困难的
  • 微调初始化:网络各类参数已经在其他数据集(例如ImageNet数据集)完成较好调整的,具备了较优秀的表达能力。因此,我们只需要以较小的学习速率在自己所需的数据集领域进行学习即可得到较为优秀的模型。微调通常情况下,无须再重新设计网络结构,预训练模型提供了优秀的结构,只需稍微修改部分层即可。在小数据集上,通常微调的效果比从头训练要好很多,原因在于数据量较小的前提下,训练更多参数容易导致过度拟合

fine-tuning 模型的三种状态?

  • 状态一:只预测,不训练
  • 状态二:训练,但只训练最后分类层
  • 状态三:完全训练,分类层+之前卷积层都训练

迁移学习与传统机器学习有什么区别?

  • 迁移学习:(1) 训练和测试数据不需要同分布;(2) 不需要足够的数据标注;(3)可以重用之前的模型
  • 传统机器学习:(1)训练和测试数据同分布;(2) 足够的数据标注;(3)每个任务分别建模