Domain Adaptation 相关介绍

2024-01-09 14:12

本文主要是介绍Domain Adaptation 相关介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. Transfer Learning

Transfer learning 是机器学习的一个分支, 而 Domain adpatation 是 transfer learning 的一个分支.
在 transfer learning 中有两个概念: source domain (源域) 和 target domain (目标域).
源域中往往有丰富的信息, 比如有大量的数据点和其真实的标签; 但目标域中相反, 数据不带有标签或少量数据带有标签, 所以无法用传统的方式学习. Transfer learning 的目标是: 利用两个域的信息, 学习一个能在 target domain 上准确率高的分类器.

根据两个域的背景设定不同, transfer learning 有以下分类, 本文关注于 domain adaptation.
在这里插入图片描述
上图来自于综述论文 A survey on domain adaptation theory: learning bounds and theoretical guarantees.

  • 传统的学习设定: 两个域的输入分布相同, 且任务相同. 这时的 source domain 就是训练集, target domain 就是测试集.
  • Inductive transfer learning: 两个域的输入分布相同, 但任务不同.
  • Transductive transfer learning/ Domain adaptation: 两个域的输入分布不同, 但任务相同.
  • Unsupervised transfer learning: 两个域的输入分布不同, 且任务不同.

所以在 Domain adaptation 任务中, source domain 与 target domain 是不同的, 这种差别称为: distributional change, distributional shift 或 domain shift. 下面介绍下 domain shift.

2. Domain Shift

Domain shift 主要分为以下三种: prior shift, covariate shift 和 concept shift.

2.1 Prior shift

用于 Y → X Y\rightarrow X YX problems, 设定为:

  • posterior distributions are equivalent: p s ( x ∣ y ) = p t ( x ∣ y ) p_s(x|y)=p_t(x|y) ps(xy)=pt(xy)
  • prior distributions of classes are different: p s ( y ) ≠ p t ( y ) p_s(y)\neq p_t(y) ps(y)=pt(y)

2.2 Covariate shift

用于 X → Y X\rightarrow Y XY problems, 设定为:

  • marginal distributions are different: p s ( x ) ≠ p t ( x ) p_s(x)\neq p_t(x) ps(x)=pt(x)
  • conditional distributions are equivalent: p s ( y ∣ x ) = p t ( y ∣ x ) p_s(y|x)=p_t(y|x) ps(yx)=pt(yx)

Covariate shift 是最常见的设定, 大多domain adaptation 的论文都是以这个为背景. 上图是一个例子, source 与 target 的分布不同(左图), 但它们的样本点都坐落在 true function 的周围(右图), 如果只用 source samples 做训练可能会得到绿色的函数, 无法用在 target domain上.

2.3 Concept shift

又叫 Data drift, 用于 X → Y X\rightarrow Y XY Y → X Y\rightarrow X YX problems.

  • In X → Y X\rightarrow Y XY problems: p s ( x ) = p t ( x ) p_s(x)=p_t(x) ps(x)=pt(x) and p s ( y ∣ x ) ≠ p t ( y ∣ x ) p_s(y|x)\neq p_t(y|x) ps(yx)=pt(yx)
  • In Y → X Y\rightarrow X YX problems: p s ( y ) = p t ( y ) p_s(y)=p_t(y) ps(y)=pt(y) and p s ( x ∣ y ) ≠ p t ( x ∣ y ) p_s(x|y)\neq p_t(x|y) ps(xy)=pt(xy)

3. Closed-set Unsupervised Domain Adaptation

Domain Adaptation 其实也有很多类型, 比如 closed-set 或 open-set, unsupervised 或 supervised. 研究最多的是 closed-set unsupervised domain adaptation. 每个单词的意思是:

  • Domain Adaptation(DA): 正如前面讲的, source 与 target domain 的分布不同, 但任务相同
  • Unsupervised DA: target domain 中的数据不带有标签
  • Closed-set DA (traditional DA): source 与 target domain 的输入和输出空间相同,但联合概率分布不同 ⇒ X S = X T , Y S = Y T , p s ( x , y ) ≠ p t ( x , y ) \Rightarrow \mathcal{X_S}=\mathcal{X_T}, \mathcal{Y_S}=\mathcal{Y_T}, p_s(x,y)\neq p_t(x,y) XS=XT,YS=YT,ps(x,y)=pt(x,y).

4. 经典方法

DA 的目标是学习一个在 target domain 上效果好的分类器, 这等价于最小化在 target domain 上的expected risk, 用数学表示:
R T ( h ) = E ( x , y ) ∼ p t ( x , y ) [ ℓ ( h ( x ) , y ) ] = ∑ y ∈ Y ∫ X ℓ ( h ( x ) , y ) p t ( x , y ) p s ( x , y ) p s ( x , y ) d x = ∑ y ∈ Y ∫ X ℓ ( h ( x ) , y ) p s ( x , y ) p t ( x , y ) p s ( x , y ) d x = E ( x , y ) ∼ p s ( x , y ) [ p t ( x , y ) p s ( x , y ) ℓ ( h ( x ) , y ) ] R_T(h)=\mathbb{E}_{(x,y)\sim p_t(x,y)} [\ell(h(x),y)]\\ =\sum_{y\in Y} \int_{X} \ell(h(x),y)p_t(x,y)\frac{p_s(x,y)}{p_s(x,y)} dx\\ =\sum_{y\in Y} \int_{X} \ell(h(x),y)p_s(x,y)\frac{p_t(x,y)}{p_s(x,y)} dx\\ =\mathbb{E}_{(x,y)\sim p_s(x,y)} [\frac{p_t(x,y)}{p_s(x,y)}\ell(h(x),y)] RT(h)=E(x,y)pt(x,y)[(h(x),y)]=yYX(h(x),y)pt(x,y)ps(x,y)ps(x,y)dx=yYX(h(x),y)ps(x,y)ps(x,y)pt(x,y)dx=E(x,y)ps(x,y)[ps(x,y)pt(x,y)(h(x),y)]
这就可以与 source 建立联系, 且当设定为 covariate shift 时 [ p s ( x ) ≠ p t ( x ) , p s ( y ∣ x ) = p t ( y ∣ x ) p_s(x)\neq p_t(x), p_s(y|x)=p_t(y|x) ps(x)=pt(x),ps(yx)=pt(yx)]:
R T ( h ) = E ( x , y ) ∼ p s ( x , y ) [ p t ( x ) p t ( y ∣ x ) p s ( x ) p s ( y ∣ x ) ℓ ( h ( x ) , y ) ] = E ( x , y ) ∼ p s ( x , y ) [ p t ( x ) p s ( x ) ℓ ( h ( x ) , y ) ] R_T(h)=\mathbb{E}_{(x,y)\sim p_s(x,y)} [\frac{p_t(x)p_t(y|x)}{p_s(x)p_s(y|x)}\ell(h(x),y)]\\ =\mathbb{E}_{(x,y)\sim p_s(x,y)} [\frac{p_t(x)}{p_s(x)}\ell(h(x),y)] RT(h)=E(x,y)ps(x,y)[ps(x)ps(yx)pt(x)pt(yx)(h(x),y)]=E(x,y)ps(x,y)[ps(x)pt(x)(h(x),y)]
当设定为 prior shift 时 [ p s ( x ∣ y ) = p t ( x ∣ y ) , p s ( y ) ≠ p t ( y ) p_s(x|y)=p_t(x|y), p_s(y)\neq p_t(y) ps(xy)=pt(xy),ps(y)=pt(y)]:
R T ( h ) = E ( x , y ) ∼ p s ( x , y ) [ p t ( y ) p t ( x ∣ y ) p s ( y ) p s ( x ∣ y ) ℓ ( h ( x ) , y ) ] = E ( x , y ) ∼ p s ( x , y ) [ p t ( y ) p s ( y ) ℓ ( h ( x ) , y ) ] R_T(h)=\mathbb{E}_{(x,y)\sim p_s(x,y)} [\frac{p_t(y)p_t(x|y)}{p_s(y)p_s(x|y)}\ell(h(x),y)]\\ =\mathbb{E}_{(x,y)\sim p_s(x,y)} [\frac{p_t(y)}{p_s(y)}\ell(h(x),y)]\\ RT(h)=E(x,y)ps(x,y)[ps(y)ps(xy)pt(y)pt(xy)(h(x),y)]=E(x,y)ps(x,y)[ps(y)pt(y)(h(x),y)]
其中 w ( x ) = p t ( x ) p s ( x ) w(x)=\frac{p_t(x)}{p_s(x)} w(x)=ps(x)pt(x) 被称为 importance weight 或 re-weighting factor, w ( y ) = p t ( y ) p s ( y ) w(y)=\frac{p_t(y)}{p_s(y)} w(y)=ps(y)pt(y) 被称为 class weight.

所以很多早期经典论文都是从估计 w ( x ) w(x) w(x)角度出发, 主要思路是寻找一个合适的 w ( x ) w(x) w(x) 使得 re-weighted source dist. 与 target dist. 之间的差距最小化, 这种方法称为 Density Ratio Estimation (DRE), 可以读以下论文:

  • KMM - NeurIPS 2006
  • KLIEP - NeurIPS 2007

还有很多方法从 source 和 target 的子空间进行研究 (GFK, SA, SDA), 随着神经网络的流行, 又有一些文章用 DNNs 学习 source 和 target 之间的关系 (DDC, DAN, DANN, DeepCoral, DRCN, CoGAN), 多为基于GAN的模型.

5. 常用数据集

  1. Office-Home: https://arxiv.org/abs/1706.07522
  2. VLSC: https://openaccess.thecvf.com/content_iccv_2013/papers/Fang_Unbiased_Metric_Learning_2013_ICCV_paper.pdf
  3. DomainNet: https://ai.bu.edu/M3SDA/
  4. RMNIST: https://arxiv.org/abs/1508.07680
  5. CMNIST: https://arxiv.org/abs/1907.02893
  6. PACS: https://arxiv.org/abs/1710.03077
  7. Terra Incognita: https://arxiv.org/abs/1807.04975

这篇关于Domain Adaptation 相关介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/587404

相关文章

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe

Spring Security介绍及配置实现代码

《SpringSecurity介绍及配置实现代码》SpringSecurity是一个功能强大的Java安全框架,它提供了全面的安全认证(Authentication)和授权(Authorizatio... 目录简介Spring Security配置配置实现代码简介Spring Security是一个功能强