本文仅为一些学习笔记白话总结,具体迁移相关内容可参考下面链接:
综述论文:四大类深度迁移学习
《小王爱迁移》系列文章汇总目录
迁移学习中的领域自适应方法
MMD :maximum mean discrepancy
领域自适应(Domain Adaptation)方法综述
深度迁移学习综述
在诸多机器学习和深度学习方法中,都有一个默认的假设:训练数据和测试数据是独立同分布的。但在实际中,这种条件是很难满足的,也因此常常会出现模型在训练集上收敛,验证集上表现良好,但在测试集上翻车的情况。而迁移学习正是尝试解决训练集和测试集数据分布不一致、训练集数据量不够的问题的方法。
迁移学习将数据集分为源域和目标域:
- 源域可理解为所有可以加以利用的训练集,如图像分类中预训练使用的ImageNet数据集,NLP中的wiki数据集等。某些时候也指与测试集分布不一致的训练集;
- 目标域也即我们的测试集。
迁移学习的目标便是考虑如何使训练集和测试集的数据特征分布更为一致(基于特征的迁移) OR 如何利用更多的数据来提升我们模型的效果(预训练)。
迁移学习的类别
迁移学习可分为四类:
(1)基于实例的迁移学习
基于实例的迁移学习主要应用于源域(可用训练集)数据较多但训练集与测试集特征分布又不一致的情况。
基于实例的迁移学习思想非常简单——与测试集更为相似的训练集样本在训练时给与更高的权重,不相似的样本则权重较小。
传统的基于实例的迁移学习方法有TrAdaBoost以及其各类变型。也有一些利用深度学习来学习权重的方法。
(2)基于映射的迁移学习
基于映射的迁移学习通过将源域和目标域的特征映射到同一空间来使得他们具有相同的数据分布。它基于假设:「尽管两个原始域之间存在差异,但它们在精心设计的新数据空间中可能更为相似。」
(3)基于网络的深度迁移学习
基于网络的深度学习是指复用在源域中预先训练好的部分网络,包括其网络结构和权重参数,常见的应用如利用ImageNet来预训练VGG网络然后再进行fine-tuning,利用大规模的wiki数据集来进行预训练bert,然后再利用任务相关数据集进行fine-tuning 等。
它基于假设:「神经网络类似于人类大脑的处理机制,它是一个迭代且连续的抽象过程。网络的前面层可被视为特征提取器,提取的特征是通用的。」
因此在很多图像任务中会先利用ImageNet训练网络,然后固定网络前N层特征提取层。仅fine-tuning或重新训练那些离分类层较近的网络层。
(4)基于对抗的深度迁移学习
基于对抗的迁移学习受GAN启发,在网络的某些层间中加入了对抗层,通过对抗层来使网络学习训练集和测试集的通用特征(或称共有特征)。
对抗网络的作用是区分来自训练集和测试的特征,若能很好地区分训练集和测试集特征,说明源域和目标域特征分布不一样,对抗网络会返回较大的loss,从而使网络学习到共有特征。
一些迁移学习方法
本部分主要是对《小王爱迁移》系列文章汇总目录的一些白话简单总结。
迁移成分分析(TCA,Transfer Component Analysis)
TCA通过将源域与目标域映射到一个再生核希尔伯特空间(reproducing kernel Hilbert Spaces)中,并使用MMD(最大平均差异,maximum mean discrepancy)来衡量两个映射后的域数据分布差异。因此将目标转换为寻找一个映射空间(OR变换?),这个变换使得两个分步的MMD最小。
关于MMD可以参考MMD :maximum mean discrepancy。
TCA可以看作是一个特征预处理,在找到映射函数后,将源域与目标域一起经过这个映射便可以将他们的原始特征分布差减小。
联合分布适配(JDA,joint distribution adaption)
与TCA不同,JDA通过适配源域与目标域的联合分布来使得源域与目标域的数据表现更为一致,或者说至少对于模型来说两者更为相似了。
联合概率的简单解释:
- 对于数据X, y(X表示特征向量
,y表示label): - 边缘概率即仅考虑单个变量出现的概率,P(x) 表示 数据集中x的概率,如P(x1)表示x1的出现概率;
- 条件概率即在某个变量出现特定值的前提下另一个变量出现的概率,如P(y|X1)表示在特征为X1时候label为y的概率;
- 联合概率,即两个变量特定值一起出现的概率,换句话说,就是在某个变量先出现(P(X1))的情况下另一个变量一起出现(P(y=1|X1))的概率,因此联合分布就可以用边缘概率和条件概率来进行表示:P(X, y) = P(y|X)*P(X) = P(X|y)*P(y)。
JDA的假设有两点:
- 1)源域和目标域边缘分布不同;
- 2)源域和目标域条件分布不同。
因此,要使得源域(source,后面用下标s表示)和目标域(target,后面用下标t表示)更为接近,只需要适配他们的边缘分布和条件分布即可。也即联合分布适配(注意这里适配的并非联合分布P(X, y),题目非常具有迷惑性)。
适配边缘概率(P(X)也即特征适配)
可以利用TCA中的方法,也即通过找到一个映射(A)将源域与目标域映射到这个空间来使得其差别最小:
|| P(Xs) - P(Xt) || => || P(ATXs) - P(ATXt) ||
适配条件分布(P(y|X))
适配条件分布即是要使得P(ys|Xs) 和 P(yt|Xt)之间的距离要小,但是在目标域(也即测试集)中,yt 常常是没有的,因此也就没法求目标域的条件分布。
《小王爱迁移》系列之二:联合分布适配(JDA)方法简介中提到用P(Xt|yt)来近似P(yt|Xt),也即消去了贝叶斯公式中的P(Xt)。
对于上面为什么能消去P(Xt)来进行近似,目前没看懂,同样取上面博客的一些解释:
在统计学上,有一个东西叫做充分统计量,它是什么意思呢?大概意思就是说,如果样本里有太多的东西未知,样本足够好,我们就能够从中选择一些统计量,近似地代替我们要估计的分布。为近似找到了理论依据。
但是到了现在依然没有yt,文中提到使用伪标签的方法,即利用源域数据训练一个模型然后对目标域进行预测以得到yt。这样一来,类与类之间的MMD距离就变成了如下:
在学习时将条件分布与概率分布适配loss加到一起就可以了。另外,上面我们用的是伪标签作为目标域的标签,因此这里会有一个迭代的过程。而在TCA中是没有迭代过程的,一次即求出了目标映射函数。
深度学习迁移
在论文《How transferable are features in deep neural networks?》中作者利用AlexNet对深度网络的可迁移性进行了解释,即网络中那些学习到通用特征的部分参数是可以迁移的,可以在目标域直接使用,而那些高层的与特定任务相关的网络层参数则难以迁移,需要重新学习。例如,在利用ImageNet进行预训练后再在目标域进行训练时,一般会将前面几层参数给固定仅学习后面的分类层。
因此,在适配深度学习网络时,一般是对上层的靠近分类任务的层参数进行适配。
DaNN(Domain Adaptive Neural Network)
论文名字:Domain adaptive neural networks for object recognition
DaNN的结构异常简单,它仅由两层神经元组成:特征层和分类器层。作者的创新工作在于,在特征层后加入了一项MMD适配层,用来计算源域和目标域的距离,并将其加入网络的损失中进行训练。所以,整个网络的优化目标也相应地由两部分构成:在有label的源域数据上的分类误差(Lc)和两个域数据的判别误差(Ld),Ld表示源域与目标域的距离,因此最小化Ld即是最小化源域与目标域的距离。
但是,由于网络太浅,表征能力有限,故无法很有效地解决domain adaptation问题(通俗点说就是精度不高)。因此,后续的研究者大多数都基于其思想进行扩充,如将浅层网络改为更深层的AlexNet、ResNet、VGG等;如将MMD换为多核的MMD等。
DDC (Deep domain confusion)
论文名字:Deep domain confusion: Maximizing for domain invariance.
DDC针对预训练的AlexNet(8层)网络,在第7层(也就是feature层,softmax的上一层)加入了MMD距离来减小source和target之间的差异。这个方法简称为DDC。下图是DDC的算法插图。
从上面可以看出,DCC仅是在第七层后加了一层适配层用来优化拉近源域与目标域的距离。若domain adapter 无法区别源域与目标域,说明学习到的特征是源域与目标域共有的特征。
DAN
论文名字:Learning transferable features with deep adaptation networks
DAN主要对DCC进行了两方面的改进:
- (1)在多层迁移层中加入了适配器,以更好地进行适配;
-
(2)使用了多核MMD(DCC使用的单核)。