【迁移学习论文四】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)进行域分类。
  • 多个域分类器: 对每个类别都有一个独立的领域分类器,以便更好地适应不同类别在不同域中的分布情况。

总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如果大量利用工具类导出的常量,可以通过利用静态导入机制,避免用类名来修饰常量名。

通过使用静态导入机制,可以避免在代码中使用类名修饰常量名,从而提高代码的可读性。静态导入机制允许直接访问导入的类的静态成员(包括常量)而无需使用类名限定符。 以下是一个示例,演示如何利用静态导入来使用工具类…

【C语言】数据结构——链式二叉树实例探究

💗个人主页💗 ⭐个人专栏——数据结构学习⭐ 💫点击关注🤩一起学习C语言💯💫 导读: 我们在前面学习了单链表,顺序表,栈和队列,小堆。 今天我们来学习链式二叉…

深入探索Qt 6.3:全面了解新特性及应用技巧

学习目标: 帮助读者深入了解Qt 6.3的新特性,并提供相关应用技巧,以帮助他们更好地应用Qt 6.3进行开发 学习内容: Qt 6.3的新特性概述:介绍Qt 6.3相对于之前版本的改进和新增的功能,如模块的增减、性能优化…

2023 亚马逊云科技 re:lnvent 大会探秘: Amazon Connect 全渠道云联络中心

2023 亚马逊云科技 re:lnvent 大会探秘: Amazon Connect 全渠道云联络中心 前言一. Amazon Connect 介绍 🗺️二. Amazon Connect 使用教程 🗺️1.我们打开URl链接找到对应服务2.输入Amazon Connect选中第一个点击进入即可;3.在进入之后我们就…

html中RGB和RGBA颜色表示法

文章目录 RGB什么是RGBRGB颜色模式的取值范围RGB常用颜色对照表 RGBA什么是RGBARGBA颜色模式的取值范围 总结 RGB 什么是RGB RGB是一种颜色空间,其中R代表红色(Red)、G代表绿色(Green)、B代表蓝色(Blue&a…

C++(继承)

目录 前言: 正文: 1.继承的概念及定义 1.1继承的概念 1.2继承的本质 2.继承的定义 2.1继承格式 2.2继承关系和访问限定符 3 继承中的作用域 3.1隐藏 4 基类和派生类对象赋值转换 4.1切片 5 派生类中的默认成员函数 5.1隐式调用 5.2显示调用…

JDK17 SpringBoot3 整合常见依赖

JDK版本:17 SpringBoot 整合Mybatis Plus 、Redis等 依赖文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xs…

【MySQL】数据库和表的操作

数据库和表的操作 一、数据库的操作1. 创建数据库2. 字符集和校验规则&#xff08;1&#xff09;查看系统默认字符集以及校验规则&#xff08;2&#xff09;查看数据库支持的字符集&#xff08;3&#xff09;查看数据库支持的字符集校验规则&#xff08;4&#xff09;校验规则对…

代码随想录算法训练营 | day56 动态规划 583.两个字符串的删除操作,72.编辑距离

刷题 583.两个字符串的删除操作 题目链接 | 文章讲解 | 视频讲解 题目&#xff1a;给定两个单词 word1 和 word2&#xff0c;找到使得 word1 和 word2 相同所需的最小步数&#xff0c;每步可以删除任意一个字符串中的一个字符。 示例&#xff1a; 输入: "sea", &…

一键修复找不到msvcp140.dll无法继续执行代码的办法,有效修复

电脑出现“找不到msvcp140.dll无法继续执行代码”是什么情况&#xff1f;如果系统中没有这个文件或文件发生损坏&#xff0c;那么在启动某些应用程序或游戏时&#xff0c;可能会遇到错误消息&#xff0c;如“程序无法启动因为msvcp140.dll丢失在您的计算机上”或“找不到msvcp1…

Java方法重写及@Override注解(学习推荐版)

定义 所有类都继承了object类&#xff0c;例如重写object的toString()方法 规则 就近原则 重写的规则总结&#xff1a; ①子类重写的方法的方法名和形参列表与父类被重写的方法的方法名和形参列表相同。 ②子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符 …

Java接收并解析HL7协议数据

一、前言 HL7协议相信医疗行业的IT人员都不陌生&#xff0c;笔者由于接触时间比较短&#xff0c;乍一听“协议”还是比较懵&#xff0c;不自觉就把它和“HTTP”、"SOAP”之类的网络协议挂上关联&#xff0c;可事实上这个HL7只是一种数据格式&#xff0c;传输方式也可以使用…

【基础知识】大数据组件YARN简述

YARN是一个分布式的资源管理系统。 YARN是Hadoop系统的核心组件&#xff0c;主要功能包括负责在Hadoop集群中的资源管理&#xff0c;负责对作业进行调度运行以及监控。 ResourceManager 负责集群的资源管理与调度&#xff0c;为运行在YARN上的各种类型作业分配资源。 非HA集…

FreeRTOS-07任务切换 对vPortSVCHandler和xPortPendSVHandler的理解

任务的基本单位是TCB块&#xff0c;相当于任务的身份证&#xff0c;其基本成员包括栈指针&#xff0c;栈所在地址&#xff0c;链表节点地址&#xff0c;如下&#xff1a; FreeRTOS.h typedef struct tskTaskControlBlock {volatile StackType_t *pxTopOfStack; /* 栈顶…

前缀和数组、差分数组、树状数组在Leetcode中的应用

文章目录 前缀和数组、差分数组、树状数组知识简单回顾Leetcode 1109. 航班预订统计Leetcode 307. 区域和检索-数组可修改LeetCode 面试题10.10. 数字流的秩LeetCode 1310. 子数组异或查询LeetCode 1409. 查询带键的排列 前缀和数组、差分数组、树状数组知识简单回顾 之前的文…

揭开`this`的神秘面纱:探索 JavaScript 中的上下文密钥(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

c语言编写http服务器(Linux下运行)

参考文章&#xff1a;https://blog.csdn.net/baixingyubxy/article/details/125964986?spm1001.2014.3001.5506 上面是详细讲解&#xff0c;我这篇是总结了他的代码&#xff0c;因为他没给整体代码 所有代码&#xff1a; #include <stdio.h> #include <stdlib.h&g…

Python Django Jet:优化 Django 后台管理

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 大家好&#xff0c;今天分享 Python 中的 Django Jet 库。 Github项目地址&#xff1a;https://github.com/geex-arts/django-jet Django Jet 是一个强大的 Django 后台管理界面扩展&#xff0c;旨在提供更现代…

人工智能125个常用名词解释

1 什么是人工智能 人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;是指计算机系统通过模拟人类的思维和行为来完成特定任务的技术和方法。人工智能的研究涉及多个学科&#xff0c;包括计算机科学、数学、心理学、哲学等领域。 人工智能可以被分为…

SVM —— 理论推导

SVM 支持向量线性可分最大间隔超平面最大间隔超平面的推导支持向量分类间隔的推导最优化问题 对偶问题拉格朗日乘子法强对偶性 SVM 优化软间隔解决问题优化目标及求解 核函数线性不可分核函数的作用常见核函数 SVM 算法优缺点 支持向量机&#xff08;Support Vector Machine&am…