在前面介绍的模型中,一般我们都会假设训练资料和测试资料符合相同的分布。而如果训练资料和测试资料是来自于不同的分布,这样就会让模型在测试集上的效果很差,这种问题称为Domain shift。(域的转变)

Domain Adaptation领域自适应学习,就是将在A domain上学到的东西应用到B domain上,这个技术 也可以看作是transfer learning的其中一个环节(在A任务上学到的技能可以用到B任务上)。

Domain Shift,其实有很多种不同的类型:

模型输入的资料的分布有变化(源域黑白,目标域彩色)
输出的分布也可能有变化(源域均匀分布,目标域极端分布)
输入跟输出虽然分布可能是一样的,但它们之间的关係变了(源域中叫做“0”,目标域中叫做"1")
今天只专注在,输入资料不同的 Domain Shift 的上面。
Source Domain 是我们的训练资料,Target Domain 是我们的测试资料.

那么对于 Domain Shift的问题,具体的做法随着我们对于目标领域的了解程度不同而不同,主要有以下几种情况:

1、少量有标注的目标领域资料

处理思想:先用原始资料训练一个模型,然后用目标资料对模型进行微调,类似于BERT,只稍微跑個兩 三個(Edpa)就足夠了。

处理遇到的困难:因为target domain的资料非常少,不要跑太多iteration,否则可能會 Overfit 到 Target 的這些少量的資料上。为了避免Overfit的情况,有很多solution,比如說 把 Learning Rate 調小一點,要让微调前后模型参数不要差很多,或者让微调前后模型输入和输出的关系不要差很多,等等方法。

2、大量无标注的目标领域资料

怎麼找出這樣一個 Feature Extractor ?

其实我们可以 把一个一般的 Classifier,就分成 Feature Extractor,跟 Label Predictor 两个部分

(用 Domain Adversarial Training时,你要把一个Classifier里 哪几层当作 Feature Extractor,  Label Predictor, 這個是你自己決定的

如何训练Feature Extractor,跟 Label Predictor?

我们把 Feature Extractor 的 Output 拿出来看,希望两个 Domain 的图片丢进去产生的 Feature,它们看起来分不出差异。

那怎么让红色和蓝色的点 分不出差异?就需要Domain Adversarial Training技术:

训练一个domain classifier,二元分类器

而 Feature Extractor 它学习的目标,就是要去想办法骗过这个 Domain Classifier,让它分辨不出来。(与Generative Adversaria Network (GAN)很相似)

(Domain Adversarial Training最早的paper是發表在 2015 年的 ICML 上面、比 Gan 還要稍微晚一點點、不過它們幾乎可以說是同時期的作品)

用 表示各个模型的参数,右边两个式子是找出能使loss最小的 ,目的是找出能让predictor和classifier分类越正确的模型参数。左边的式子就是站在predictor这边桶classifier一刀。

但是左边这个式子存在问题,本来是想用 -Ld来表示让classifier分不清向量来源。但是 -Ld不也可以用来表示误判吗,把source误判为target,

所以这未必是最好的做法,当然这招还是有用的

刚才这整套想法,还是有一个限制,我们看下面的问题:

那我们今天训练的目标,就是要让这些正方形它的分布,跟这个圈圈三角形合起来的分布越接近越好,所以我们是不是应该要让右边的状况发生 (就是希望类对齐),而避免让左边的状况发生呢?
一个可能的想法是,我们既然知道蓝色的圈圈跟蓝色的三角形它们的分界点在哪里,那我们应该要让这些方形(虽然我们不知道它是哪一个类别),但我们让这些方形远离这一个分界点,这在文献上就有很多不同的做法。

一个最简单的做法是,我有很多 Unlabeled 的图片,丢到 Feature Extractor,再丢到 Label Predictor 以后,我不知道它是哪一个类别,但是我希望它离 Boundary 越远越好

如果今天输出的结果非常地集中,叫做离 Boundary 远
如果今天输出的结果每一个类别都非常地接近,叫做离 Boundary 近

我们到目前为止,好像都假设 Source Domain 跟 Target Domain,它的类别都要是一模一样的,但是真的会如此吗?

怎麼解決 Source Domain 跟 Target Domain它可能有不一樣的 Label 的問題, 参见Universal Domain Adaptation 这篇文章。

Q&A:

如果 Feature Extractor 是 CNN而不是 Linear Layer,那 Domain Classifier Input就是feature map拉直的 Latent Embedding、這樣 Latent Space 學到的東西、把兩個 Domain 分部彌平會不會有影響、因為 Feature Map 本來就有 Space 的關係、現在卻硬是被拉直

说的很对,就是 Feature Extractor它是一個複雜的 Network、然後我們硬是要 把兩個 Domain 的東西拉在一起、會不會變成它只是為了拉在一起而拉在一起、他根本没学到我们本来希望、這個 Feature Space 學到的東西呢。

会。所以domain adaption沒有大家想像得那麼容易 Train 起來

你知道我們在 Train 的時候、有兩件事互相結抗、也就是說一方面既騙過 Domain Classifier、一方面又分類分得好、那就同時把兩個 Domain Align 在一起、同時 Latent Space我們又希望它的分布是正確的、比如說我們覺得 1 跟 7 比較像、為了要讓 Classifier 做好、那今天你的 Feature Extractor就會讓 1 跟 7 比較像、

我们期待说,藉由需要把 Label Predictor 的 Performance衝高這件事情、latent representation 裡面的這個 Space仍然是保留一個比較好的 Latent Space、但是這件事不一定總是會成功了

如果你今天你給要骗过 Domain Classifier这件事的权重太大,你的 Model 就會學到說  它都只想騙過 Domain Classifier、它就不會產生好的 Latent Space

所以实作的时候也是有些参数要调的

3、少量无标注的目标领域资料

刚才我们是假设 Target Domain 没有 Labeled Data,但至少有一大堆数据,这个时候还可以说,我要把两个 Space 拉在一起。

但是假设目标域不只没有 Label,而且 Data 还很少,比如说我就只有一张而已,这个时候你 Target Domain 只有一张,只有一个点,根本没有办法跟 Source Domain 把他align 在一起,此时怎么办?
Testing Time Training,它的缩写是 TTT,链接在图上。

4、没有目标领域资料

其实还有一个更严峻的状况,如果我们对 Target Domain 一无所知的话,怎么办呢?
这个时候我们就不叫 Domain 的 Adaptation,通常就叫 Domain Generalization,

因为我们并不是要Adapt 到某一個特定的 Domain 上、我們對那個特定的 Domain 已經一無所知了、我们是希望机器学到Domain Generalization,在 Testing 的时候,不管来什么神奇的 Domain,它都可以处理,那 Domain Generalization,又分成两种状况:

(1)训练资料非常地丰富,本来就包含了各式各样不同的 Domain。
        假设要做猫狗的分类器,那现在在训练资料里面有真实的、素描的、水彩画的猫和狗的照片。因为训练资料有多个 Domain,我们希望模型可以学到如何弥平 Domain 间的差异,如果测试资料是卡通的猫跟狗,它也可以处理。

(2)还有另外一种真的不知如何下手的状况,假设训练资料只有一个 Domain ,而测试资料有多种不同的 Domain。
        在文献上也是有人试着去解惑这种问题的,在概念上就是有点像是 Data Augmentation,虽然你只有一个 Domain 的资料,想个 Data Augmentation 的方法,去产生多个 Domain 的资料,然后你就可以套上面这个方案来做做看,看能不能够在测试的时候,新的 Domain 都可以做好。

2021 Domain Adaptation(李宏毅相关推荐

  1. 2021李宏毅机器学习课程笔记——Domain Adaptation

    注:这个是笔者用于期末复习的一个简单笔记,因此难以做到全面详细,有疑问欢迎大家在评论区讨论 https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-d ...

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

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本节内容综述 本节课由助教 Chao Brian 讲解. 首先讲解些领域适配的基础内容,包括名词.定义等. 接 ...

  3. 李宏毅学习笔记43.More about Domain Adaptation. Part II. Applications

    文章目录 主要内容 1.Image-to-Image translation 1.1UNIT VAE Loss GAN Loss Cycle Consistency Loss 结果 1.2MUNIT ...

  4. 迁移学习之域自适应理论简介(Domain Adaptation Theory)

    ©作者 | 江俊广 单位 | 清华大学 研究方向 | 迁移学习 本文主要介绍域自适应(Domain Adaptation)最基本的学习理论,全文不涉及理论的证明,主要是对部分理论的发展脉络的梳理,以及 ...

  5. 从近年顶会论文看领域自适应(Domain Adaptation)最新研究进展

    ©PaperWeekly 原创 · 作者 | 张一帆 学校 | 中科院自动化所博士生 研究方向 | 计算机视觉 Domain Adaptation 即在源域上进行训练,在目标域上进行测试. 本文总结了 ...

  6. Unsupervised Domain Adaptation with Variational Approximation for Cardiac Segmentation

    Wu F, Zhuang X. Unsupervised domain adaptation with variational approximation for cardiac segmentati ...

  7. 【ICML 2015迁移学习论文阅读】Unsupervised Domain Adaptation by Backpropagation (DANN) 无监督领域自适应

    会议:ICML 2015 论文题目:Unsupervised Domain Adaptation by Backpropagation 论文地址:http://proceedings.mlr.pres ...

  8. domain adaptation 小综述

    前段时间为了一个项目读了一些domain adaptation的论文,希望了解领域背景和前沿,现在进行一个总结. 首先介绍下domain adaptation的概念,简单地说就是,在一个数据集上训练得 ...

  9. cross-domin,Domain adaptation 与 Domain generalization学习

    参考: [迁移学习]Domain Adaptation系列论文解析(不断更新中) - 知乎 同任务但不同domain数据的统一模型 transfer learning 和 cross domain 有 ...

  10. 迁移学习——Domain Adaptation

    Domain Adaptation 在经典的机器学习问题中,我们往往假设训练集和测试集分布一致,在训练集上训练模型,在测试集上测试.然而在实际问题中,测试场景往往非可控,测试集和训练集分布有很大差异, ...

最新文章

  1. Android之ksoap2-android详解与调用天气预报Webservice完整实例
  2. MySQL 性能优化技巧
  3. python使用需要钱吗-万能的Python竟然算不明白“钱”?损失惨重!
  4. Python 技术篇-用flask服务实现mac本地文件上传至windows服务器指定文件夹下实例演示
  5. 【PC工具】chrome插件: Github 项目代码树形格式展示工具octotree
  6. 你值得拥有!一个基于 Spring Boot 的API、RESTful API 的项目
  7. 怎样在PropertySheet中添加按钮
  8. 精讲23种设计模式-基于观察者模式~设计异步多渠道群发框架
  9. mongodb慢查询记录
  10. Docker容器服务发现方案
  11. 系统学习深度学习(二十六)--BiRNN
  12. linux下vivado编译卡死,vivado+zedboard之Linux编译
  13. 你来比划我来猜 绿色游戏猜词小软件
  14. win10截图截屏快捷键 截图截屏工具
  15. 国内就能读的中国人民大学与加拿大女王大学金融硕士,为职业发展的下一个阶段积蓄能量
  16. 王明道牧师《写给青年基督徒的一封信》
  17. 2014巴西世界杯 不再有观众!
  18. 莫以物喜 -=莫以己悲!
  19. stata在进行meta分析时出现command metabias is unrecognized,如何解决?
  20. 聊聊程序员的核心能力

热门文章

  1. Apple Pay支付流程详解
  2. #10015. 「一本通 1.2 练习 2」扩散 二分+并查集或Floyd
  3. CPU超频烤机温度多少算正常?
  4. 记2017莫名其妙的美团校招安卓岗
  5. 白帽杯2022-Misc 游戏秘籍 write-up
  6. 系统集成项目管理工程师备考资料(口袋应试第二版)14
  7. 科幻作品中强大的计算机和人工智能有哪些?
  8. 《富爸爸穷爸爸》:为什么你很穷
  9. 成都最最最牛逼的IT公司全在这了
  10. Allegro静态铜皮避让问题