李宏毅机器学习——领域适应Domain Adaptation

代码:李宏毅机器学习作业11——Transfer Learning,Domain Adversarial Training_iwill323的博客-CSDN博客

目录

domain shift(域的转变)

问题出现的原因

类型

​domain adaptation 面临的情况

少量有标注的目标领域资料:微调

大量无标注的目标领域资料:Feature Extractor

如何找到Feature Extractor: domain adversarial training(域对抗训练)

Considering Decision Boundary

在target Domain上只有很少量且没有标注的数据

没有目标领域资料:Domain Generalization

Universal Domain Adaptation


domain shift(域的转变)

当训练资料和测试资料存在不同的分布时,在训练资料上训练出来的模型在测试资料上面可能就会坏掉,这样的情况叫做domain shift(域的转变)。比如在黑白的数字上面训练一个模型,直接用到彩色的数字上,得到的正确率会低到只有 57%。涉及到域的转变就是领域自适应学习,就是将在A domain上学到的东西应用到B domain上,类似于transfer learning(在A任务上学到的技能可以用到B任务上)。

李宏毅机器学习——领域适应Domain Adaptation_第1张图片

问题出现的原因

类似于Anomaly Detection,如果对Source Data中沒有出現過的(或稱Abnormal的)test data做测试,那麼model大部分都會因為不熟悉這個data而可能性能很差。

下面將model拆成Feature Extractor(上半部)和Classifier(下半部)來作例子: 

李宏毅机器学习——领域适应Domain Adaptation_第2张图片

整個Model在學習Source Data的時候,Feature Extrator因為看過很多次Source Data,所以所抽取出來的Feature可能就頗具意義,例如像圖上的藍色Distribution,已經將圖片分成各個Cluster,所以這個時候Classifier就可以依照這個Cluster去預測結果。

但是在做Target Data的時候,Feature Extractor會沒看過這樣的Data,導致輸出的Target Feature可能不屬於在Source Feature Distribution上,這樣的Feature給Classifier預測結果顯然就不會做得好。

类型

domain shift有三种类型:

  • 输入分布变化。原始domain和目标domain的输入资料不一样,导致输出几率的变化。
  • 输出的分布变化。在训练资料上面每一个数字出现的几率都是一样的,但是在测试资料上面可能每一个输出的机率是不一样的。
  • 输入跟输出虽然分布可能是一样的,但它们之间的关係变了。比较罕见

李宏毅机器学习——领域适应Domain Adaptation_第3张图片
domain adaptation 面临的情况

领域自适应可能面临四种情况(针对掌握的目标领域资料而言):

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

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

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

4、没有目标领域资料

另外,也许在 Target Domain 上有一大堆的资料,那些资料也都有Label,就不需要做 Domain Adaptation,直接拿 Target Domain 的资料来训练就好了
李宏毅机器学习——领域适应Domain Adaptation_第4张图片

量有标注的目标领域资料:微调

处理思想:先用原始资料训练一个模型,然后用目标资料对模型进行微调,类似于BERT。

处理遇到的困难:只用目标资料来微调,一定要注意在微调时不要让模型过拟合了,一般在target domain的资料上不用跑太多iteration,跑太多轮就容易过拟合。只稍微跑个两三个Epoch就足够了,把 Learning Rate 调小一点,让fine tune前跟fine tune后的模型参数不要差很多

大量无标注的目标领域资料:Feature Extractor

这种情境蛮符合在真实的系统上有可能会发生的情境

处理思想:训练一个Network作为Feature Extractor(特征提取器),使用feature extractor将两个领域相同的部分提取出来,剔除掉不同的部分。下图例子中,Feature Extractor 可以学到无视顏色这件事情,把顏色的资讯滤掉,不管是来自 Source Domain还是来自 Target Domain 的图片,只要通过 Feature Extractor 以后得到的 Feature 有一样的分布,那么后面的模型就会因为输入是正常的output而发挥正常的作用

李宏毅机器学习——领域适应Domain Adaptation_第5张图片

如何找到Feature Extractor: domain adversarial training(域对抗训练)

可以把一般的 Classifier分成 Feature Extractor和Label Predictor 两个部分。比如将前 5 层算是 Feature Extractor,后 5 层算是 Label Predictor,这个层数是一个超参数,需要进行调整得到。(下图中红色和蓝色的点)。训练时,把Source Domain 和 Target Domain的图片丢到这个Image Classifier,希望Feature Extractor 的 Output 看起来要分不出差异

李宏毅机器学习——领域适应Domain Adaptation_第6张图片

藉由 Domain Adversarial Training 技术实现。训练一个domain classifier,它是二元分类器,用来判断输入向量是来自於 Source Domain还是来自於 Target Domain。Feature Extractor 学习的目标就是要去想办法骗过这个 Domain Classifier。

并且label predictor要正确分辨图片中是什么数字,这样对Feature Extractor的输出进行了限制,比如Feature Extractor不能看到什麼东西永远输出零向量,虽然这样能骗过 Discriminator。因此,feature extractor抽取的特征既要让domain classifier无法区分两个domain,又要让label predictor能区分Source Domain中的图片。

李宏毅机器学习——领域适应Domain Adaptation_第7张图片

Label Predictor 的参数叫θp,Domain Classifier 的参数叫做θd,Feature Extractor 的参数叫做θf。

Label Predictor对实际的分类任务进行分类,分类结果与实际分类之间的CrossEntropy记为L(Source Domain 上的 Image分类),Domain Classifier对Feature Extractor得到的feature进行二元分类,判断来自哪个Domain,分类结果与实际分类之间的Loss记为Ld。

训练目标:

  • Label Predictor找到θp,让L越小越好
  • Domain Classifier 找到θd,让Ld越小越好
  • Feature Extractor找到θf,既能让LabelPredictor分类准确,减小L,又能让尽量让DomainClassifier难以分辨,增大Ld。所以Feature Extractor 的Loss定义为L-Ld,找到θf使之尽可能小。

但是L-Ld这个式子存在问题,本来是想用 -Ld来表示让classifier分不清向量来源,但是把source误判为target,把target误判为source,这也能实现min-Ld。但是这个式子是有用的,只不过未必是最好的方法,还有待探究。

李宏毅机器学习——领域适应Domain Adaptation_第8张图片

结果如下图表格的第二行

李宏毅机器学习——领域适应Domain Adaptation_第9张图片

Considering Decision Boundary

希望两个domain的分布更加接近——让target domain 的data尽量避开 source domain中得到的分界点boundary,离boundary越远越好,于是让不同类别的“输出”之间差异尽可能地大,尽可能地集中在某一类别上

李宏毅机器学习——领域适应Domain Adaptation_第10张图片

有一个知名的方法叫做 DIRT-T,还有另外一个招数叫Maximum Classifier Discrepancy
 

李宏毅机器学习——领域适应Domain Adaptation_第11张图片

在target Domain上只有很少量且没有标注的数据

不只没有 Label而且 Data 还很少,比如说只有一张而已。有一个方法叫做 Testing Time Training。

没有目标领域资料:Domain Generalization

对 Target Domain 一无所知,这个时候不叫 Domain Adaptation,通常就叫 Domain Generalization,在 Testing 的时候,不管来什麼神奇的 Domain,它都可以处理。
分成两种状况。一种状况是训练资料非常地丰富,包含了各式各样不同的 Domain,假设要做猫狗的分类器,现在训练资料裡面有真实的猫跟狗的照片,有素描的猫跟狗的照片,然后有这个水彩画
的猫跟狗的照片,期待模型可以学到如何弥平 Domain 间的差异,测试资料是卡通的猫跟狗,模型可以处理
另外一种,假设训练资料只有一个 Domain 呢,而测试资料有多种不同的 Domain,使用的思想类似于data augumentation,产生多个domain的资料,利用多个domain资料训练出来的模型更强。

李宏毅机器学习——领域适应Domain Adaptation_第12张图片

Universal Domain Adaptation

source资料和target资料不一定有相同的标签。实线的圈圈代表Source Domain 裡面有的东西,虚实线的圈圈代表 Target Domain 裡面有的东西。

  • Source Domain 裡面的东西比较多,Target Domain 裡面的东西比较少
  • Source Domain 裡面的东西比较少,Target Domain 的东西比较多
  • 可能两者虽然有交集,但是各自都有独特的类别

当有不一样的label的时候怎么办呢:通用领域自适应Universal Domain Adaptation,参见下面引用的文献。

李宏毅机器学习——领域适应Domain Adaptation_第13张图片

参考:Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.

你可能感兴趣的:(李宏毅深度学习笔记,深度学习,人工智能)