【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。
本节内容综述
- 本节课由助教
Chao Brian
讲解。 - 首先讲解些领域适配的基础内容,包括名词、定义等。
- 接下来,会讲一些 DA 的常用方法。
- 此外,复习了老师讲过的 DANN ,这里不多记录。
- 在 Reconstruction-based methods 种,详细介绍 Domain Separation Networks 。
- 下半节课,助教讲解了应用方面文章范例,包括语义分割等等内容。
小细节
Methods
Domain Adaptation Foundation
如上,领域适配算是迁移学习的一个子集。
Domain Adaptation
- Task 针对 target domain ,但在 training 时 target domain 没有(或是很少) label
- Source Domain 是 fully labelled
我们今天会聚焦于同质的 homogeneous 的 DA 。
Domain Adaptation Methods Overview
如上,我们需要在feature extractor
上动手脚。
Discrepancy-based methods
Deep Domain Confusion (MMD)
如上,我们希望把 Source 与 Target 的分布拉近。
如上,希望两个 fc_adapt 层越近越好。
Deep Adaptation Networks
如上,这篇文章思想与 MMD 差不多,但是使用了更多层做 MMD 。
CORAL, CMD
如上,之前的方法使用的是 1st order moments 作为距离;而 CORAL 使用的是 2nd order moments 作为距离。
而 CMD 则是使用更高的 moments 作为距离。
Adversarial-based methods
Simultaneous Deep Transfer
如上,这篇文章主要做了两个重要性的工作:
- Maximum Domain Confusion
- Transfer Label Correlation
Maximum Domain Confusion
举个例子来详细讲解。
如上,希望通过大自然图片的训练,学会识别神奇宝贝。
如上,架构类似 GAN ,希望抽取出特征后,Discriminator 能够搞混 Domain 。
如上,先固定住 Feature Extractor,训练 Classifier 。
如上,再固定住 Classifier ,训练 Feature Extractor ,目标为让结果混淆。
Transfer Label Correlation
如上,把输出的分布也作为一种特征,在 Target Domain 上训练。
如上,希望让标签变得平滑,从而增加不同标签内部联系。
如上,对于某一类,比如瓶子,首先求其所有数据的输出的平均值。然后用这个分布作为 Target 训练的目标,二者求交叉熵作为 loss 。
如上,最终的我们的 loss 就是由三部分组成的:
- 原数据自身训练的;
- domain confusion 的;
- soft label correlation 的。
DANN
用于无标签的 target 数据。
老师已经讲过:【李宏毅2020 ML/DL】P85 Transfer Learning。
PixelDA
利用了 GAN 产生了假的 Domain 图片。
如上利用 GAN ,由 Source 图片产生 Target 的图片。这样就有了有标签的 Target 数据。
Why is it called "Pixel Level"
如上,在文章中,两个领域的区别很小,是 “pixel level” 的。
如上,假设目标领域是真是世界的图片,我们利用 GAN 为其加上的就是背景这类的东西。
如上,利用了一个小 trick ,会对生成的图片做像素上的正则。
Reconstruction-based methods
如上,将详细介绍 Domain Separation Networks 。
Feature Disentanglement
如上,之前在 GAN 中讲过,Feature Disentanglement 就是将有意义的 feature 抽取出来。
如上,这篇文章中的 encoder 分为三部分:
- 只与 target 有关的 encoder ;
- 只与 source 有关的 encoder ;
- 二者共用的 encoder 。
我们真正希望最终的 二者共用的 encoder
是有意义的。
如何做呢?
如上,我们希望橙色与绿色的矩阵越不像越好。方法是希望其内积为 0 。
此外,我们希望 target 与 source 共用的那部分 encoder 越像越好。可以通过算相似度或者使用 GAN 思维来实现。
最后,我们希望我们的提取出来的特征是有意义的
。即,可以通过这些特征重构回原图片。
最后的最后,就是用 source 训练一个分类器。
Application
Image to Image Translation
如上,所谓Image to Image Translation
就是转换风格。
UNIT
如上,UNIT可以理解为VAE+GAN。UNIT有三种 Loss :
- VAE Loss
- GAN Loss
- Cycle Consistency Loss
MUNIT
如上基于UNIT,提出 Multi-Model 的 UNIT 。
如上是 MUNIT 的基本思想。
MUNIT 的架构如上。
如上,其使用了双向的重构损失值 Bidirectional reconstruction loss:
- Image reconstruction
- Latent reconstruction
此外,还使用了 Adversarial loss ,如上。
Semantic Segmentation
如上,语义分割 Semantic Segmentation 是很有必要的。
AdaptSegNet
如上,这篇论文有两个数据集:GTA5的数据与真实街景数据。
如上,使用 AdaptSegNet ,把 source 与 target 都生成 Segmentation 。
如上,对于 source domain 来说,有 label ,直接算损失就可以。
而对于 target domain 来说,其 loss 使用了 GAN 中的 loss 思想。
其结果如上。
CBST
如上,CBST 的不同之处在于,提出了pseudo abel
概念。
如上,就是先由 Source 训练 pseudo label 的生成器,然后让 target 通过这个生成器生成出自己的 pseudo label ;之后,取其中较为可信的数据对,进行 target 上的监督训练。
其公式如上。
如上,是 Self-Training 的第一步 Propose pseudo label 。
对于第二步 Optimize Objective function 的具体解释如上。
但是,比如消防栓这种事物,不常出现在我们的训练集,该怎么办?
作者提出了 Class-balanced self-training (CBST) 。
其数学操作如上。
此外,作者还引入了 Spatial Priors 。
如上,作者考虑到对于建筑物
这种,其实在图片中是有固定位置的(道路两旁),因此鼓励在建筑物
固定出现的位置出现建筑物。
对于 CBST 总结如上。
其结果如上。
Person Re-ID
如上,是行人重识别技术 ReID 。
SPGAN
如上,这里不同的 Domain 可能代表不同的场合。
如上,还是使用了 CycleGAN 的架构。
此外,还使用了 Target domain identity constraint 。希望模型中学到本身隐含分辨不同 domain 的能力。
此外,还希望学到每个人独立的 ID ,分辨出不同的人。
ECN
如上,ECN希望做到:
- 样例不变性
- 相机不变性
- 领域不变性
其对 Source Domain 的数据,取交叉熵的损失值。
对于 Target Domain 的数据,做了一个 ‘Exemplar Memory’ 机制。
此外,作者设置了三个 invariance 保证效果。
样例不变性 Exemplar-invariance 如上。
相机不变性 Camera-invariance 如上。
领域不变性 Neighborhood-invariance 如上。
其常见的 trick 如上。