李宏毅学习笔记42.More about Domain Adaptation. Part I. Domain Adaptation

主要内容

  1. Domain Adaptation Foundations
  2. 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用于测试。 D s D t D^s\neq D^t
在这里插入图片描述
在这里插入图片描述
Task 針對 target domain ,但在 training 時 target domain 沒有(或是很少)label
Source Domain 是 fully labelled
两个Domain的Task应该是一样的。 T s = T t T^s=T^t 例如:都是分类任务
在这里插入图片描述

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 ϕ \phi 计算Source 和Target Domain的特征,得到一个距离(就称为Maximum Mean Discrepancy):
Maximum Mean Discrepancy: Measuring distance between distributions
MMD ( X S , X T ) = 1 X S x s X S ϕ ( x s ) 1 X T x t X T ϕ ( x t ) \text{MMD}(X_S,X_T)=\left|\left|\cfrac{1}{|X_S|}\sum_{x_s\in X_S}\phi(x_s)-\cfrac{1}{|X_T|}\sum_{x_t\in X_T}\phi(x_t)\right|\right|


其实公用特征抽取器抽取的 ϕ \phi 就是一个kernel,如果还记得SVM中核函数的作用就可以理解,本来数据是不可以分的,但是通过核函数之后,就会变得可以分割了,这里的核也是一样,特征抽取器的某一层特征抽取就相当于核函数 ϕ \phi ,经过这个函数之后,Source 和Target Domain的特征就被合并到一个空间中了。


我们的目标就是最小化MMD,同时还要做好分类任务。
L = L C ( X L , y ) + λ MMD 2 ( X S , X T ) L=L_C(X_L,y)+\lambda \text{MMD}^2(X_S,X_T)
核函数 ϕ \phi 在这个文章里面是用一个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)
e x p ( z i / T ) j e x p ( z i / T ) \cfrac{exp(z_i/T)}{\sum_jexp(z_i/T)}
T越大越平滑,是超参数。
Softmax with Temperature(T): Enables a smoother class probability distribution to address inter-class
correlations
在这里插入图片描述
具体做法如下图:
在这里插入图片描述
将Source Domain中所有被子的几率分布求出来,然后求平均,得到左边虚线框的分布,然后计算Target Domain中某个杯子的分布,然后我们希望这个分布和Source Domain的分布的交叉熵越小越好。
整个模型的损失函数包含三块:
L = L + L d o m a i n c o n f u s i o n + L l a b e l c o r r e l a t i o n L=L_{分类}+L_{domain confusion}+L_{label correlation}

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上训练。如下图:
在这里插入图片描述

测试

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/oldmao_2001/article/details/107717663