【迁移学习论文四】Multi-Adversarial Domain Adaptation论文原理及复现工作

Multi-Adversarial Domain Adaptation 多对抗域适应

前言

  • 好久没有更新了,所以这周开始记录下来,也好督促自己。
  • 记录本人预备研究生阶段相关迁移学习论文的原理阐述以及复现工作。

问题

跨域混淆或错误对齐
在这里插入图片描述

文章介绍

这篇文章于2018年发表在AAAI,作者是清华大学龙明盛老师的学生。作者提到,域适应存在两个技术挑战:

  1. 通过最大限度地匹配跨域数据分布的多模式结构来增强正迁移;
  2. 通过防止跨域分布中模式的错误对齐来减轻负迁移。

在这些挑战的激励下,作者提出一种多对抗域自适应(MADA)方法,它捕获多模式结构,以支持基于多个域鉴别器的不同数据分布的细粒度对齐。与以前的方法相比,一个关键的改进是能够同时促进相关数据的正迁移和减轻不相关数据的负迁移。利用线性时间内的反向传播计算梯度,通过随机梯度下降实现自适应。

模型结构

在这里插入图片描述

标签分类器

  • 从图中可以看到,源域样本首先经过 G f G_f Gf层提取到相关特征,然后送入标签分类器 G y G_y Gy得到分类标签
  • 然后使用交叉熵损失计算分类损失。标签分类器几乎是所有模型必备的一项。这里不过多赘述。

局部域分类器

  • 我们可以看到上面的蓝色线条,这就是局部域分类器。

    • 首先 G f G_f Gf提取到目标域和源域的特征,然后经过GRL后送入局部域分类器。这里产生一个问题,目标域样本的标签我们是不知道的,只知道源域数据标签,那我们如何知道哪个样本应该送入哪个局部域分类器呢?
    • 让经过GRL之后的特征再与各个类别的标签分类概率相乘,然后送入相应类别的局部域分类器,在这个类别的分类概率越高就意味着这个局部域分类器对你的关注度就应该越高。
  • 对抗学习过程是一个双人博弈

    • 第一个参与者是经过训练的域鉴别器 G d G_d Gd,用于区分源域和目标域
    • 第二个参与者是同时经过微调的特征提取器 G f G_f Gf,用于混淆域鉴别器

损失函数

在这里插入图片描述

优点

本文提出的多对抗域自适应网络实现了细粒度自适应,每个数据点 x i x_i xi仅由相关的域鉴别器根据其概率 y i y_i yi进行匹配。这种细粒度的适应可能带来三个好处。

  1. 避免了将每个点只分配给一个域鉴别器的困难,避免了对目标域数据的不准确。
  2. 避免了负迁移,因为每个点只对齐到最相关的类,而不相关的类被概率过滤掉,不会包含在相应的域判别器中,从而避免了不同分布中判别结构的错误对齐。
  3. 用概率加权数据点训练多域鉴别器,自然学习到具有不同参数的多个域鉴别器;这些域具有不同参数的鉴别器促进每个实例的正迁移。

代码

# 前向传播方法
def forward(self, x):# 计算 lambda(lbda)lbda = self.get_lambda_p(self.get_p()) if self.mode == 'Train' else 0# 提取特征features = self.backbone(x)  # 通过特征提取器获取特征features = features.reshape(features.size(0), -1)  # 重塑特征形状为二维# 类别分类器得到类别预测结果class_logits = self.class_classifier(features)class_predictions = F.softmax(class_logits, dim=1)  # 对类别 logits 进行 softmax 得到概率# 对特征进行反转(领域自适应)reverse_features = GRL.apply(features, lbda)# 对每个类别使用独立的领域分类器进行域分类domain_logits = []for class_idx in range(self.num_classes):weighted_reverse_features = class_predictions[:, class_idx].unsqueeze(1) * reverse_features# 域分类器对加权的反转特征进行域分类domain_logits.append(self.domain_classifiers[class_idx](weighted_reverse_features).cuda())return class_logits, domain_logits  # 返回类别 logits 和域 logits
  • 前向传播(forward):

    • 输入数据 x 经过特征提取器(self.backbone)得到特征表示。
    • 特征表示经过类别分类器得到类别的预测结果(class_logits)。
    • 特征表示经过领域分类器,分别针对每个类别(num_classes)进行域分类。
  • 多个域分类器: 对每个类别都有一个独立的领域分类器,以便更好地适应不同类别在不同域中的分布情况。

总结

本文提出了一种新的多对抗域自适应方法来实现有效的深度迁移学习。与以往的领域对抗自适应方法只匹配域间的特征分布而不利用复杂的多模结构不同,该方法进一步利用判别结构,在多对抗自适应框架中实现细粒度分布对齐,同时促进正迁移规避负迁移

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

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

相关文章

手把手教你使用Cypress进行端到端测试

一、引言 Cypress是一个流行的端到端测试框架,它提供了一个全面的解决方案,可以测试任何在浏览器中运行的内容。不论你是想为一个小型项目添加测试,还是在大型企业级应用中进行端到端测试,Cypress都是一个不错的选择。本文将会手…

智能优化算法应用:基于阿基米德优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于阿基米德优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于阿基米德优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.阿基米德优化算法4.实验参数设定…

国家开放大学 河南开放大学形成性考核 平时作业 统一参考资料

试卷代号:1258 房屋建筑混凝土结构设计 参考试题 一、单项选择题(每小题2分,共计40分) 1.( )是将框架结构中的部分跨间布置剪力墙或把剪力墙结构的部分剪力墙抽掉改为框架承重。 A.梁板结构体系 B.框…

评价机器学习模型的指标

为了衡量一个机器学习模型的好坏,需要给定一个测试集,用模型对测试集中的每一个样本进行预测,并根据预测结果计算评价分数。 对于分类问题,常见的评价标准有准确率、精确率、召回率和F值等。给定测试集 𝒯 {(&#x1…

一款电压检测LVD

一、基本概述 The TX61C series devices are a set of three terminal low power voltage detectors implemented in CMOS technology. Each voltage detector in the series detects a particular fixed voltage ranging from 0.9V to 5.0V. The voltage detectors consist…

git缓存区、本地仓库、远程仓库的同步问题(初始化库无法pull和push)

git新建库与本地库同步 gitee使用教程,git的下载与安装接不在叙述了。 新建远程仓库 新建远程仓库必须要使用仓库提供的api,也就是仓库门户网站,例如gitee,github,gitlab等。在上图中使用gitee网址中新建了一个test仓…

回归预测 | MATLAB实现NGO-SCN北方苍鹰算法优化随机配置网络的数据回归预测 (多指标,多图)

回归预测 | MATLAB实现NGO-SCN北方苍鹰算法优化随机配置网络的数据回归预测 (多指标,多图) 目录 回归预测 | MATLAB实现NGO-SCN北方苍鹰算法优化随机配置网络的数据回归预测 (多指标,多图)效果一览基本介绍…

HarmonyOS(十五)——状态管理之@Prop装饰器(父子单向同步)

上一篇文章我们认识了状态管理的State装饰器(组件内状态),接下来我们学习另外一个状态管理装饰器Prop装饰器。 Prop装饰的变量可以和父组件建立单向的同步关系。Prop装饰的变量是可变的,但是变化不会同步回其父组件。 说明&#…

10分钟微调专属于自己的大模型

本文主要介绍使用魔搭社区轻量级训练推理工具SWIFT,进行大模型自我认知微调,帮助初阶炼丹师快速微调出专属于自己的大模型。 SWIFT(Scalable lightWeight Infrastructure for Fine-Tuning)是魔搭ModelScope开源社区推出的一套完整…

泰坦陨落2找不到msvcr120文件的修复方法,分享多种解决方法

在玩泰坦陨落2这款游戏时,有些玩家可能会遇到找不到msvcr120.dll文件的问题。这个问题可能是由于游戏缺少必要的运行库导致的。下面我将分享一些解决这个问题的方法,希望对大家有所帮助。 一、问题分析 msvcr120.dll是Microsoft Visual C Redistributab…

MATLAB - 使用 MPC Designer 线性化 Simulink 模型

系列文章目录 前言 本主题介绍如何使用 MPC Designer 对 Simulink 模型进行线性化。为此,请从包含 MPC 控制器块的 Simulink 模型打开该应用程序。本例中使用 CSTR_ClosedLoop 模型。 open_system(CSTR_ClosedLoop) 在模型窗口中,双击 MPC 控制器模块。…

Vue中英文翻译小结

背景:时局艰难,后端开发被强制写了vue,这不有个需求是中英文翻译,特此记录下,该怎么个翻译法子。 先引入全局的路由国际化文件,zh.js 和 en.js 1.关于插值表达Button里面 {{ $t(reinsop.common.back) }} …

LazyIDA源码阅读

LazyIDA是一款IDA插件,项目地址GitHub - L4ys/LazyIDA: Make your IDA Lazy! 外部引用 from __future__ import division from __future__ import print_function from struct import unpack import idaapi import idautils import idcfrom PyQt5.Qt import QAppli…

vue中的事件修饰符、表单双向数据绑定和计算属性

目录 一、事件修饰符 二、表单双向数据绑定 模拟双向数据绑定(双向数据绑定底层原理) 三、计算属性 计算属性和methods方法区别? 计算属性和watch区别? 一、事件修饰符 stop 阻止事件冒泡 prevent 阻止事件默认行为 ca…

Linux线程——互斥锁

概念 互斥量(mutex)从本质上来说是一把锁,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量上的锁。对互斥量进行加锁后,任何其他试图再次对互斥量加锁的线程将会被阻塞直到当前线程释放该互斥锁。 如果释放…

【HCIP学习记录】OSPF之DD报文

1.OSPF报文格式 24字节 字段长度含义Version1字节版本,OSPF的版本号。对于OSPFv2来说,其值为2。Type1字节类型,OSPF报文的类型,有下面几种类型: 1:Hello报文;● 2:DD报文&#xff1…

美国联邦机动车安全标准-FMVSS

FMVSS标准介绍: FMVSS是美国《联邦机动车安全标准》,由美国运输部下属的国家公路交通安全管理局(简称NHTSA)具体负责制定并实施。是美国联邦政府针对机动车制定的安全标准,旨在提高机动车的安全性能,减少交通事故中的人员伤亡。F…

ubuntu无 root 权限安装 screen

网上的方法主要是如下图的方法,源码安装,但是我一直 make install失败显示没有权限 然后选择放弃,然后随便试了一下方法 2,成功 方法 1 方法 2 pip3 install screen结果:

生物识别应用指纹的算法是什么样的?有什么性能?

方案特点 • 采用金融级安全芯片 ACH512 的指纹模组,指纹和密码安全存储,云端数据安全传输 • 采用高性能指纹专用安全MCU芯片ACM32FP4,支持小点阵图像算法处理 • 支持80*64、88*112、96*96、160*160、192*192等像素传感器 • 已适配传…

Ubuntu系统使用Nginx搭建RTMP服务器

环境: 推流端 rockpi s 主控rk3308 运行ubuntu系统 服务端 ubuntu 播放器 VLC播放器 服务端安装依赖: apt-get install build-essential libpcre3 libpcre3-dev libssl-dev创建nginx编译目录: mkdir my_nginx_rtmp cd my_nginx_rtmp/下载 …