迁移学习

107 阅读4分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第27天,点击查看活动详情

迁移学习

什么是迁移学习

迁移学习(transfer learning)通俗来讲,就是将某个领域或任务上学习到的知识或模式应用到不同但相关的领域或问题中,模拟的是人脑的思维过程,当人在解决一个问题以后,对新的相关联的问题会有类似的解决方法。用成语解释是:举一反三。

举个例子:假设模型会下中国象棋,可以类比,去学习国际象棋;模型会解决英语翻译,可以去类别翻译法语。世间万事万物皆有共性,如何合理地找寻它们之间的相似性,进而利用这个桥梁来帮助学习新知识,是迁移学习的核心问题。

在迁移学习中,我们首先在一个基础数据集和基础任务上训练一个基础网络,然后我们再微调一下学到的特征,或者说将它们迁移到第二个目标网络中,用目标数据集和目标任务训练网络。如果特征是泛化的,那么这个过程会奏效,也就是说,这些特征对基础任务和目标任务都是适用的,而不是特定的适用于某个基础任务。——论文《How transferable are features in deep neural networks?》(arxiv.org/abs/1411.17…

领域(Domain):是进行学习的主体。由特征空间 XX 和生成数据概率分布 P(X)P(X)组成。通常用 DD 来进行表示,DSD_S 表示源领域 (Source Domain) ,DTD_T 表示目标领域 (Target Domain)。

任务(Task):是指学习的目标。由标记空间 YY 和标签对应的函数 ffTST_S 表示源领域目标任务,TtT_t 表示目标领域的目标任务。

迁移的数学定义:

image.png

给定源领域 DsD_s 和源任务 TsT_s,目标领域 DtD_t 和目标任务 TtT_t,迁移学习的目标是在 DsDtD_s≠D_t或者 TsTtT_s≠T_t的情况下,用 DsD_sTsT_s 的知识,来提升目标任务学习函数 fT()f_T(·) 的预测效果。

image.png

传统学习中对于不同的任务就会训练三个不同的模型,例如识别人脸,识别猫等多个任务,就会设计多个模型出来,但是迁移学习可以利用前两个任务的学习的【知识】,比如数据特征、模型参数等,来辅助新领域中的学习过程,更快的得到另一个相似任务模型。

解决问题

  1. 数据少,成本高

在实际上,很多情况下,有些数据的获取成本会很高,但是类似的数据获取可能成本较低,可以利用学习成本低数据得到关键信息,去辅助学习成本高的数据,得到较好的模型。

  1. 任务新旧数据分布不同

在某一个任务中,新旧数据之间分布不同,那么可能不能使用之前的训练的模型,数据分布不同,导致预测的结果会有一定的偏差。如果想利用之前训练的模型,就需要使用迁移学习的一些技巧来解决。

核心问题

对于目标领域的数据分布与源领域的数据分布,我们希望两者之间差异减少,甚至是 0,可以使模型进行无缝迁移,迁移学习的核心在于分布对齐。常用方法有数据分布自适应、特征选择和子空间学习等。

数据分布自适应:由于源域和目标域的数据概率分布不同,那么最直接的方式就是通过一些变换,将不同的数据分布的距离拉近。

特征选择:源域和目标域中均含有一部分公共的特征,在这部分公共的特征上,源领域和目标领域的数据分布是一致的。选择出这部分共享的特征,即可依据这些特征构建模型。

子空间学习:假设源域和目标域数据在变换后的子空间中会有着相似的分布。我们按照特征变换的形式,将子空间学习法分为两种:基于统计特征变换的统计特征对齐方法,以及基于流形变换的流形学习方法。

参考