【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation

我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。

本节内容综述

  1. 本节课由助教 Chao Brian 讲解。
  2. 首先讲解些领域适配的基础内容,包括名词、定义等。
  3. 接下来,会讲一些 DA 的常用方法。
  4. 此外,复习了老师讲过的 DANN ,这里不多记录。
  5. 在 Reconstruction-based methods 种,详细介绍 Domain Separation Networks 。
  6. 下半节课,助教讲解了应用方面文章范例,包括语义分割等等内容。

小细节

Methods

Domain Adaptation Foundation

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,领域适配算是迁移学习的一个子集。

Domain Adaptation

  • Task 针对 target domain ,但在 training 时 target domain 没有(或是很少) label
  • Source Domain 是 fully labelled

我们今天会聚焦于同质的 homogeneous 的 DA 。

Domain Adaptation Methods Overview

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,我们需要在feature extractor上动手脚。

Discrepancy-based methods

Deep Domain Confusion (MMD)

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,我们希望把 Source 与 Target 的分布拉近。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,希望两个 fc_adapt 层越近越好。

Deep Adaptation Networks

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,这篇文章思想与 MMD 差不多,但是使用了更多层做 MMD 。

CORAL, CMD

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,之前的方法使用的是 1st order moments 作为距离;而 CORAL 使用的是 2nd order moments 作为距离。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
而 CMD 则是使用更高的 moments 作为距离。

Adversarial-based methods

Simultaneous Deep Transfer

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,这篇文章主要做了两个重要性的工作:

  • Maximum Domain Confusion
  • Transfer Label Correlation
Maximum Domain Confusion

举个例子来详细讲解。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,希望通过大自然图片的训练,学会识别神奇宝贝。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,架构类似 GAN ,希望抽取出特征后,Discriminator 能够搞混 Domain 。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,先固定住 Feature Extractor,训练 Classifier 。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,再固定住 Classifier ,训练 Feature Extractor ,目标为让结果混淆。

Transfer Label Correlation

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,把输出的分布也作为一种特征,在 Target Domain 上训练。

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,希望让标签变得平滑,从而增加不同标签内部联系。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,对于某一类,比如瓶子,首先求其所有数据的输出的平均值。然后用这个分布作为 Target 训练的目标,二者求交叉熵作为 loss 。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,最终的我们的 loss 就是由三部分组成的:

  • 原数据自身训练的;
  • domain confusion 的;
  • soft label correlation 的。
DANN

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
用于无标签的 target 数据。

老师已经讲过:【李宏毅2020 ML/DL】P85 Transfer Learning

PixelDA

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
利用了 GAN 产生了假的 Domain 图片。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上利用 GAN ,由 Source 图片产生 Target 的图片。这样就有了有标签的 Target 数据。

Why is it called "Pixel Level"
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,在文章中,两个领域的区别很小,是 “pixel level” 的。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,假设目标领域是真是世界的图片,我们利用 GAN 为其加上的就是背景这类的东西。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,利用了一个小 trick ,会对生成的图片做像素上的正则。

Reconstruction-based methods

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,将详细介绍 Domain Separation Networks 。

Feature Disentanglement

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,之前在 GAN 中讲过,Feature Disentanglement 就是将有意义的 feature 抽取出来。

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,这篇文章中的 encoder 分为三部分:

  • 只与 target 有关的 encoder ;
  • 只与 source 有关的 encoder ;
  • 二者共用的 encoder 。

我们真正希望最终的 二者共用的 encoder 是有意义的。

如何做呢?
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,我们希望橙色与绿色的矩阵越不像越好。方法是希望其内积为 0 。

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
此外,我们希望 target 与 source 共用的那部分 encoder 越像越好。可以通过算相似度或者使用 GAN 思维来实现。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
最后,我们希望我们的提取出来的特征是有意义的。即,可以通过这些特征重构回原图片。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
最后的最后,就是用 source 训练一个分类器。

Application

Image to Image Translation

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,所谓Image to Image Translation就是转换风格。

UNIT

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,UNIT可以理解为VAE+GAN。UNIT有三种 Loss :

  • VAE Loss
  • GAN Loss
  • Cycle Consistency Loss

MUNIT

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上基于UNIT,提出 Multi-Model 的 UNIT 。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上是 MUNIT 的基本思想。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
MUNIT 的架构如上。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,其使用了双向的重构损失值 Bidirectional reconstruction loss:

  • Image reconstruction
  • Latent reconstruction

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
此外,还使用了 Adversarial loss ,如上。

Semantic Segmentation

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,语义分割 Semantic Segmentation 是很有必要的。

AdaptSegNet

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,这篇论文有两个数据集:GTA5的数据与真实街景数据。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,使用 AdaptSegNet ,把 source 与 target 都生成 Segmentation 。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,对于 source domain 来说,有 label ,直接算损失就可以。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
而对于 target domain 来说,其 loss 使用了 GAN 中的 loss 思想。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
其结果如上。

CBST

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,CBST 的不同之处在于,提出了pseudo abel概念。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,就是先由 Source 训练 pseudo label 的生成器,然后让 target 通过这个生成器生成出自己的 pseudo label ;之后,取其中较为可信的数据对,进行 target 上的监督训练。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
其公式如上。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,是 Self-Training 的第一步 Propose pseudo label 。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
对于第二步 Optimize Objective function 的具体解释如上。

但是,比如消防栓这种事物,不常出现在我们的训练集,该怎么办?
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
作者提出了 Class-balanced self-training (CBST) 。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
其数学操作如上。

此外,作者还引入了 Spatial Priors
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,作者考虑到对于建筑物这种,其实在图片中是有固定位置的(道路两旁),因此鼓励在建筑物固定出现的位置出现建筑物。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
对于 CBST 总结如上。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
其结果如上。

Person Re-ID

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,是行人重识别技术 ReID 。

SPGAN

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,这里不同的 Domain 可能代表不同的场合。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,还是使用了 CycleGAN 的架构。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
此外,还使用了 Target domain identity constraint 。希望模型中学到本身隐含分辨不同 domain 的能力。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
此外,还希望学到每个人独立的 ID ,分辨出不同的人。

ECN

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
如上,ECN希望做到:

  • 样例不变性
  • 相机不变性
  • 领域不变性

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
其对 Source Domain 的数据,取交叉熵的损失值。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
对于 Target Domain 的数据,做了一个 ‘Exemplar Memory’ 机制。

此外,作者设置了三个 invariance 保证效果。

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
样例不变性 Exemplar-invariance 如上。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
相机不变性 Camera-invariance 如上。
【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
领域不变性 Neighborhood-invariance 如上。

【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
其常见的 trick 如上。