在前面介绍的模型中,一般我们都会假设训练资料和测试资料符合相同的分布,这样模型才能够有较好的效果。而如果训练资料和测试资料是来自于不同的分布,这样就会让模型在测试集上的效果很差,这种问题称为Domain shift。那么对于这种两者分布不一致的情况,称训练的资料来自于Source Domain,测试的资料来自于Target Domain。

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

  • 我们当前拥有少量目标领域的样本且含有标注:具体做法是取其中的一小部分去“微调”训练好的模型,但要注意不能够训练太多次迭代否则可能会对小部分的样本产生过拟合
  • 我们拥有目标领域的大量资料但是没有标注
  • 我们拥有很少量的目标领域的资料且没有标注
  • 我们根据对于目标领域没有认识与了解

那我们关注的主要是第二种情况,它是我们现实生活中的常见情况。那么最基本的想法是我们能不能训练一个特征提取器,它可以接受训练集和测试集的样本,然后输出是对这些样本的关键特征进行提取,例如下图的例子中就是去除掉颜色的影响,提取它作为数字最关键的特征

Domain Adversarial Training

这个想法是基于上面说的基本想法之上,但是它没有专门地去训练一个特征提取器,它只是在原来的模型上,划分一部分为特征提取器,另一部分为标签预测器,如下图:

那么在这个模型中,如果输入的是训练集的图片,我们可以通过其输出结果与真实结果之间的交叉熵来进行训练,但是如果输入是测试集的图片,由于没有标签就无法来调整参数,但这时就要想到我们的特征提取器。

经过特征提取器处理之后得到的向量,我们是希望训练集得到的向量分布,和测试集得到的向量分布是没有差异的,如下图:

那么怎么让这两个分布之间越接近越好呢?这时候就想到了对抗的思想,我们可以加入一个领域分辨器,它的输入就是特征提取器的这个输出向量,而输出就是该向量是来自于训练集还是测试集,因此我们可以将特征提取器看成是生成器,将领域分辨器看成是辨认器,特征提取器是不断调整参数来骗过领域分辨器,而领域分辨器则不断学会来区分,如下图:

但是我们要考虑到一个问题:有没有可能这样会使得特征提取器学习到不管我得到什么样的输入,我都输出一模一样的向量(例如零向量)这样你肯定无法分辨?可能会存在这个问题,但是如果真的只生成一模一样的向量,那么后面的标签预测器也就无法做出预测了!因此我们可以通过标签预测器的输出来防止这种情况的发生

假设特征提取器的参数为\(\theta_f\),标签预测器的参数为\(\theta_p\),领域辨别器的参数为\(\theta_d\),而L为标签预测器预测结果与真实结果之间交叉熵算出来的损失函数,\(L_d\)为领域辨别器分辨的时候的损失函数,那么各自的训练目标为:

\[\theta^*_p=min_{\theta_p}L\\\theta^*_d=min_{\theta_d}L_d\\\theta^*_f=min_{\theta_f}L-L_d
\]

第三个公式表明特征提取器一方面是希望能够降低后面预测的误差,另一方面是为了让领域辨别器无法分辨,从而来使得两个分布更加接近

Limitation

假设我们当前样本的类别有两类,那么对于有标签的训练集我们可以明显地划分为两类,那么对于没有标签的测试我们希望它的分布能够和训练集的分布越接近越好,如下图的右图

那么在这个思路上进行拓展的话,对于我们刚才手写识别的例子,我们输入一张图片得到的是一个向量,其中含有属于每一个分类的概率,那我们希望的是这个测试集的样本离分界线越远越好,那就代表它得到的输出向量要更加集中于某一类的概率,不能够各个分类的可能性都差不多,即:

那么上述想法的问题在于,有没有可能训练集和测试集的分类根据就是不同的呢?例如训练集中可以分为老虎和狮子两类,而测试集还有另外的狼呢?如下图:

那么这也是一个值得研究的问题。

其他情况

除了上述介绍的情况,我们对于测试集的了解程度还有其他的情况,例如我们只拥有很少量的测试集并且还没有标签,甚至于说我们对于测试集什么都不知道。这些情形会更加的复杂,目前也仍然处于研究之中

【机器学习】李宏毅——Domain Adaptation(领域自适应)的更多相关文章

  1. Domain adaptation:连接机器学习(Machine Learning)与迁移学习(Transfer Learning)

    domain adaptation(域适配)是一个连接机器学习(machine learning)与迁移学习(transfer learning)的新领域.这一问题的提出在于从原始问题(对应一个 so ...

  2. 论文阅读 | A Curriculum Domain Adaptation Approach to the Semantic Segmentation of Urban Scenes

    paper链接:https://arxiv.org/pdf/1812.09953.pdf code链接:https://github.com/YangZhang4065/AdaptationSeg 摘 ...

  3. Domain Adaptation (3)论文翻译

    Abstract The recent success of deep neural networks relies on massive amounts of labeled data. For a ...

  4. 关于模式识别中的domain generalization 和 domain adaptation

    今晚听了李文博士的报告"Domain Generalization and Adaptation using Low-Rank Examplar Classifiers",讲的很精 ...

  5. 【论文笔记】Domain Adaptation via Transfer Component Analysis

    论文题目:<Domain Adaptation via Transfer Component Analysis> 论文作者:Sinno Jialin Pan, Ivor W. Tsang, ...

  6. Domain Adaptation论文笔记

    领域自适应问题一般有两个域,一个是源域,一个是目标域,领域自适应可利用来自源域的带标签的数据(源域中有大量带标签的数据)来帮助学习目标域中的网络参数(目标域中很少甚至没有带标签的数据).领域自适应如今 ...

  7. A Primer on Domain Adaptation Theory and Applications

    目录 概 主要内容 符号说明 Prior shift Covariate shift KMM Concept shift Subspace mapping Wasserstein distance 应 ...

  8. Domain Adaptation (1)选题讲解

    1 所选论文 论文题目: <Unsupervised Domain Adaptation with Residual Transfer Networks> 论文信息: NIPS2016, ...

  9. 域适应(Domain adaptation)

    定义 在迁移学习中, 当源域和目标的数据分布不同 ,但两个任务相同时,这种 特殊 的迁移学习 叫做域适应 (Domain Adaptation). Domain adaptation有哪些实现手段呢? ...

  10. Deep Transfer Network: Unsupervised Domain Adaptation

    转自:http://blog.csdn.net/mao_xiao_feng/article/details/54426101 一.Domain adaptation 在开始介绍之前,首先我们需要知道D ...

随机推荐

  1. 关于Redhat-7.x-下docker的安装记录

    今天因公司项目,需要部署docker环境,能根据指定的镜像创建容器 于是首先就得先部署docker环境,过程记录如下: 在Redhat 7.x - (aws上的Redhat) 环境下部署过程 1.安装 ...

  2. DDD-领域驱动(三)-聚合与聚合根

    概念 高内聚 , 高内聚合Aggregate 就好比一个功能,各个模块互相是有依赖关系存在,例如: 低耦合:模块可以任意替换,不会影响系统的工作 例如:比如你今天穿了这套衣服,明天穿了另一套衣服,但你 ...

  3. Period of an Infinite Binary Expansion 题解

    Solution 简单写一下思考过程,比较水的数论题 第一个答案几乎已经是可以背下来的,在此不再赘述 考虑我们已经知道了\((p,q)\),其中\((p \perp q) \wedge (q \per ...

  4. 成功解决:Can‘t find Python executable “python“, you can set the PYTHON env variable.

    今天跑公司新项目的时候.运行前端vue.报了一个关于python的错误.就离谱 1.问题报错全部代码 actual version of core-js. npm ERR! code 1 npm ER ...

  5. 如何通过 C#/VB.NET 重命名 Excel 表格并设置选项卡颜色

    在 Excel 文件中创建多个工作表可以使数据更加井然有序.例如,可以为不同的区域.不同的月份/年份或不同的项目等创建不同的工作表.但要区分多个工作表,则需要更改它们的名称.同时,设置不同的选项卡颜色 ...

  6. 【单片机入门】(四)应用层软件开发的单片机学习之路-----ESP32开发板PWM控制电机以及中断的使用

    引言 各位大佬,晚上好啊,在上一篇博客中,我们讲了什么是UART串口通讯,以及使用USB转TTL使得单片机可以和c#上位机做一个串口通讯,接下来,为大家带来PWM的概念原理,以及实际案例,使用PWM对 ...

  7. Transformer 结构分析

    self-attetion 1. 输入 \[X = EmbeddingLookup(X) + PositionalEncoding \\ X.shape == (batch\_size, seq\_l ...

  8. BI系统打包Docker镜像及部署的技术难度和实现

    BI系统打包Docker镜像及部署的技术难度和实现 随着容器化技术盛行,Docker在前端领域也有着越来越广泛的应用:传统的前端部署方式需要我们将项目打包生成一系列的静态文件,然后上传到服务器,配置n ...

  9. Day2.1

    HelloWorld 随便新建一个文件夹,存放代码 新建一个java文件 文件后缀名为.java Hello.java 注意:系统可能没有显示文件名后缀,我们需要手动打开 编写代码 public cl ...

  10. Excel常用需求

    常用数据统计格式 外列表套内列表 [['name1','age1'],['name2','age2'],['name3','age3']] 外列表套内字典 [{'name':'xie','score' ...