当前位置: 首页 > news >正文

【深度学习:Domain Adversarial Neural Networks (DANN) 】领域对抗神经网络简介

【深度学习:Domain Adversarial Neural Networks】领域对抗神经网络简介

    • 前言
    • 领域对抗神经网络
      • DANN 模型架构
      • DANN 训练流程
      • DANN示例
    • GPT示例

前言

领域适应(DA)指的是当不同数据集的输入分布发生变化(这种变化通常被称为共变量变化或数据变化)时,加强模型训练的一种过程。图 1 展示了一些简单的例子:(a) 显示了一个变量的均值发生了较大偏移;(b) 显示了一个变量的均值发生了较小偏移;© 显示了一个变量的均值发生了较小偏移,而方差发生了较大偏移。

在这里插入图片描述

图 1.数据移位示例

发展议程有两个相互竞争的目标:

  • 判别能力 --在特定领域内对来自不同类别的数据进行判别的能力
  • 领域不变性 - 衡量跨领域数据类别之间相似性的能力

例如,在一个分类模型中,我们期望模型能够区分不同类别之间的差异——因此需要保持其判别能力。与此同时,如果数据发生变化,我们希望提高分类器的领域不变性,使其在接受来自不同领域的输入时表现良好。(关于严谨的理论处理,我们推荐 Ben-David 等人撰写的 “A theory of learning from different domains”)。

领域自适应的一个使用案例涉及 MNIST 数据集,该数据集由手写数字图像组成。该数据集在文献中无处不在,经常被用作测试模型的基准。还有一个名为 MNIST-M 的数据集,其中添加了不同的背景和数字颜色,如图 2 所示。

在这里插入图片描述

图 2.MNIST 和 MNIST-M 示例

虽然这两个数据集有明显的相似性,但MNIST-M数据集的变化使得输入特征的分布与原始MNIST数据集不同。在这种情况下,即使没有来自 MNIST-M 的标签,也可以使用 DA 来帮助模型在 MNIST 和 MNIST-M 上都表现良好。Ganin 和 Lempitsky 的 "反向传播的无监督领域适应 "一文中描述了这种用例。

另一个有用的 DA 例子是处理生物信号(尤其是神经信号)如何随时间或对象而变化的问题。假设我们想开发一款脑机接口应用,需要对人类受试者移动特定手臂或腿部以控制外部假肢装置的想法进行分类。利用源受试者的脑电信号(图 3),我们通常会开发出一个分类器。但是,将该分类器应用于我们的 "目标对象 "可能会导致性能不佳。领域适配可以让我们在目标受试者身上获得更高的性能,而无需从每个受试者身上收集数据。

在这里插入图片描述

图 3. 使用 DA 来解决神经信号如何随时间变化的问题

实现 DA 最常见的方法之一称为样本重新加权。使用这种方法时,我们通过以下步骤开发域分类器:

  1. 将所有源域样本标记为“0”,将所有目标域样本标记为“1”。 训练一个可以返回预测概率
  2. pi(例如逻辑回归或随机森林)的二元分类器,以区分源数据和目标数据。
  3. 当在源域上进行模型拟合时,使用所得概率来获取源域样本的样本权重,使用:

在这里插入图片描述
这会导致看起来最像目标样本的源样本获得更高的权重。虽然我们普遍认为这种方法是积极的,但它也有一些缺点。挑战之一是确定驱动域分类器的准确度。如果太准确,则没有用,因为目标区域和域区域之间不会重叠。

领域对抗神经网络

如果我们有办法同时使用 DA 和学习标签分类怎么办?具有此功能的一种方法是域对抗神经网络(DANN)。它使用具有类标签的源数据和未标记的目标数据。目标是在对抗性训练过程中使用源数据和目标数据来预测目标数据。

在传统的机器学习中,我们通常假设训练数据和测试数据具有相同的分布。但在实际应用中,这种假设往往不成立。例如,一个在晴天条件下训练的图像识别模型,在雨天条件下可能表现不佳。DANN 正是为了解决这种源域和目标域数据分布不一致的问题。

DANN 的核心思想是通过引入一个额外的域分类器(Domain Classifier),使得模型在学习特征表示时同时减少源域和目标域间的分布差异。这个过程可以看作是一种对抗性训练:主网络试图学习对任务有用且域不可分的特征,而域分类器则试图区分这些特征来自哪个域。

DANN 模型架构

DANN 通常包含三个主要部分:

  • 标签预测器(蓝色)(Feature Extractor): 从输入数据中提取有用的特征。
  • 域分类器(粉色)(Task Classifier): 基于特征提取器提取的特征,进行主任务(如图像分类、语音识别等)的学习。
  • 特征提取器(绿色)(Domain Classifier): 尝试区分特征是来自源域还是目标域。征提取器的目标是学习对两个域都有用的特征,而域分类器则努力区分这些特征的来源。这种设置创建了一种对抗关系,促使特征提取器生成越来越难以区分域的特征。

在这里插入图片描述

图 4. 域对抗神经网络架构

DANN 训练流程

DANN训练流程如图4所示:

  • 来自源或目标的输入特征被馈送到特征提取器。
  • 生成的特征被馈送到:
    • 如果输入来自源域,则标记预测器或域分类器(因为只有该数据具有标签)。
    • 域分类器,如果输入来自目标域(因为该数据上没有标签)。
  • 标签预测器和域分类器经过优化,可使用类熵等损失函数来最小化与其各自分类问题相关的误差。
  • 针对特定于 DANN 的特征提取器执行“特殊”优化(如下所述)。

优化特征提取器可以被看作是在生成对域分类不敏感的特征与对标签预测有用的特征之间寻找最佳平衡点。特征提取器的参数经过优化,以最小化标签预测器的损失并最大化域分类器的损失(涉及梯度反转层的使用)。

在生产中,我们将来自目标域的输入提供给特征提取器,特征提取器创建输入到标签预测器的特征以进行标签预测。没有使用域分类器,因此我们在部署模型时可以忽略图4中的粉色部分。

在训练过程中,DANN 采用了一种类似于 GAN(生成对抗网络)的策略。特征提取器和任务分类器被训练以最大化主任务的性能,而域分类器则被训练以区分不同域的特征。通过这种方式,模型能够学习到既对任务有用又对域具有泛化能力的特征。

DANN示例

让我们看几个例子。第一个示例如图 5 所示,其中包含由 scikit-learn Python 包中的 make_blobs 函数生成的合成数据。左边的数据是源数据,右边的数据是目标数据。 0 级为红色,1 级为绿色。

观察数据如何在源域和目标域之间转移。在每个域内,类可以线性分离,但这种转变使该模型的泛化变得非常复杂。

在这里插入图片描述

图 5. 我们的玩具问题的源数据和目标数据

请注意,我们仅使用源域中的标签进行训练,并且仅使用目标域中的标签来计算性能指标。由于训练过程中未使用目标域标签,因此它们在图 6 中呈灰色显示。

在这里插入图片描述

图 6. 我们的玩具问题的标签使用

传统的神经网络在源域上进行训练,然后在目标域上进行测试,其准确率达到 55%。但是,如果我们包含域分类器并使用 DANN 训练过程,则最终的目标域准确率将高达 95%,这证明了 DANN 过程的价值。

一个更真实的例子来自研究生院的自然语言处理 (NLP) 课程项目。其目标是确定来自 Android 论坛的问题对是否相似。不过,带有标记对的训练数据均来自 AskUbuntu 论坛。这个问题非常适合 DANN 架构和训练过程。

当不使用 DANN 训练过程时(即仅使用 AskUbuntu 论坛数据进行训练,然后在 Android 数据上测试模型),曲线下面积 (AUC) 为 0.61。当使用DANN框架及其训练过程时(训练中使用AskUbuntu数据输入和标签以及Android数据输入;不使用Android标签),AUC增加到0.69。当 Android 论坛数据中的少量标签被添加到 DANN 训练过程中时,AUC 增加到 0.76,这是一个很大的改进。

在现实世界中,我们可能没有用于计算指标的目标域的标签。由于我们不想在不计算样本外性能指标的情况下将模型投入生产,因此可以手动标记目标域中的少量数据以用于评估。

我们相信这样的方法可以集成到 ImageNet 或 ULMFiT 等训练模型中,这些模型经常用作预训练模型。使用DANN训练过程可能会生成更多具有领域不变性的模型,从而更好地适应特定的应用程序。

最近,DANN 架构的改进已经发布,我们建议感兴趣的读者探索生成对抗网络 (GAN) 的新发展。尽管如此,即使在最新的工作中,这里描述的对抗性训练过程仍然是 DA 的关键组成部分。

GPT示例

假设我们有一个图像识别任务,源域是室内照片,目标域是室外照片。在这种情况下,DANN 会试图学习在这两个域都有效的特征表示,同时减少由于场景差异(如光照、背景等)引起的性能下降。

为了更好地理解这个概念,我们可以生成一张示意图,展示 DANN 在处理室内和室外图像时的特征提取和分类过程。

在这里插入图片描述
这张图展示了Domain Adversarial Neural Network(DANN)在图像识别任务中的工作原理。您可以看到,图中描绘了两种不同的域:室内和室外场景。特征提取器位于中心,从室内和室外图像中提取特征。这些特征随后被分为两个不同的分类器:任务分类器和域分类器。任务分类器专注于识别图像中的对象,而域分类器则试图区分图像是属于室内还是室外场景。这种结构有助于模型在不同的环境中都能有效地识别和分类图像。

相关文章:

【深度学习:Domain Adversarial Neural Networks (DANN) 】领域对抗神经网络简介

【深度学习:Domain Adversarial Neural Networks】领域对抗神经网络简介 前言领域对抗神经网络DANN 模型架构DANN 训练流程DANN示例 GPT示例 前言 领域适应(DA)指的是当不同数据集的输入分布发生变化(这种变化通常被称为共变量变…...

STM32 ESP8266 物联网智能温室大棚 (附源码 PCB 原理图 设计文档)

资料下载: https://download.csdn.net/download/vvoennvv/88680924 一、概述 本系统以STM32F103C8T6单片机为主控芯片,采用相关传感器构建系统硬件电路。其中使用DHT11温湿度传感器对温度和湿度的采集,MQ-7一氧化碳传感器检测CO浓度,GP2Y101…...

【DevOps-08-1】Harbor镜像仓库介绍和安装

一、简要描述 Harbor介绍Harbor安装 下载离线安装包把下载的离线安装包上传到服务器,并且解压修改Harbor配置文件启动Harbor登录Harbor管理后台Harbor管理后台首页二、Harbor介绍 前面在部署项目时,我们主要采用Jenkins推送jar包到指定服务器,再通过脚本命令让目标服务器对当…...

第八节 vue3新特性

系列文章目录 目录 系列文章目录 前言 操作方法 总结 前言 vue3与vue2的区别及特性。 具体信息 页面不用跟标签包裹cs...

Web前端-jQuery

文章目录 jQuery1.1 jQuery 介绍1.1.1 JavaScript 库1.1.2 jQuery的概念1.1.3 jQuery的优点 1.2 jQuery 的基本使用1.2.1 jQuery 的下载1.2.2 jQuery快速入门1.2.3 jQuery入口函数1.2.4 jQuery中的顶级对象$1.2.5 jQuery 对象和 DOM 对象1.2.6. jQuery 对象和 DOM 对象转换 1.3…...

Leetcod面试经典150题刷题记录 —— 二叉搜索树篇

Leetcod面试经典150题刷题记录-系列Leetcod面试经典150题刷题记录——数组 / 字符串篇Leetcod面试经典150题刷题记录 —— 双指针篇Leetcod面试经典150题刷题记录 —— 矩阵篇Leetcod面试经典150题刷题记录 —— 滑动窗口篇Leetcod面试经典150题刷题记录 —— 哈希表篇Leetcod面…...

【大数据进阶第三阶段之ClickHouse学习笔记】ClickHouse的简介和使用

1、ClickHouse简介 ClickHouse是一种列式数据库管理系统(DBMS),专门用于高性能数据分析和数据仓库应用。它是一个开源的数据库系统,最初由俄罗斯搜索引擎公司Yandex开发,用于满足大规模数据分析和报告的需求。 开源地址…...

Linux下Redis6下载、安装和配置教程-2024年1月5日

Linux下Redis6下载、安装和配置教程-2024年1月5日 一、下载二、安装三、启动四、设置开机自启五、Redis的客户端1.Redis命令行客户端2.windows上的图形化桌面客户端 一、下载 1.Redis的官方下载:https://redis.io/download/ 2.网盘下载: 链接&#xff…...

Java后端开发——Ajax、jQuery和JSON

Java后端开发——Ajax、jQuery和JSON 概述 Ajax全称是Asynchronous Javascript and XML,即异步的JavaScript和 XML。Ajax是一种Web应用技术,该技术是在JavaScript、DOM、服务器配合下,实现浏览器向服务器发送异步请求。 Ajax异步请求方式不…...

ssm基于Vue的戏剧推广网站论文

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统戏剧推广信息管理难度大,容错率低&#xff0c…...

安卓adb

目录 如何开启 ADB 注意事项 如何使用 ADB ADB 能干什么 ADB(Android Debug Bridge)是一个多功能命令工具,它可以允许你与 Android 设备进行通信。它提供了多种设备权限,包括安装和调试应用,以及访问设备上未通过…...

【数位dp】【动态规划】C++算法:233.数字 1 的个数

作者推荐 【动态规划】C算法312 戳气球 本文涉及的基础知识点 动态规划 数位dp LeetCode:233数字 1 的个数 给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。 示例 1: 输入:n 13 输出:6 示例 2&#xff…...

docker (portainer 安装nginx)

汉化版步骤可以参考:写文章-CSDN创作中心https://mp.csdn.net/mp_blog/creation/editor/135258056 一、创建容器 二、配置端口,以及容器卷挂载 挂载目录配置:(下方截图的目录如下,docker 改为 mydocker,用docker作为根…...

10个linux文件管理命令

1. ls – 列出目录内容 ls可能是每个Linux用户在其终端中键入的第一个命令。它允许您列出您想要的目录的内容(默认情况下是当前目录),包括文件和其他嵌套目录。 它有很多选择,所以最好使用 --help 来获得一些帮助。此标志返回所…...

实战:使用docker容器化服务与文件挂载-2

接着上文,演示Elasticsearch 和 Kibana 的安装,并讲解文件挂载 Elasticsearch of Docker (Kibana) 1、Elasticsearch 安装 ElasticSearch 使用 Docker 安装:https://www.yuque.com/zhangshuaiyin/guli-mall/dwrp5b 1.…...

联合union

//————联合&#xff1a;union 1.联合的定义 联合也是一种特殊的自定义类型 #include<stdio.h> union Un//Un为联合标签 { int a; char c; }; struct St { int a; int b; }; int main() { union Un u; printf("%d\n",sizeof(u));//…...

如何在 Umi /Umi 4.0 中配置自动删除 console.log 语句?

背景&#xff0c;开发时需要console.log 日志&#xff0c;再生产、uat 、sit不想看到日志打印信息 方案1、代码规范eslint校验"no-console": true, //console.log 方案2、bable 插件 babel-plugin-transform-remove-console 配置在.umirx.ts/js中 export default…...

(生物信息学)R语言绘图初-中-高级——3-10分文章必备——饼图(初级)

生物信息学文章的发表要求除了思路和热点以外,图片绘制是否精美也是十分重要的,本专栏为(生物信息学)R语言绘图初-中-高级——3-10分文章必备,主要通过大量文献,总结3-10分文章中高频出现的各种图片,并给大家提供图片复现的R语言代码,及图片识读。 本专栏将向大家介绍…...

AI ppt生成器 Tome

介绍 一款 AI 驱动的 PPT/幻灯片内容辅助生成工具。只需要输入一个标题或者一段特定的描述&#xff0c;AI 便会自动生成一套包括标题、大纲、内容、配图的完整 PPT。 Tome平台只需要用户输入一句话&#xff0c;就可以自动生成完整的PPT&#xff0c;包括文字和图片。功能非常强…...

Linux与Windows下追踪网络路由:traceroute、tracepath与tracert命令详解

简介 在进行网络诊断或排查问题时&#xff0c;了解数据包从源主机到目标主机之间的具体传输路径至关重要。Linux系统提供了traceroute和tracepath工具来实时显示链路路径信息&#xff0c;而Windows则使用了tracert命令实现相同的功能。本文将详细介绍这三个命令的用法及其在不…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

9-Oracle 23 ai Vector Search 特性 知识准备

很多小伙伴是不是参加了 免费认证课程&#xff08;限时至2025/5/15&#xff09; Oracle AI Vector Search 1Z0-184-25考试&#xff0c;都顺利拿到certified了没。 各行各业的AI 大模型的到来&#xff0c;传统的数据库中的SQL还能不能打&#xff0c;结构化和非结构的话数据如何和…...

TJCTF 2025

还以为是天津的。这个比较容易&#xff0c;虽然绕了点弯&#xff0c;可还是把CP AK了&#xff0c;不过我会的别人也会&#xff0c;还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...

【深尚想】TPS54618CQRTERQ1汽车级同步降压转换器电源芯片全面解析

1. 元器件定义与技术特点 TPS54618CQRTERQ1 是德州仪器&#xff08;TI&#xff09;推出的一款 汽车级同步降压转换器&#xff08;DC-DC开关稳压器&#xff09;&#xff0c;属于高性能电源管理芯片。核心特性包括&#xff1a; 输入电压范围&#xff1a;2.95V–6V&#xff0c;输…...

【1】跨越技术栈鸿沟:字节跳动开源TRAE AI编程IDE的实战体验

2024年初&#xff0c;人工智能编程工具领域发生了一次静默的变革。当字节跳动宣布退出其TRAE项目&#xff08;一款融合大型语言模型能力的云端AI编程IDE&#xff09;时&#xff0c;技术社区曾短暂叹息。然而这一退场并非终点——通过开源社区的接力&#xff0c;TRAE在WayToAGI等…...