在前面介绍的模型中,一般我们都会假设训练资料和测试资料符合相同的分布,这样模型才能够有较好的效果。而如果训练资料和测试资料是来自于不同的分布,这样就会让模型在测试集上的效果很差,这种问题称为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. flutter系列之:深入理解布局的基础constraints

    目录 简介 Tight和loose constraints 理解constraints的原则 总结 简介 我们在flutter中使用layout的时候需要经常对组件进行一些大小的限制,这种限制就叫做c ...

  2. Springboot 之 Mybatis-plus 多数据源

    简介 Mybatis-puls 多数据源的使用,采用的是官方提供的dynamic-datasource-spring-boot-starter包的 @DS 注解,具体可以参考官网: https://g ...

  3. H5与APP的交互框架(WebViewJavascriptBridge)

    基本原理是: 把 OC 的方法注册到桥梁中,让 JS 去调用. 把 JS 的方法注册在桥梁中,让 OC 去调用.(注册自己,调用它人.) WebViewJavaScriptBridge 使用的基本步骤 ...

  4. P6189 [NOI Online #1 入门组] 跑步 (DP/根号分治)

    (才了解到根号分治这样的妙方法......) 将每个数当成一种物品,最终要凑成n,这就是一个完全背包问题,复杂度O(n2),可以得80分(在考场上貌似足够了......) 1 #include < ...

  5. POJ3342 Party at Hali-Bula(树形DP)

    dp[u][0]表示不选u时在以u为根的子树中最大人数,dp[u][1]则是选了u后的最大人数: f[u][0]表示不选u时的唯一性,f[u][1]是选了u后的唯一性,值为1代表唯一,0代表不唯一. ...

  6. 洛谷P2886 [USACO07NOV]Cow Relays G (矩阵乘法与路径问题)

    本题就是求两点间只经过n条边的最短路径,定义广义的矩阵乘法,就是把普通的矩阵乘法从求和改成了取最小值,把内部相乘改成了相加. 代码包含三个内容:广义矩阵乘法,矩阵快速幂,离散化: 1 #include ...

  7. Vue3 JS 与 SCSS 变量相互使用

    在开发中会遇到如下需求: JS 中使用 SCSS 变量.如在 scss 中定义了一个颜色,el-menu 组件使用该颜色作为背景色,此时需要获取 scss 变量,通过 background-color ...

  8. Doris开发手记4:倍速性能提升,向量化导入的性能调优实践

    最近居家中,对自己之前做的一些工作进行总结.正好有Doris社区的小伙伴吐槽向量化的导入性能表现并不是很理想,就借这个机会对之前开发的向量化导入的工作进行了性能调优,取得了不错的优化效果.借用本篇手记 ...

  9. 前端无法渲染CSS文件

    问题描述: 启动前端后,发现前端的页面渲染不符合预期,看情况应该是css文件没有生效. 排查步骤: 查看有无报错信息. 查看后台输出,没有可用的提示信息,如图: 确认 css 的路径没错. 前端打包后 ...

  10. 利用inotify和rsync服务实现数据实时同步

    文件定时同步的实现: 利用rsync结合cron计划任务实现: rsync -av --delete /data/ 10.0.0.12:/back -a:保留文件属性 -v:显示过程 -delete: ...