迁移学习简介
随着计算硬件和算法的发展,缺乏有标签数据的问题逐渐凸显出来,不是每个领域都会像 imagenet 这样花费大量的人工标注来产出一些数据,尤其针对工业界,每时每刻都在产生大量的新数据,标注这些数据是一件耗时耗力的事情,因此,目前监督学习虽然能够解决很多重要的问题,却也存在着一定的局限性,基于这样的一个环境,迁移学习变的尤为重要。
本文主要整理了综述文章 Transfer Learning For Cross-Dataset Recognition: A Survey前面的一些基础入门内容。
背景
针对迁移学习,有两个基本概念
- 一个概念叫域(domain),包括两个内容 , 是特征空间它代表了所有可能特征向量取值, 是边缘概率分布它代表了某种特定的采样。例如 是一个二维空间, 为过原点的一条直线。
边缘分布函数: 如果二维随机变量 的分布函数 为已知,那么随机变量 的分布函数 和 可由 求得。则 和 为分布函数 的边缘分布函数。
- 另一个概念叫任务(task),它也包括两个部分 ,标签空间和预测函数。预测函数是基于输入的特征向量和标签学习而来的,它也称为条件概率分布 。
所以迁移学习定义如下,给定了源域(source domain)和源任务(source task)、目标域(target domain)和目标任务(target task),利用源域在解决任务中获得一些知识来提升目标任务的这样一种算法。其中源域与目标域不相等或者源任务与目标任务不相同。
而这里域的不同可以分解为两个方面,一是特征空间不同,例如人脸的图片和鸟的图片样本空间就是不同的;或者是边缘概率分布不同,例如两个都是鸟类的样本空间,但是一个是在城市中拍到的鸟,一个是在大自然中拍到的。task的不同也体现在两方面,要么指的是标签空间不同,要么指的是条件概率不同,例如两个数据集数据分布不均衡。
也有论文将 domain 和 task 合二为一称之为一个 dataset,cross-dataset 指的就是 domain 或者 task 不同。
迁移学习可以应用在很多问题之上。例如图1中的物体识别任务,实际上分类问题,这里是一组比较常用的数据集,主要拍摄对象是办公室用品,后三个来自三个不同源,分别是从亚马逊上下载的图片,用网络摄像头拍摄得到的低分辨率图片,用高分辨率相机拍摄得到的高分辨率图片。Caltech-256 是从谷歌上下载包含256个类个图片,与 Office 整合之后成了一个新的数据集。这个问题其实就是属于相同的样本空间但是不同的边缘概率分布。另外还有人脸识别、场景分类等问题。
图1 4种办公用品数据集
分类体系
关于迁移学习有非常多种的分类,这里给出两种。
第一种基于不同迁移情况分为三类归纳式迁移、直推式迁移、无监督迁移:
- 归纳式迁移针对的问题是源与目标域相同,但是任务不同,且此时源的标签可有可无,而目标任务是有标签的,比如 imagenet 数据训练好分类问题可以用来做回归;
- 直推式迁移是源的域是不同但相关的,任务相同,且源域是有标签,而目标域没有,这里可以对应到上面提到的物体识别数据集,office-31,它的三个数据源用不同方式采集的,但是任务都是做分类;
- 无监督迁移学习,域和任务都是不相同但相关的,基本上处理的是一些聚类、降维、密度估计等问题。
源域标签 | 目标标签 | ||
---|---|---|---|
归纳式迁移学习 | 相同 | 不相同但相关 | 有/无 |
直推式迁移学习 | 不相同但相关 | 相同 | 有 |
无监督迁移学习 | 不相同但相关 | 不相同但相关 | 无 |
第二种分类方式是基于解决方法,也就是迁移内容来分的。样本、特征表达、参数、相关知识都可以用来迁移。
- 迁移样本:这个方法一般都是将 source 的样本融入 target 当成 target 的加权样本直接用于训练,通过一些算法来调整 source 样本的权重,当 source 和 target 的 是一样的时候,这种方法效果很好;
-
迁移特征有两种方式:
- 第一种类似迁移样本,将特征调整权重之后加入target进行训练;
- 第二种是建立 source 和 target 的特征关联,可以用某种映射减少源和目标的差异。
- 迁移参数:在 source 和 target 之间进行参数共享或者组合多个 source 模型来解决 target 的问题;
- 迁移知识:这里的知识代表的是数据之间存在的某种关联,source 中有,那么希望将这个关联迁移到 target 中,且源和目标数据都是独立同分布的。
根据上面的分类,常常会将迁移学习划分成几种特定的问题。例如自我学习,它的 source 没有标签但是数据非常多 target 有标签但是用来做训练集数量不够,要利用源的信息可能就需要源采用稀疏编码等方式得到一种特征表达,再用到 target 任务上。这里的多任务学习与含义有一点区别,这里多任务的目的提升 target 的性能,而不是要同时提升两者的性能。又或者域适配问题,域不同但是任务相同。
图2 迁移学习针对的问题
计算准则
这里总结一下一些比较典型的计算准则。
-
统计准则,实际上就是利用一些算法减少源和目标数据分布之间的差异,不管是迁移样本还是迁移特征表达都能用到这种准则。下面截取了论文[1]中的一些常见的方法。
图3 几种典型分布间距离
互信息(Mutual information)中的 X 代表了 source 和 target 的样本数据,Q 代表了是哪个 domain,例如0为 source,1为 target。 指的是某个样本分配到 source 或者 target 的后验概率, 是域的先验概率。通过减少数据实例和 label 的相互关联,从而让不同域之间差异减小。而实际在论文中用的非常多的还是最大均值差异(MMD),
主要就是通过一个 kernel 将原始数据映射到了再生核希尔伯特空间(The MMD In Reproducing Kernel Hilbert Space),在这个空间中减小期望之间的差异。关于再生核希尔伯特空间MMD(RKHS-MMD)的介绍:https://blog.****.net/mei86233824/article/details/79938601 -
几何准则,是基于子空间的几何性质来建立不同的 domain 之间的关系。子空间可以通过特征提取、降维等方式获得。例如子空间对齐,先用 PCA 降维得到子空间,然后找到子空间中的一个线性映射将 source 和 target 的子空间坐标系对齐。还有中间子空间方法,意思是在格拉斯曼流形中,source 和 target 的子空间是这个流形中的点,通过连接它们之间的测地线,然后在测地线上进行采样来得到一些中间子空间,然后将 source 和 target 的数据投影到中间子空间中来缩减两者的差异。例如流形对齐,
和 是全邻接矩阵,矩阵每个元素代表样本 和 的距离,要学习的是 和 , 是数据集的线性投影, 是一个01矩阵代表了对齐源和目标的哪些样本, 是保持 domain 结构的流形。 -
高级表示准则就是找到一种更高级的表达能够找到数据集之间的不变性,一种通用的表达。例如之前提过的稀疏编码,这种方法一般是用于 source 没有标签的情况,通过重构样本以及限制编码中非零取值个数不超过 来得到一组基称为 dictionary,这个 dictionary 就是在两个 domain 之间都可以使用的,得到 target 的稀疏编码,
还有低秩表示,找到一个子空间 A 使得 target 的样本能够由 source 样本线性表示,以及基于深度神经网络,用深度网络来学习一些可迁移的特征。另外还有栈式去噪自编码,通过编码器和解码器重构原始数据得到映射参数,共享参数到 target 得到特征表达,即优点在于能找到一些隐藏因子来保证 domain 之间的不变性。 -
匹配准则主要是基于 domain 之间有成对的样本来构建一种关系,例如从不同角度拍下的同一物体可以认为属于两个 domain。
- 例如匹配稀疏编码,成对的样本强制的共享同样的稀疏编码,此时与上面的稀疏编码不同的是共享的是 ,而上面共享的是 ,所以没有共享基,而是共享了稀疏编码。
- 匹配流形对齐,在映射矩阵的作用之下仍然保持一一对应的关系,前面的流形对齐未知源和目标的一一对应关系,所以需要学习一个矩阵 ,而这里是已知这样的关系,所以直接优化。
- 例如匹配稀疏编码,
基于类的准则利用标签信息将 domain 联系起来,这里就假设了每个 domain 都有 label。例如度量学习,让相同 label 的样本距离缩小,让不同 label 的样本距离增大。线性判别模型,用 source 分类器参数来调整 target 分类器参数。
- 自我标注准则主要针对 target 数据没有标签的问题,通过 source 数据来初始化 target 模型的参数,基于这样一个模型可以得到target模型的一个伪 label,再用 EM 算法迭代的优化 target 模型。
[1] Transfer Learning For Cross-Dataset Recognition: A Survey
[2] Geodesic Flow Kernel for Unsupervised Domain Adaptation
[3] A Survey on Transfer Learning