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

论文笔记:交替单模态适应的多模态表征学习

整理了CVPR2024 Multimodal Representation Learning by Alternating Unimodal Adaptation)论文的阅读笔记

  • 背景
  • MLA框架
  • 实验
    • Q1 与之前的方法相比,MLA能否克服模态懒惰并提高多模态学习性能?
    • Q2 MLA在面临模式缺失的挑战时表现如何?
    • Q3 所有模块是否可以有效提高性能?
    • Q4 MLA如何改变多模态学习中的模态差距?

背景

  多模态学习集成了来自不同模态的数据,在人工智能中起着关键作用。但是现有的多模态学习方法存在一个普遍的问题,一些模态比其他模态更占优势,模型将针对这些主导模态进行优化,并倾向于忽略其他模态,从而导致次优性能,这被称之为模态懒惰问题。
  图一是模态懒惰问题的概述,虽然多模态联合训练为跨模态交互学习提供了机会,但模型容易饱和,忽略了难以学习但对泛化来说很重要的单模态特征。那么如何解决这种模态懒惰问题,进一步释放多模态学习的潜力,就成为了一个必须要思考的问题。在这里插入图片描述

MLA框架

  为了解决这一挑战,本文提出了一个多模态学习与交替单模态适应的方法,称为MLA。把多模态的传统联合训练方案重新构建到交替的单模态学习框架中,从而将模态之间的干扰最小化。
在这里插入图片描述

  具体地说,MLA中每个模态的预测函数包括一个模态特定的编码器和一个跨所有模态的共享头。在交替单模态学习中,根据每个模态的预测函数交替优化,以消除模态之间的干扰。同时,共享头部跨模态在不同模态之间不断优化,捕获跨模态信息。作者提出单模态交替学习的动机是认为信息较少的模态在与其他模态一起学习时优化不足,这是导致融合表现不佳的原因。
  在这个优化过程中,当遇到一个新的模态时,很容易丢失先前从其他模态学习到的信息,这被称为模态遗忘。为了解决这个问题,MLA为共享头部引入了梯度修改机制,以鼓励模态之间的梯度方向正交化。
  图一(b)是测试阶段,在学习了特定模态编码器和共享头部的权重之后,MLA通过一个测试时动态模态融合机制来整合多模态信息。衡量每个模态的重要性依赖于测量与该模态相关的预测中观察到的不确定性水平。这种机制的动机是这样一个假设:当一种模态在预测中表现出更高的不确定性时,它更容易产生不正确的预测,因此,MLA利用预测不确定性衡量每个模态重要性。熵 e m , r e_{m,r} em,r越高,表明预测的置信度越低,导致聚变过程中的重要权值越小。
在这里插入图片描述

实验

  在实验部分,作者提出了以下几个问题:Q1:与之前的方法相比,MLA能否克服模态懒惰并提高多模态学习性能?Q2: MLA在面临模式缺失的挑战时表现如何?Q3:所有模块是否可以有效提高性能?Q4:MLA如何改变多模态学习中的模态差距。

Q1 与之前的方法相比,MLA能否克服模态懒惰并提高多模态学习性能?

  本文利用一组具有不同任务的五个数据集来评估具有完整模式的学习性能:

  • CREMA-D[6]和Kinetic-Sound (KS)[3]属于音视频数据集的范畴。CREMA-D提供描述各种情绪的音频和视频记录,做情感分类任务。而KS将视频和音频数据结合起来用于对象和动作识别。
  • Food-101[39]和MVSA[25]都是图像-文本数据集。food -101包含超过10万种食物,图片附有相应的文字,进行食物分类任务。MVSA通过使用文本和图像数据,专注于多媒体帖子的情感分类。
  • IEMOCAP[5]是一个音频-图像文本数据集,在自然对话中捕获音频、视觉和文本数据中的情感。
    在这里插入图片描述

  从实验结果中,我们可以观察到。在众多数据集上,除了后期融合之外的方法,优模态和劣模态性能之间的性能差异非常显著。这说明大多数传统的融合方法都面临着模态惰性的挑战。后期融合通过在专门训练对每个模态的编码器在一定程度上减轻了模态惰性,但在集成来自所有模态的信息时,它无法提供令人满意的性能。这种限制是因为它无法有效地捕获跨模式信息。在所有场景中,MLA的表现始终优于所有其他方法。这证明了MLA通过充分利用每个模态的信息和捕获跨模态知识,有效地解决了模态懒惰问题,提高了多模态学习性能

Q2 MLA在面临模式缺失的挑战时表现如何?

  进一步评估缺少模态的数据集的性能,模态缺失被视为模态懒惰的极端情况。对IEMOCAP数据集中的训练和测试数据应用基于百分比的掩码,随机掩盖每个样本的每个模态。
在这里插入图片描述
  我们可以观察到:随着模态缺失率的增加,所有方法的性能都有所下降。这正是我们所期望的,因为与仅使用部分模态数据相比,使用所有模态数据往往会提高性能。MLA在所有缺失率上的表现始终优于其他基线,包括这些后期融合方法和专门为解决缺失模式(例如MMIN)而设计的方法。这些结果突出了MLA在解决模态懒惰挑战方面的有效性,即使在缺少模态学习的极端情况下也很强。

Q3 所有模块是否可以有效提高性能?

在这里插入图片描述
  图三展示了消融实验的结果,其中,HGM是梯度修正,DF是动态融合。通过梯度修正的方法更新共享头权重可以提高仅使用单一模态和多模态信息的性能。这种改善是因为减轻模态遗忘的影响可以更好地整合跨模态信息,有利于单模态和多模态的学习过程。
  使用测试时间动态融合机制可以显著促进多模态学习过程。因为测试时间动态融合考虑了模态预测的不确定性,利用预测不确定性度量测试样例上模态的重要性,使模型能够更准确地融合多模态信息。
  综合两种策略后,MLA表现出最佳性能

Q4 MLA如何改变多模态学习中的模态差距?

在这里插入图片描述
  图二是MLA在KS数据集上的测试准确度的可视化,随着音频或视频训练数据中缺失模态的比例而变化。
  我们可以观察到,MLA中单模态学习的表现不受其他模态缺失的影响。在QMF中,一种模态的缺失会对另一种模态的表现产生负面影响。这些发现表明采用交替优化方法可以有效地解决模态惰性问题。
在这里插入图片描述
  在多模态学习中存在模态间隙,就是不同的模态信息位于嵌入空间内两个完全独立的区域。这种模态差距与模型性能相关,以往的研究表明,增加模态差距可以在某种程度上提高多模态学习中的分类性能。图三将Food101数据集中的文本和视觉模态之间的模态差距可视化,与串联的方法比较,MLA导致了更大的模态差距,这表明不同的模态变得更容易区分,从而导致更强的性能。

相关文章:

论文笔记:交替单模态适应的多模态表征学习

整理了CVPR2024 Multimodal Representation Learning by Alternating Unimodal Adaptation)论文的阅读笔记 背景MLA框架实验Q1 与之前的方法相比,MLA能否克服模态懒惰并提高多模态学习性能?Q2 MLA在面临模式缺失的挑战时表现如何?Q3 所有模块是否可以有…...

鸿蒙OS 线程间通信

鸿蒙OS 线程间通信概述 在开发过程中,开发者经常需要在当前线程中处理下载任务等较为耗时的操作,但是又不希望当前的线程受到阻塞。此时,就可以使用 EventHandler 机制。EventHandler 是 HarmonyOS 用于处理线程间通信的一种机制&#xff0c…...

执行 npm报错 Cannot find module ‘../lib/cli.js‘

报错 /usr/local/node/node-v18.20.4-linux-x64/bin/npm node:internal/modules/cjs/loader:1143 throw err; ^ Error: Cannot find module ../lib/cli.js Require stack: - /usr/local/node/node-v18.20.4-linux-x64/bin/npm at Module._resolveFilename (node:inter…...

基于SpringBoot+Vue+MySQL的国产动漫网站

系统展示 用户前台界面 管理员后台界面 系统背景 随着国内动漫产业的蓬勃发展和互联网技术的快速进步,动漫爱好者们对高质量、个性化的国产动漫内容需求日益增长。然而,市场上现有的动漫平台大多以国外动漫为主,对国产动漫的推广和展示存在不…...

AUTOSAR汽车电子嵌入式编程精讲300篇-基于CAN总线的气动控制

目录 前言 知识储备 什么是气动控制: 气动控制基础知识 一、气动元件 二、气路设计 三、气动控制系统 气动控制系统构成图 气动控制系统基本组成功能图 几种常见的气动执行元件实物图 常用气动压力控制阀实物图 常用气动流动控制阀实物图 电磁控制换向发实物图 部…...

Ubuntu 20.04 内核升级后网络丢失问题的解决过程

在 Ubuntu 系统中,内核升级是一个常见的操作,旨在提升系统性能、安全性和兼容性。然而,有时这一操作可能会带来一些意外的副作用,比如导致网络功能的丧失。 本人本来是想更新 Nvidia 显卡的驱动,使用 ubuntu-drivers …...

论文解读《LaMP: When Large Language Models Meet Personalization》

引言:因为导师喊我围绕 “大语言模型的个性化、风格化生成” 展开研究,所以我就找相关论文,最后通过 ACL 官网找到这篇,感觉还不错,就开始解读吧! “说是解读,其实大部分都是翻译哈哈哈&#x…...

Excel VLOOKUP函数怎么用?vlookup函数的使用方法及案例

大家好,这里是效率办公指南! 🔎 在Excel的世界里,VLOOKUP函数无疑是查询和数据分析中的明星。无论是从庞大的数据表中提取特定信息,还是进行数据的快速匹配,VLOOKUP都能大显身手。今天,我们将深…...

专为汽车功能应用打造的 MLX90376GGO、MLX90377GGO、MLX90377GDC-ADB-280 Triaxis®磁位置传感器 IC

一、MLX90376 Triaxis堆叠式高性能位置传感器芯片(模拟/PWM/SENT/SPC) MLX90376GGO-ABA-600 MLX90376GGO-ABA-630 MLX90376GGO-ABA-680 MLX90376是一款磁性绝对位置传感器芯片,适用于要求具备抗杂散磁场干扰性能的360旋转汽车应用。它提供…...

34.贪心算法1

0.贪心算法 1.柠檬水找零(easy) . - 力扣(LeetCode) 题目解析 算法原理 代码 class Solution {public boolean lemonadeChange(int[] bills) {int five 0, ten 0;for (int x : bills) {if (x 5) // 5 元:直接收下…...

DataX实战:从MongoDB到MySQL的数据迁移--修改源码并测试打包

在现代数据驱动的业务环境中,数据迁移和集成是常见的需求。DataX,作为阿里云开源的数据集成工具,提供了强大的数据同步能力,支持多种数据源和目标端。本文将介绍如何使用DataX将数据从MongoDB迁移到MySQL。 环境准备 安装MongoDB…...

Axure设计之表格列冻结(动态面板+中继器)

在Web端产品设计中,复杂的表格展示是常见需求,尤其当表格包含大量列时,如何在有限的屏幕空间内优雅地展示所有信息成为了一个挑战。用户通常需要滚动查看隐藏列,但关键信息列(如ID、操作按钮等)在滚动时保持…...

WPF DataGrid 动态修改某一个单元格的样式

WPF DataGrid 动态修改某一个单元格的样式 <DataGrid Name"main_datagrid_display" Width"1267" Height"193" Grid.Column"1"ItemsSource"{Binding DataGridModels}"><DataGrid.Columns><!--ElementStyle 设…...

如何安装部署kafka

安装和部署Apache Kafka需要以下几个步骤&#xff0c;包括下载 Kafka、配置 ZooKeeper&#xff08;或者使用 Kafka 自带的 Kafka Raft 模式替代 ZooKeeper&#xff09;&#xff0c;以及启动 Kafka 服务。以下是一个但基于 Linux 的典型安装流程&#xff0c;可以根据需要改装到其…...

Centos7-rpm包管理器方式安装MySQL 5.7.25

前言 本文用于学习通过Mysql压缩包在centos7中安装和配置的过程以及过程中碰到的Bug解决。 Mysql安装包下载和上传 MySQL :: Download MySQL Community Server (Archived Versions)https://downloads.mysql.com/archives/community/访问Mysql官方下载站&#xff0c;选择对应的…...

Project Online 协作版部署方案

目录 前言 第一部分:为什么选择Project Online? 一、核心优势 二、适用场景 第二部分:部署前的准备工作 一、需求分析 二、账户和权限管理 三、培训与支持 第三部分:Project Online 的核心功能 一、项目创建与管理 二、资源管理 三、团队协作 四、风险管理 五…...

小米 13 Ultra机型工程固件 资源预览与刷写说明 步骤解析

小米 13 Ultra机型---机型代码为ishtar 。工程固件可以辅助修复格机或者全檫除分区后的基带修复。可以用于修复TEE损坏。以及一些分区的底层修复。此款固件也可以为更换UFS后的底包。 通过博文了解 1💝💝💝-----此机型工程固件的资源刷写注意事项 2💝💝💝-----此…...

Goweb预防XSS攻击

XSS攻击示例 假设您有一个简单的Web应用程序&#xff0c;其中包含一个用户输入表单&#xff0c;用户可以在其中输入他们的名字&#xff0c;然后这个名字会被显示在页面上。攻击者可以在表单中输入恶意的JavaScript代码&#xff0c;如&#xff0c;如果应用程序没有对这个输入进…...

ICM20948 DMP代码详解(36)

接前一篇文章&#xff1a;ICM20948 DMP代码详解&#xff08;35&#xff09; 上一回讲到了icm20948_sensor_setup() ---> inv_icm20948_initialize_auxiliary函数 ---> inv_icm20948_set_slave_compass_id函数&#xff0c;本回开始&#xff0c;就对于inv_icm20948_set_sla…...

【框架】Spring、SpringBoot和SpringCloud区别

Spring Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器&#xff08;框架&#xff09; IoC&#xff08;Inversion of Control&#xff0c;控制反转&#xff09;是一种设计思想&#xff0c;它主要用于降低软件系统中不同模块之间的耦合度&#xff0c;提高代码的可维护…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...