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

article/2025/11/8 18:59:48

会议:ICML 2015
论文题目:Unsupervised Domain Adaptation by Backpropagation
论文地址:http://proceedings.mlr.press/v37/ganin15.pdf
论文代码:https://github.com/fungtion/DANN

问题描述:深度学习的模型在source domain数据集上训练的很好(90%左右),但是迁移到target domain的效果就很差(54%左右),这种现象叫做domain shift。
在这里插入图片描述
Target Domain的图片是无标签

《Unsupervised domain Adaptation by Backpropagation》这篇论文发表于2015 ICML,目前引用量已经3000+,这篇文章讲得非常好,把对抗训练的思想应用到分布迁移上面。具体来说在原来feature mapping的基础上外接一个domain classifier(之前那个叫做label classifier),这个domain classifier的作用是判别当前样本是属于哪个domain的,如果你的数据集只有两个分布,那么这个classifier就是一个二分类任务。如果你正常进行梯度更新的话,feature mapping这个向量在不同的domain上就会dissimilar,但是如果你加了梯度反向层(让encoder这个部分关于domain的loss传回来的梯度是反向更新的),那么这个features mapping在不同的domain(数据集)上就可以表现出特征不变性(也就是体现出特征解耦)

DANN模型架构

在这里插入图片描述
本文核心思想:训练上面的模型,让domain classifier无法分辨出你输入的x属于哪个domain。这时,我们的目的就达到了,因为我们在分不清这个x是哪个domain的情况下,模型还是能用label predictor分类器做出x的label的预测。说明我们换个domain的数据,label预测任务的性能仍然较好。

不同模块的功能

  • Domain Classifier:区分输入图片是属于哪个domain的(source domain或target domain)
  • Label Predictor:识别source domain图片上的数字
  • Feature Extrator:帮助Label Predictor做预测;捅domain classifier一刀,做和他相反的事情。

下图来自李宏毅老师的课件,正好把论文中的架构图解释清楚了

在这里插入图片描述
训练时需要用到三组数据和标签

  1. source domain:黑色背景的4,图片上的数字为"4"
  2. source domain:黑色背景的4,图片来自domain0
  3. target domain:彩色背景的4,图片来自domain1

在这里插入图片描述

梯度反转层


在这里插入图片描述

核心代码部分

结合代码去理解上面的模型结构图就很简单了
在这里插入图片描述

实验

在这里插入图片描述

在这里插入图片描述

问题探讨

1. 梯度翻转层的作用

通过梯度翻转层来提取domain-invariant特征的方法真的是最好的方法吗?其实你feature extractor最大化Ld loss(极端点,source domain图片预测成target,target domain图片预测成source),在某种程度是也是把source domain和target domain分开。所以它未必是最好的做法。不过用梯度翻转层这个trick也确实是有用的。 LHY 18:57

2. DANN和GAN的训练方式对比

DANN是通过梯度翻转层,来实现一步到位的模型更新的(不再需要像GAN一样交替训练网络)。

那这里我们再回顾下GAN是怎么更新模型的。

GAN的训练过程(交替训练)

  1. 训练Discriminator,固定Generator(梯度不更新),使他能分清楚真假图片
  2. 训练Generator(梯度上升法),固定Discriminator,使Fake image输入到Discriminator的输出标签接近Real
  3. 交替训练1,2两步,最终我们希望Generator能骗过Discriminator(即真假图片输入到Discriminator,输出都是Real
    在这里插入图片描述

3. Domain Adaptation的类型

本文介绍的是一种Adversarial based Domain Adaptation,但Domain Adaptation还有其他的类型,Divergence based Domain Adaptation,Reconstruction based Domain Adaptation

Divergence based Domain Adaptation
在这里插入图片描述

Reconstruction based Domain Adaptation
在这里插入图片描述

更多的内容推荐阅读博客:Medium - Understanding Domain Adaptation

参考资料

  • 李宏毅学习笔记42.More about Domain Adaptation. Part I. Domain Adaptation
  • [video] 李宏毅Domain Adaptation
  • ML 108-2 Domain Adaptation.pdf (Domain Adaptation综述)

http://chatgpt.dhexx.cn/article/DaROQ6i6.shtml

相关文章

【深度域自适应】二、利用DANN实现MNIST和MNIST-M数据集迁移训练

前言 在前一篇文章【深度域自适应】一、DANN与梯度反转层(GRL)详解中,我们主要讲解了DANN的网络架构与梯度反转层(GRL)的基本原理,接下来这篇文章中我们将主要复现DANN论文Unsupervised Domain Adaptation…

【深度域适配】一、DANN与梯度反转层(GRL)详解

CSDN博客原文链接:https://blog.csdn.net/qq_30091945/article/details/104478550 知乎专栏原文链接:https://zhuanlan.zhihu.com/p/109051269 前言 在当前人工智能的如火如荼在各行各业得到广泛应用,尤其是人工智能也因此从各个方面影响当前…

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

会议:ICML 2015 论文题目:Unsupervised Domain Adaptation by Backpropagation 论文地址: http://proceedings.mlr.press/v37/ganin15.pdf 论文代码: GitHub - fungtion/DANN: pytorch implementation of Domain-Adversarial Trai…

Domain Adaptation(领域自适应,MMD,DANN)

Domain Adaptation 现有深度学习模型都不具有普适性,即在某个数据集上训练的结果只能在某个领域中有效,而很难迁移到其他的场景中,因此出现了迁移学习这一领域。其目标就是将原数据域(源域,source domain)尽…

【迁移学习】深度域自适应网络DANN模型

DANN Domain-Adversarial Training of Neural Networks in Tensorflow域适配:目标域与源域的数据分布不同但任务相同下的迁移学习。 模型建立 DANN假设有两种数据分布:源域数据分布 S ( x , y ) \mathcal{S}(x,y) S(x,y)和目标域数据分布 T ( x , y ) …

【深度域自适应】一、DANN与梯度反转层(GRL)详解

前言 在当前人工智能的如火如荼在各行各业得到广泛应用,尤其是人工智能也因此从各个方面影响当前人们的衣食住行等日常生活。这背后的原因都是因为如CNN、RNN、LSTM和GAN等各种深度神经网络的强大性能,在各个应用场景中解决了各种难题。 在各个领域尤其…

Domain-Adversarial Training of Neural Networks

本篇是迁移学习专栏介绍的第十八篇论文,发表在JMLR2016上。 Abstrac 提出了一种新的领域适应表示学习方法,即训练和测试时的数据来自相似但不同的分布。我们的方法直接受到域适应理论的启发,该理论认为,要实现有效的域转移&#…

DANN:Domain-Adversarial Training of Neural Networks

DANN原理理解 DANN中源域和目标域经过相同的映射来实现对齐。 DANN的目标函数分为两部分: 1. 源域分类损失项 2. 源域和目标域域分类损失项 1.源域分类损失项 对于一个m维的数据点X,通过一个隐含层Gf,数据点变为D维: 然后经…

DaNN详解

1.摘要 本文提出了一个简单的神经网络模型来处理目标识别中的域适应问题。该模型将最大均值差异(MMD)度量作为监督学习中的正则化来减少源域和目标域之间的分布差异。从实验中,本文证明了MMD正则化是一种有效的工具,可以为特定图像数据集的SURF特征建立良好的域适应模型。本…

[Tensorflow2] 梯度反转层(GRL)与域对抗训练神经网络(DANN)的实现

文章目录 概述原理回顾 (可跳过)GRL 层实现使用 GRL 的域对抗(DANN)模型实现DANN 的使用案例 !!!后记 概述 域对抗训练(Domain-Adversarial Training of Neural Networks,DANN)属于广义迁移学习的一种, 可以矫正另一个域的数据集的分布, 也可…

DANN 领域迁移

DANN(Domain Adaptation Neural Network,域适应神经网络)是一种常用的迁移学习方法,在不同数据集之间进行知识迁移。本教程将介绍如何使用DANN算法实现在MNIST和MNIST-M数据集之间进行迁移学习。 首先,我们需要了解两个…

DANN-经典论文概念及源码梳理

没错,我就是那个为了勋章不择手段的屑(手动狗头)。快乐的假期结束了哭哭... DANN 对抗迁移学习 域适应Domain Adaption-迁移学习;把具有不同分布的源域(Source Domain)和目标域(Target Domain…

EHCache 单独使用

参考: http://macrochen.blogdriver.com/macrochen/869480.html 1. EHCache 的特点,是一个纯Java ,过程中(也可以理解成插入式)缓存实现,单独安装Ehcache ,需把ehcache-X.X.jar 和相关类库方到classpath中…

ehcache 的使用

http://my.oschina.net/chengjiansunboy/blog/70974 在开发高并发量,高性能的网站应用系统时,缓存Cache起到了非常重要的作用。本文主要介绍EHCache的使用,以及使用EHCache的实践经验。 笔者使用过多种基于Java的开源Cache组件,其…

Ehcache 的简单使用

文章目录 Ehcache 的简单使用背景使用版本配置配置项编程式配置XML 配置自定义监听器 验证示例代码 改进代码 备注完整示例代码官方文档 Ehcache 的简单使用 背景 当一个JavaEE-Java Enterprise Edition应用想要对热数据(经常被访问,很少被修改的数据)进行缓存时&…

SpringBoot 缓存(EhCache 使用)

SpringBoot 缓存(EhCache 使用) 源文链接:http://blog.csdn.net/u011244202/article/details/55667868 SpringBoot 缓存(EhCache 2.x 篇) SpringBoot 缓存 在 Spring Boot中,通过EnableCaching注解自动化配置合适的缓存管理器(CacheManager…

shiro框架04会话管理+缓存管理+Ehcache使用

目录 一、会话管理 1.基础组件 1.1 SessionManager 1.2 SessionListener 1.3 SessionDao 1.4 会话验证 1.5 案例 二、缓存管理 1、为什么要使用缓存 2、什么是ehcache 3、ehcache特点 4、ehcache入门 5、shiro与ehcache整合 1)导入相关依赖&#xff0…

使用Ehcache的两种方式(代码、注解)

Ehcache,一个开源的缓存机制,在一些小型的项目中可以有效的担任缓存的角色,分担数据库压力此外,ehcache在使用上也是极为简单, 下面是简单介绍一下ehcahce的本地使用的两种方式: 1,使用代码编写的方式使用…

EhCache常用配置详解和持久化硬盘配置

一、EhCache常用配置 EhCache 给我们提供了丰富的配置来配置缓存的设置; 这里列出一些常见的配置项: cache元素的属性: name:缓存名称 maxElementsInMemory:内存中最大缓存对象数 maxElementsOnDisk&#xff…

EhCache初体验

一、简介 EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点。Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支…