【深度学习: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)在图像识别任务中的工作原理。您可以看到,图中描绘了两种不同的域:室内和室外场景。特征提取器位于中心,从室内和室外图像中提取特征。这些特征随后被分为两个不同的分类器:任务分类器和域分类器。任务分类器专注于识别图像中的对象,而域分类器则试图区分图像是属于室内还是室外场景。这种结构有助于模型在不同的环境中都能有效地识别和分类图像。

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

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

相关文章

RT-Thread 内核基础(三)

程序内存分布 一般MCU包含的存储空间有:片内Flash与片内RAM,RAM相当于内存,Flash相当于硬盘。 编译器会将一个程序分类为好几个部分,分别存储在MCU不同的存储区。 Keil工程在编译完之后,会有相应的程序所占用的空间提…

图灵日记之java奇妙历险记--抽象类和接口

目录 抽象类概念抽象类语法 接口概念规则使用特性实现多个接口接口的继承接口使用实例Clonable接口和深拷贝抽象类和接口的区别 Object类 抽象类 概念 在面向对象的概念中,所有对象都是通过类来描述的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够…

SD-WAN:提升连锁零售企业异地组网稳定性

连锁零售企业往往拥有众多分布在不同地区的分支机构和零售店,为保证企业高效运转,各地区之间的网络连接必须稳定可靠。但基于各地网络基础设施的不同和网络延迟、带宽等限制,异地组网往往并不稳定。在这背景下,SD-WAN成为连锁零售…

UV贴图和展开初学者指南

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 介绍 这正是本文的主题——UV贴图——登上舞台的时候。大多数 3D 建…

在win10和Linux上配置SSH 无密码登录

文章目录 一、用途二、在本地机器上使用ssh-keygen产生公钥私钥对1)在Linux (或macOS) 上产生SSH公私钥的方法2)在win10上产生SSH公私钥的方法a)检查windows 本地是否安装有sshb)在本地生成SSH密钥对(公钥和私钥&#…

基于Java SSM框架实现时间管理系统项目【项目源码+论文说明】

基于java的SSM框架实现时间管理系统演示 摘要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于时间管理系统当然也不能排除在外,随着网络技术的不断成熟,带动了时间管理…

SQL Server从0到1——提权

xp_cmdshell提权 xp_cmdshell在前面写webshell已经讲解过了,在这里不在重复 sp_oacreate提权 启用: EXEC sp_configure show advanced options, 1; RECONFIGURE WITH OVERRIDE; EXEC sp_configure Ole Automation Procedures, 1; RECONFIGURE WITH OV…

MySQL运维实战(3.1) MySQL官方客户端使用介绍

作者:俊达 引言 MySQL是MySQL安装包默认的客户端,该客户端程序通常位于二进制安装包的bin目录中,或者通过rpm安装包安装mysql-community-client,是数据库管理系统的重要组成部分。MySQL客户端不仅仅是一个简单的软件工具&#x…

程序员必知!中介者模式的实战应用与案例分析

中介者模式通过引入中介类降低对象间耦合度,在电商平台中,卖家、买家、物流公司和支付平台原本需复杂交互,在引入“交易中介”类后,各角色只需与中介交互,由中介协调各方操作,从而简化了交互流程&#xff0…

APP加固技术及其应用

文章目录 引言 APP加固的概念 APP加固的方案 APP加固在实际开发中的应用 总结 引言 在移动应用开发过程中,APP加固技术起到了非常重要的作用。APP加固是将apk文件进行混淆加密,以防止别人反编译获取我们的源码和资源文件。目前市场上主流的APP加固…

手写一个加盐加密算法(java实现)

目录 前言 什么是MD5?? 加盐算法 那别的人会不会跟你得到相同的UUID? 如何使用盐加密? 代码实现 前言 对于我们常见的登录的时候需要用到的组件,加密是一个必不可少的东西,如果我们往数据库存放用户…

零售EDI:Petco EDI对接指南

Petco 始于1965年,是一家美国宠物零售商,提供各种宠物产品和服务以及某些类型的活体小动物。起初Petco只是一家邮购兽医用品公司,后发展为一家成熟的宠物食品和供应链的公司。Petco与其供应商之间是如何传输业务数据的呢? 通过EDI…

【docker笔记】DockerFile

DockerFile Docker镜像结构的分层 镜像不是一个单一的文件,而是有多层构成。 容器其实是在镜像的最上面加了一层读写层,在运行容器里做的任何文件改动,都会写到这个读写层。 如果删除了容器,也就是删除了其最上面的读写层&…

科技感十足界面模板

科技感界面 在强调简洁的科技类产品相关设计中,背景多数分为:颜色或写实图片两种。 颜色很好理解,大多以深色底为主。强调一种神秘感和沉稳感,同时可以和浅色的文字内容形成很好的对比。 而图片背景的使用,就要求其…

构建高效PythonWeb:GraphQL+Sanic

1.1 简介:在当今快速发展的技术时代,Web应用的性能和灵活性变得越来越重要。在众多技术中,GraphQL和Sanic以其独特的优势脱颖而出。GraphQL,作为一个强大的数据查询语言,为前端和后端之间的通信提供了极大的灵活性。而…

【现代密码学】笔记2 -- 完善保密性《introduction to modern cryphtography》现代密码学原理与协议

【现代密码学】笔记2--完善保密性《introduction to modern cryphtography》 写在最前面2 完善保密性的介绍2.1 定义和基本属性加密方案的组成密钥产生算法 (Gen)加密算法 (Enc)解密算法 (Dec)概率分布独立性 完美保密加密3. 回顾加密词法4. 完美保密(**Perfect Sec…

docker打包介绍

最近在做一个开源项目,遇到开发者问各种问题,发现都是系统和软件版本的差异引起的。于是了解了一下docker的使用,发现docker真是个好东东,基本解决了各种版本差异的问题,真正做到了一键部署使用。 先熟悉一下docker里…

阿里云2核4G服务器ecs.e-c1m2.large价格和性能测评

2024年阿里云2核4G服务器优惠价格30元3个月,活动 https://t.aliyun.com/U/bLynLC 配置为云服务器ECS经济型e实例ecs.e-c1m2.large,3M固定带宽,系统盘为40GB ESSD Entry,活动打开如下图: 阿里云2核4G服务器优惠价格30元…

Python武器库开发-武器库篇之C段扫描器开发(四十三)

Python武器库开发-武器库篇之C段扫描器开发(四十三) 在我们进行渗透过程中的信息收集的步骤时,收集资产目标的C段也是非常重要的一部分。 C段是指互联网中的一类IP地址。IP地址是互联网上每台设备的唯一标识符。IP地址由一系列数字组成,通常以点分十进…

【AI视野·今日Sound 声学论文速览 第四十一期】Thu, 4 Jan 2024

AI视野今日CS.Sound 声学论文速览 Thu, 4 Jan 2024 Totally 8 papers 👉上期速览✈更多精彩请移步主页 Daily Sound Papers Multichannel blind speech source separation with a disjoint constraint source model Authors Jianyu Wang, Shanzheng Guan多通道卷积…