文章目录
- 主要内容
- Domain Adaptation Foundations
- Domain Adaptation Methods Overview
主要内容
- Domain Adaptation Foundations
- Domain Adaptation Methods Overview
2.1.Discrepancy-based methods
2.2.Adversarial-based methods
2.3.Reconstruction-based methods
本节内容由助教赵崇皓和杨晟甫讲解。
公式输入请参考:在线Latex公式
Domain Adaptation Foundations
首先将为什么我们需要做Transfer Learning,这里直接参考上篇文章的开头即可。
https://blog.csdn.net/oldmao_2001/article/details/92565879
然后给出Transfer Learning在维基百科上的概念:
★Transfer learning is a research problem in machine learning that focuses on storing knowledge gained while solving one problemand applying it to a different but related problem.-Wikipedia
Transfer Learning v.s. Domain Adaptation
接下来比较Transfer Learning和Domain Adaptation的不一样
二者实际上是从属的关系:
Intuitive Definitions
Domain D:实际上就是不同的数据集,例如,下面是三个不同的Domain:
自然影像:
emoji:
油画风格:
Task T,就是不同的任务,例如:CV上常见的分类、分割、目标检测等
Domain Adaptation(DA)
涉及两个Domain,一个是Source Domain用于训练,一个是Target Domain用于测试。
Task 針對 target domain ,但在 training 時 target domain 沒有(或是很少)label
Source Domain 是 fully labelled
两个Domain的Task应该是一样的。
例如:都是分类任务
Why Domain Adaptation
给两个例子:
自动驾驶的模型训练,可以获取到大量街景图片,但是没有办法做标注,或者标注麻烦。
侠盗飞车游戏中有大量模拟真实的街景,而且车子很容易标注出来。
这个时候就可以用Domain Adaptation
object classification任务
自然拍摄的图片会有很多因素的影响
从网购网站上爬取对应图片则比较清晰
我们想要把两个domain的差异merge在一起(或者使用DA来减少二者的差异)。
DA Settings
★ We will focus on homogeneous DA today.注重同质性
★ Eg, Source / Target are both images
Domain Adaptation Methods Overview
Features
黄色长方形代表特征提取器,两个颜色的竖线代表抽取到的特征,我们在Source Data Set上进行训练,但是希望Target的特征丢进去也能够work。
我们能做的是对feature extractor / feature 进行改进
我们可以把抽取出来的特征看成高维空间中的一个向量分布,那么他们各自有自己的范围,如果这两个特征的范围overlap比较小,那么做DA的效果就不好。
但是如果我们可以让两个Domain的特征空间在同一个范围,这个时候就可以用同一个Classifier来进行分类了。
那么下面就是要讲三个方法,都是用不同的方式来使得两个Domain的特征空间投影在同一个范围内。
Discrepancy-based methods
用一些预定义好的统计量,并计算Source Domain和Target Domain的Feature的距离(上图中的黑色箭头),我们希望这个距离越近越好。有三种做法:
1. Deep Domain Confusion (MMD)
Tzeng E, Hoffman J, Zhang N, et al. Deep domain confusion: Maximizing for domain invariance[J]. arXiv preprint arXiv:1412.3474, 2014.
就是要做Domain Confusion,14年的paper:Deep Domain Confusion: Maximizing for Domain Invariance,下图左边是原来的特征空间,右边是做了Domain Confusion的效果。
算法对Source 和Target Domain会共用一个Feature Extractor:
然后把这个Feature Extractor
计算Source 和Target Domain的特征,得到一个距离(就称为Maximum Mean Discrepancy):
Maximum Mean Discrepancy: Measuring distance between distributions
其实公用特征抽取器抽取的 就是一个kernel,如果还记得SVM中核函数的作用就可以理解,本来数据是不可以分的,但是通过核函数之后,就会变得可以分割了,这里的核也是一样,特征抽取器的某一层特征抽取就相当于核函数 ,经过这个函数之后,Source 和Target Domain的特征就被合并到一个空间中了。
我们的目标就是最小化MMD,同时还要做好分类任务。
核函数
在这个文章里面是用一个DNN来模拟的。
2. Deep Adaptation Networks
Long M, Cao Y, Wang J, et al. Learning transferable features with deep adaptation networks[C]//International conference on machine learning. 2015: 97-105.
在上面的方法上改进,上面的方法是只用了一层来做kenerl,这个文章啥都不改,就把kenerl结构改为三层:
• MMD → Multiple Kernel MMD
• Single adaption layer → Multiple adaption layers
3. CORAL, CMD
CORAL :use 2nd order moments,就是在计算两个domain的特征空间的距离上采用的方式不一样。这里用的是二阶矩。MMD用的是一阶矩。
CMD则是用K阶矩:
Adversarial-based methods
引入一个Domain Classifier用于分辨Feature来自哪个Domain,如果特征抽取器能够骗过这个Domain Classifier,那么我们认为Source Domain和Target Domain的Feature space是相同的 。
这个是近几年流行的方法。主要是利用两个对抗网络来达到目的。讲三种方法:
1. Simultaneous Deep Transfer Across Domains and Tasks
Tzeng E, Hoffman J, Darrell T, et al. Simultaneous deep transfer across domains and tasks[C]//Proceedings of the IEEE International Conference on Computer Vision. 2015: 4068-4076.
创新点:The first paper to introduce a “domain classifier”.
这个文章同时做了两件事:
Maximum Domain Confusion:Introducing a domain classifier
Transfer Label Correlation:Soft-label loss
Domain Confusion
模型构架如下图:
domain classifier用于判别特征来自哪个domain,特征提取器除了要提取特征之外,还要骗过domain classifier。
训练流程如下图:
特征提取器和domain classifier是迭代训练的,和GAN训练方式差不多。
训练domain classifier如下图:
最后是算结果和groud truth做交叉熵,并更新domain classifier的参数
训练Feature Extractor如下图所示:
这里骗过domain classifier是指domain classifier给出的结果为0.5:0.5
把最后的结果和0.5:0.5做交叉熵,更新Feature Extractor的参数。
Label Correlation
其思想就是把每个分类的distribution也看做是一种特征,因此可以把Source Domain的distribution应用到Target Domain上来。
通常是将Harder label转换为Soft label(变平滑,通常是凸显了不同类别之间的Correlation)
T越大越平滑,是超参数。
Softmax with Temperature(T): Enables a smoother class probability distribution to address inter-class
correlations
具体做法如下图:
将Source Domain中所有被子的几率分布求出来,然后求平均,得到左边虚线框的分布,然后计算Target Domain中某个杯子的分布,然后我们希望这个分布和Source Domain的分布的交叉熵越小越好。
整个模型的损失函数包含三块:
2. Domain Adversarial Training of Neural Networks (quick recap)
这个之前老师有讲过:https://blog.csdn.net/oldmao_2001/article/details/106717003
Ganin Y, Ustinova E, Ajakan H, et al. Domain-adversarial training of neural networks[J]. The Journal of Machine Learning Research, 2016, 17(1): 2096-2030.
Gradient Reversal操作是为了骗过domain classifier而做的反向梯度更新。Feature extractor 逆着 gradient ⽅向更新,代表抽出來的 feature 會让domain classification loss 变高。
3. PixelDA
Bousmalis K, Silberman N, Dohan D, et al. Unsupervised pixel-level domain adaptation with generative adversarial networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 3722-3731.
创新点:Leverages GAN to generate fake target images from source images (conditional GAN)
具体做法如下图:
先用Source Image(带标签)加上Sample noise z,经过Generator G生成Target Image(由于Source Image有标签,这里当然也有标签。就是鸭子生成鸭子)。
Discriminator D要取分辨Generated Target Image和Target Image。
Classifier T要分辨出Source Image和Generated Target Image的类别。
Reconstruction-based methods
一种辅助的方法,对特征加上一个限制,就是要能够还原回原输入,这样能够确保抽取的特征都是精华部分。
Domain Separation Networks
Bousmalis K, Trigeorgis G, Silberman N, et al. Domain separation networks[C]//Advances in neural information processing systems. 2016: 343-351.
整体构架:
创新点:Feature disentanglement, shared / exclusive features
Feature Disentanglement
这个技术在InfoGAN, NIPS ‘16和ACGAN, PMLR ‘17有提到,可以看:https://blog.csdn.net/oldmao_2001/article/details/106717003
抽特征
原始Feature Disentanglement模型:
通俗来看就是下图:
Private encoder把Source domain和Target domain各自的特别的特征抽取出来,Shared encoder 把二者公共的特征抽取出来。
最后得到Target features:
Source features:
如何抽取出两种不同的feature呢?来看下图:
假设我们把可达鸭丢到Encoder中,两个特征抽取器就各自抽取了两类特征,由于这两类特征是exclusive的,所以我们可以让他们的向量内积为0(正交化)。
内积图形化表示就是下图这样:
我们希望最后内积结果(蓝色矩阵)Frobenius norm越小越好,范数是针对矩阵而言的,具体定义可以类比 向量的L2范数。
拉近Shared Features
然后是要拉近Source domain和Target domain各自的Shared Features,原始模型如下:
二次元化后:
这里实际上用的是最上面的MMD方法。
保证特征质量restrain
最后还要保证抽取的特征都是精华特征,这个是通过特征reconstruction原图来保证的,如果特征能够完成reconstruction原图,那么特征就是好的特征,不然就是垃圾特征。原模型如下:
二次元化后:
训练
需要注意的是:
During training, classifier can only be trained on source domain, since there are no labels for target domain.
由于target domain没有标签,所以classifier只能在source domain上训练。如下图: