领域自适应

news2024/11/21 13:50:24

领域自适应

迁移学习的核心思想在于,一个任务上训练得到的模型所包含的知识可以部分或全部地转移到另一个任务上。这种知识转移可以是网络参数、特征表示、数据间的关系等。通过迁移学习,我们可以利用已有的知识和经验来加速新任务的学习过程,降低模型训练的难度和成本。而领域自适应领域泛化是迁移学习的两个重要分支。

一、定义

领域自适应(Domain Adaptation, DA)是迁移学习的一个热门研究方向,它主要关注于如何缩小源领域(source domain)和目标领域(target domain)之间的差异,以便将源领域中的知识有效地迁移到目标领域中。这通常涉及到对源领域和目标领域的数据分布进行建模,并通过特征选择、特征变换、重标定等操作来减小领域间的差异。领域自适应的目标是使模型在目标领域上也能表现出良好的性能,即使目标领域的数据分布与源领域不同。

解释一下“领域的数据分布不同”是什么意思?左边数据是通过2D渲染所形成的,如左边的飞机,自行车,公交车,汽车,马等等;右边的数据是真实世界的数据,如飞机,自行车,公交车,马等等。虽然说都是马这种生物,但是数据分布却不相同,有真实世界中的马,也有通过2D渲染所形成的马,即 P ( x , y ) ≠ Q ( x , y ) P(x,y)\neq Q(x,y) Px,y)=Q(x,y)

在这里插入图片描述
领域自适应(Domain Adaptation)是一种源任务和目标任务一样,但是源域和目标域的数据分布不一样,并且源域有大量的标记好的样本,目标域则没有(或者只有非常少的)有标记的样本的迁移学习方法。这样就是怎么把源域上从大量的有标记样本中学习的知识迁移到目标域上,来解决相同的问题,而目标域上能利用的大多只有没有标记的样本。它关注的是如何缩小源域和目标域之间的数据分布差异,从而实现模型的迁移。

领域自适应(同构迁移学习)_迁移学习,什么时候可以领域适应?如何判断是否可行-CSDN博客

二、常用方法

1、最大均值差异化

最大均值差异化(Maximum Mean Discrepancy, MMD)的基本思想是最小化源领域和目标领域之间的均值差异。MMD 是一种非参数的度量方式,用于评估两个数据分布之间的差异。在领域自适应的上下文中,MMD 通常被用来衡量源领域和目标领域之间的分布差异,并尝试通过优化模型来减小这种差异,从而提高模型在目标领域上的性能。

MMD 的核心思想是,在再生核希尔伯特空间(Reproducing Kernel Hilbert Space, RKHS)中,如果两个数据集的均值表示(或嵌入)在这个空间中的差异很小,那么可以认为这两个数据集在某种程度上是相似的。MMD 通过计算这两个数据集在RKHS 中的均值嵌入之间的最大距离来量化它们之间的差异。

MMD的应用

TCA是一种边缘分布自适应方法,它假设存在一个特征映射ϕ,使得映射后数据的分布 P ( ϕ ( x s ) ) ≈ P ( ϕ ( x t ) ) P(ϕ(xs)) ≈ P(ϕ(xt)) P(ϕ(xs))P(ϕ(xt)),其中 x s 和 x t x_s和x_t xsxt分别代表源领域和目标领域的数据。TCA的目标是最小化源领域和目标领域之间的距离,而在这个过程中,MMD常被用作度量两个领域之间分布差异的工具。MMD通过计算两个数据集在(RKHS)中的均值嵌入之间的距离来量化它们之间的差异。

在TCA的框架下,MMD被用来衡量源领域和目标领域在映射后的特征空间中的分布差异。通过优化模型以最小化MMD损失,TCA能够找到一个特征映射ϕ,使得映射后的数据在两个领域之间的分布差异尽可能小。这样,原本在源领域上训练的模型就能够更好地适应目标领域的数据分布,从而提高在目标领域上的性能。

2、领域自适应SVM

领域自适应SVM(Domain Adaptation SVM)是一种常用的领域自适应方法,其基本思想是在源领域和目标领域之间共享一个SVM模型,并通过特征变换来实现源领域到目标领域的映射。通过特征变换、实例加权或模型微调等方法,使在源领域上训练的SVM模型能够更好地适应目标领域的数据分布,从而提高模型的泛化能力。

工作原理

1、特征表示:首先,需要为源领域和目标领域的数据定义适当的特征表示。这些特征应该能够捕捉到数据的关键信息,并有助于区分不同的类别。

2、领域差异度量:接下来,需要一种方法来度量源领域和目标领域之间的差异。这可以通过计算两个领域数据在特征空间中的某种统计量(如均值、协方差等)的差异来实现,或者使用更复杂的度量方法,如最大均值差异(MMD)。

3、领域自适应策略:根据度量的领域差异,选择合适的领域自适应策略来调整SVM模型。这可以包括特征变换(将源领域的数据映射到一个新的特征空间中,使其更接近目标领域的数据分布)、实例加权(为源领域的训练样本分配不同的权重,以强调那些与目标领域更相似的样本)、或者模型微调(在目标领域的数据上进一步训练已经用源领域数据预训练的SVM模型)。

4、模型训练与评估:最后,使用调整后的特征表示和领域自适应策略来训练SVM模型,并在目标领域的数据上评估其性能。如果性能不够理想,可能需要调整领域自适应策略或重新考虑特征表示。

3、深度领域自适应

深度领域自适应的基本思想是,在源领域和目标领域之间建立一个共享的深度神经网络模型,并通过特征变换和模型微调来实现源领域到目标领域的迁移。深度领域自适应通常包含以下几个步骤:

特征提取:使用一个预训练的深度神经网络模型,提取源领域和目标领域的特征。

特征变换:学习一个从源领域到目标领域的特征变换函数,将源领域的特征映射到目标领域的特征空间中。

模型微调:使用目标领域的数据对模型进行微调,进一步提高模型在目标领域上的性能。

常用方法
1、基于批归一化的迁移学习

批归一化(Batch Normalization,BN)已经被广泛应用于深度网络中。BN在深度网络的每一层里将输入数据进行归一化,使其变化为0均值和1方差的数据。此举减小了一个批次内的数据之间的分布差异、同时可以大大加快网络的收敛速度。我们令 μ 和 o ² μ和o^² μo²分别表示均值和方差。对于一个批次的数据 B = { ( x i , y i ) } i = 1 m B={\{(xi,yi)}\}^m_{i=1} B={(xi,yi)}i=1m,BN的目标是将每一个样本都归一化成如下的形式:

计算均值 μ B = 1 m ∑ i = 1 m x i \mu_{\mathcal{B}} = \frac{1}{m} \sum_{i=1}^{m} x_i μB=m1i=1mxi ,计算方差 σ B 2 = 1 m ∑ i = 1 m ( x i − μ B ) 2 \sigma_{\mathcal{B}}^2 = \frac{1}{m} \sum_{i=1}^{m} (x_i - \mu_{\mathcal{B}})^2 σB2=m1i=1m(xiμB)2

归一化 x ^ i = x i − μ B σ B 2 + ϵ \hat{x}_i = \frac{x_i - \mu_{\mathcal{B}}}{\sqrt{\sigma_{\mathcal{B}}^2 + \epsilon}} x^i=σB2+ϵ xiμB缩放和平移 y i = γ x ^ i + β y_i = \gamma \hat{x}_i + \beta yi=γx^i+β

在深度学习中,随着网络层数的增加,输入数据的分布会逐渐发生变化,这种现象被称为“内部协变量偏移”(Internal Covariate Shift)。批归一化通过归一化每一层的输入数据,有助于稳定数据的分布,从而改善模型的训练效果。在领域自适应中,源领域和目标领域的数据分布往往存在差异,这会导致在源领域上训练的模型在目标领域上表现不佳。为了缩小这种分布差异,提高模型在目标领域上的性能,可以采用基于批归一化的迁移学习方法。

一种有效的方法是自适应的批归一化(Adaptive Batch Normalization, AdaBN)。AdaBN的思想是首先在源领域数据上使用批归一化操作,然后在新的目标领域数据上重新计算批归一化的统计量(均值和方差)。通过这种方法,AdaBN能够针对不同领域的数据进行归一化处理,从而大大减少数据分布的差异。实验表明,AdaBN在多个领域自适应任务中都取得了显著的性能提升。

优点

  • AdaBN简单易行,只需要在目标领域数据上重新计算批归一化的统计量即可。
  • 它能够有效地缩小源领域和目标领域之间的分布差异,提高模型在目标领域上的性能。

局限性

  • AdaBN主要关注于数据层面的分布差异,对于特征层面的差异可能无法完全解决。
  • 当源领域和目标领域之间的差异非常大时,仅通过AdaBN可能无法完全实现领域自适应。
2、基于多表示学习的迁移网络结构

在迁移学习中,传统的领域自适应方法通常使用单一的结构将两个领域(源领域和目标领域)的数据提取到同一个特征空间,并在这个特征空间下使用不同方式(如对抗、MMD等)衡量两个领域分布的差异,通过最小化这个分布差异来实现分布对齐。然而,单一结构提取的特征表示往往只能包含部分信息,无法全面反映原始数据的特性。

多表示学习的迁移网络结构优势

为了更全面地表示原始数据,多表示学习的迁移网络结构被提出。这种结构通过多个子结构将原始数据映射到不同的特征空间(即多种表示),并在这些特征空间中分别进行特征对齐。这样做的好处是可以捕捉到原始数据的多个方面信息,从而提高迁移学习的效果和泛化能力。

大多数领域自适应的方法使用单一的结构将两个领域的数据提取到同一个特征空间,之后在此特征空间下使用不同方式(对抗学习或MMD等)最小化此分布的差异实现分布对齐。然而,单一结构提取的特征表示通常只能包含部分信息。例如,原始图像如图(a)所示。通过单一结构提取的特征表示可能仅包含部分信息,如图(b)饱和度、图©亮度、和图 (d) 色调。在这里插入图片描述
从图像中提取的特征通常只包含原始图像的部分信息,导致只在单一结构提取的特征上做特征对齐也只能关注到部分信息。因此,需要提取多种表示以更全面地表示原始数据。MRAN使用一种混合结构将原始图像提取到不同的特征空间(多种表示)以在不同的特征空间分别进行特征对齐。

多表示领域自适应是一种通用的结构。其可以使用不同的方法进行特征对齐。文献中使用CMMD(Center MMD)进行特征对齐。研究者可根据自己的问题设定以便灵活修改此结构。

MRAN方法如图所示。此框架相对简单,通过多个子结构将特征映射到多个特征空间,在多个特征空间中分别进行特征对齐。此处的多个子结构可以是不同的结构。
在这里插入图片描述
CMMD 损失:
在这里插入图片描述
其中 D s ( c ) 和 D t ( c ) D^{(c)}_s和D^{(c)}_t Ds(c)Dt(c)分别表示源域和目标域中属于第c类的样本集合, n s ( c ) n^{(c)}_s ns(c) n s ( c ) n^{(c)}_s ns(c)则分别表示其样本个数。

最后的损失函数包含两个部分:一个是分类的损失(交叉熵),另一个是不同表示下的CMMD损失之和。可以看到,优化目标和大多数迁移学习的方法相比非常简单、且具有很强的可扩展性(CMMD损失可以替换为任意自适应损失 )。

结构特点

  1. 多子结构映射:该结构包含多个子结构(如不同的神经网络层或模块),每个子结构负责将原始数据映射到一个特定的特征空间。这些特征空间可能关注于数据的不同方面(如颜色、纹理、形状等)。
  2. 特征对齐:在每个特征空间中,使用适当的方法(如对抗训练、MMD等)进行特征对齐,以减小源领域和目标领域之间的分布差异。由于存在多个特征空间,因此可以在多个层面上进行特征对齐,从而更全面地考虑数据的特性。
  3. 灵活性和可扩展性:多表示学习的迁移网络结构具有高度的灵活性和可扩展性。研究者可以根据自己的问题设定和需求,选择合适的子结构和特征对齐方法,并可以根据需要进行调整和优化。
3、知识蒸馏

知识蒸馏(KnowledgeDistillation,KD)是图灵奖获得者、深度学习三巨头之一的Geoffrey Hinton在2014年提出的用于知识迁移和深度模型压缩的技术。知识蒸馏的原理如图所示。其核心是,一个训练好的复杂模型(教师网络)中蕴含的知识可以被“提纯(蒸馏)”到另一个小模型中。小模型拥有比大模型更简单的网络结构、同时其预测效果也与大模型相近。因此,知识蒸馏也可以被视为一种模型压缩技术。
在这里插入图片描述
知识蒸馏要求首先训练好复杂的教师网络模型,然后训练学生模型使其预测无限接近教师模型。令p和q分别表示学生网络和教师网络的预测,则知识蒸馏的学习目标为 L K D = L ( y , p ) + λ L ( p , q ) L_{KD}=L(y,p)+{\lambda}L(p,q) LKD=L(y,p)+λL(p,q)

其中y为真实样本的标签,L(·,)为损失函数,例如交叉熵。式中第一项表示学生网络的训练误差,第二项则表示学生网络与教师网络输出的接近程度。直接将网络的输出(即softmax后的概率)作为评价标准可能会使得网络的信息由于softmax的存在变得难以传递。因此,Hinton团队提出了带有温度(Temperature)的softmax 函数: softmax ( x i , T ) = e x i T ∑ j e x j T \text{softmax}(x_i, T) = \frac{e^{\frac{x_i}{T}}}{\sum_{j} e^{\frac{x_j}{T}}} softmax(xi,T)=jeTxjeTxi

知识蒸馏在领域自适应中的优势

1、提高模型性能:通过知识蒸馏,目标领域的模型可以学习到源领域复杂模型的关键特征和结构信息,从而提高其在新任务上的性能。

2、减少计算成本:与直接在目标领域上训练复杂模型相比,使用知识蒸馏训练简单模型可以显著降低计算成本和存储需求。

3、增强模型泛化能力:知识蒸馏有助于模型学习到更加泛化的知识表示,从而提高模型在不同领域和任务上的泛化能力。

4、域对抗神经网络

生成对抗网络(Generative Adversarial Network,GAN)受到自博弈论中的二人零和博弈(Two-player game)思想的启发而提出。它一共包括两个部分:生成网络(Generative Network)负责生成尽可能以假乱真的样本,这部分称为生成器(Generator);判别网络(Discriminative Network)负责判断样本是真实的还是由生成器生成的,这部分称为判别器(Discriminator)。生成器和判别器互相博弈,便完成了对抗训练。

DANN,全称是Domain-Adversarial Neural Network(域对抗神经网络),是一种用于领域自适应(Domain Adaptation)的深度学习框架。在机器学习和计算机视觉领域,领域自适应是一种技术,旨在将一个或多个源域(source domain)中学习的知识迁移到目标域(target domain)中,尽管这两个域在数据分布上存在差异。

DANN的核心思想是通过引入一个域分类器(domain classifier)来最大化领域之间的差异,同时利用一个特征提取器(feature extractor)和一个标签预测器(label predictor)来最小化标签预测的损失。这两个过程在训练过程中是相互竞争的,形成了一种对抗关系:
在这里插入图片描述

1、特征提取器:它的目标是从输入数据中提取出对于域差异不敏感但对分类任务有用的特征。这意味着特征提取器试图欺骗域分类器,使其无法区分数据来自哪个域。

2、域分类器:它的任务是判断一个输入样本是来自于源域还是目标域。它的目标是与特征提取器相抗衡,即尽可能准确地分辨出样本的域标签。

3、标签预测器:在源域数据上训练,目标是正确预测输入样本的标签。其性能是评估DANN是否有效将源域知识迁移到目标域的关键指标。

在训练过程中,通过反向传播算法同时更新这三个组件的参数。具体地,会交替进行两个步骤:

  • 最小化标签预测损失:这一步通过标准的分类损失函数(如交叉熵损失)来优化特征提取器和标签预测器,使其能在源域数据上更好地进行标签预测。
  • 最大化域分类损失:这一步通过梯度反转层(Gradient Reversal Layer, GRL)来实现,该层在正向传播时保持不变,但在反向传播时将其梯度的符号反转。这样,在优化域分类器以最小化其分类损失的同时,实际上是在促使特征提取器学习能够欺骗域分类器的特征,即使得源域和目标域的数据在特征空间中的分布更加接近。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2044250.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【项目】多设计模式下的同步异步日志系统(二)

继上文对日志系统的介绍,并且实现了日志等级、日志消息的定义、以及格式化消息等。由这三个模块就能完整的输出一条消息。但是考虑到日志消息不可能全部都通过显示器展示。本项目针对落地方式,也进行多种编写,以供使用。 消息落地类(简单工厂…

打包时未添加camera模块,请参考https://ask.dcloud.net.cn/arss/1ooticle/283

今天在app打包使用的时候突然发现app在拍照上传照片的时候遇到这个问题 遇到这种情况通常是因为app打包的时候manifestjson文件中App模块配置中的Camera&Gallery配置没有打开,点击相应选项勾选即可 然后再上传打包就好了! 哈哈哈好久没写博客了最近太忙了&…

zigbee笔记:十三、议栈单播通信理论相关概念原理

一、端点(Endpoint) 1、端点基础知识 (1)、它是一个字节编号的(端点编号是0-255),数据接收和发送的基本单元,在模块通信的时候,发送模块必须指定收发双方模块的网络地址和…

GNOME 如何关闭显示输出 ? (wayland / mutter / KMS / DRI) (源代码阅读)

GNOME 设置里面有这样一个功能: 鼠标/键盘无操作几分钟之后, 自动关闭显示输出, 具体表现为显示器黑屏, 进入休眠模式. 按一下鼠标/键盘, 恢复显示. 这是一个很常见的功能, 但是需要等待一段时间. 于是窝就想, 可不可以用一种简单的方式, 比如 执行一条命令, 随时随地直接进入这…

routine.hpp路由匹配模块

一.路由匹配模块介绍 路由匹配模块可以验证路由键(routing key)和绑定键(binding key)的合法性,并根据不同的交换机类型(如Direct、Fanout和Topic)进行消息的路由匹配。 二.Routine类的实现 设…

从〇 搭建PO模式的Web UI自动化测试框架

Page Object模式简介 核心思想 将页面元素和操作行为封装在独立的类中,形成页面对象(Page Object)。每个页面对象代表应用程序中的一个特定页面或组件。 优点: 代码复用性高 页面对象可以在多个测试用例中复用。 易于维护 …

10 个最佳 Java NLP 库和工具

发现用于高级自然语言处理的最佳 Java NLP 库。通过文本分析、情感分析等增强您的应用程序。 Java 已成为一种功能强大且用途广泛的编程语言,广泛用于开发跨领域的各种应用程序。其丰富的库和工具生态系统使其成为各种任务的理想选择,包括自然语言处理 (…

NVDLA专题1:NVDLA框架介绍

NVDLA概述 深度学习的计算部分主要可以分为4部分:卷积、激活单元(神经元)、池化和归一化。由于每个运算模块都有比较独特的共享特征,因此非常适合给每个模块设计一个对应的特殊硬件实现:内存访问模式容易预测并且很容…

超高速NVME FPGA存储卡记录

板卡概述 XNM-KU-M4 是一款基于KU115 的高速存储模块。 该模块基于NVME固态硬盘,主要用于高速实时数据流的存储和回放,主要用于雷达、通信、电子、卫星等领域,包括高速ADC数据采样实时记录、DAC数据回放、基于光纤或者Rapid IO的高速数据记录…

SOLIDWORKS 2024:开启创新设计新篇章

随着2024年的到来,SOLIDWORKS也迎来了全新的篇章——SOLIDWORKS 2024。这款由Dassault Systmes开发的三维CAD软件,一直以其强大的功能和易用性引领着工程设计领域的潮流。作为SOLIDWORKS在中国的官方授权代理商,亿达四方致力于为企业提供最新…

一个人活成一个团队:python的django项目devops实战

文章目录 一、需求规划二、代码管理三、创建流水线1、配置流水线源 四、自动测试五、自动构建六、自动部署七、总结 对于开发团队来说提高软件交付的速度和质量是一个永恒的话题,对于个人开发者来说同样如此。作为一个码农,一定会有几个自己私有的小项目…

漏洞扫描的重要性,如何做好漏洞扫描服务

随着互联网技术的飞速发展,网络安全问题已成为不容忽视的重大挑战。其中,系统漏洞威胁作为最常见且严重的安全危险之一,对组织和个人的信息资产构成了巨大威胁。下面我们就来了解下漏洞扫描的好处、漏洞扫描的操作方法以及如何做好网络安全。…

【学习笔记】A2X通信的协议(九)- 广播远程ID(BRID)

3GPP TS 24.577 V18.1.0的技术规范,主要定义了5G系统中A2X通信的协议方面,特别是在PC5接口和Uu接口上的A2X服务。以下是文件的核心内容分析: 7. 广播远程ID(BRID) 7.1 概述 本条款描述了以下程序: 在用…

复现、并改进open-mmlab的mmpose详细细节

复现open-mmlab的mmpose详细细节 1.配置环境2.数据处理3.训练4.改进mmpose4.1 快速调试技巧4.2 快速定位4.3 改进backbone4.3.1 使用说明4.3.2 改进案例4.3.2.1 复现mmpose原配置文件4.3.2.2 复现开源项目4.3.2.3 修改配置文件4.3.2.4 修改新模型 4.4 添加auxiliary_head4.4.1 …

Python OpenCV 影像处理:读取、显示、储存影片

► 前言 本篇将介绍使用OpenCV Python撷取网路摄影机(webcam)的即时画面影像处理与显示,以及透过读取、显示和储存硬盘中的影片档案来实现影片操作。这将帮助大家了解如何使用OpenCV在影片上进行各种操作。 ► OpenCV Python撷取网路摄影机 OpenCV首先建立了一个…

【计算机网络】TCP实战

其实有了UDP的基础,TCP不管怎么说学习起来都还是比较舒服的,至少是比直接就学习TCP的感觉好。 这篇文章最多就是介绍一下起手式,如果想带业务的话和UDP那篇是完全一样的,就不进行演示了。 总的来说还是很简单的。 目录 Echo服务端…

魔方远程时时获取短信内容APP 前端Vue 后端Ruoyi框架(含搭建教程)

前端Vue 后端Ruoyi框架 APP原生JAVA 全兼容至Android14(鸿蒙 澎湃等等) 前后端功能: ①后端可查看用户在线状态(归属地IP) ②发送短信(自定义输入收信号码以及短信内容,带发送记录) ③短信内容分类清晰(接收时间、上传时间等等) ④前后端分离以及A…

Doris与StarRocks

目录 Doris Doris 架构 存储引擎 查询引擎 索引结构 存储模型 物化视图 使用场景 StarRocks 架构设计 架构选择 存算一体 节点 FE BE 存算分离 节点 存储 缓存 适用场景 OLAP 多维分析 实时数据仓库 高并发查询 统一分析 Doris和StarRocks对比 大规模…

Vue3中组件的多种写法

SFC单文件组件,一个vue写一个组件 使用 defineComponent h函数 去进行组件编写 使用 defineComponent JSX/TSX 去进行组件编写 需要安装插件pnpm i vitejs/plugin-vue-jsx -D 引入 配置 使用组件

Android的OkHttp使用和原理

前言 OkHttp的出现代替了HttpUrlConnection,被谷歌官方收纳为底层的网络框架。特点如下: 支持HTTP/2框架下的socket复用通过连接池减少连接的延时使用GZIP进行数据压缩使用缓存技术避免重复请求 当网络出现问题时,OkHttp会静默重新恢复连接…