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

论文笔记:是什么让多模态学习变得困难?

整理了What Makes Training Multi-modal Classification Networks Hard? 论文的阅读笔记

  • 背景
  • 方法
    • OGR
    • 基于最小化OGR的多监督信号混合
    • 在实践中的应用
  • 实验

背景

  直观上,多模态网络接收更多的信息,因此它应该匹配或优于其单峰网络。然而,最好的单模态网络往往优于多模态网络。这种观察在不同的模态组合以及不同的视频分类任务和基准上是一致的。如表一所示:

  本文提出了两个主要原因:多模态网络往往容易过拟合;不同的模态过拟合和泛化率不同,因此使用单一优化策略联合训练它们是次优的。图一展示了一些尝试的改进,包括dropout、早停、SE门和NL门等,然而,这些方法都无法解决这些问题。
  本文提出了一种称为顺应性混合(Gradient-Blending)的技术缓解这种情况,这是一种新的训练方案,与任务无关、与架构无关,通过多个监督信号的最佳混合来最小化OGR(在下文中提出)。

方法

OGR

  我们首先假设单峰学习和多峰学习的基本形式:
L ( C ( φ m ( X ) ) , y ) \mathcal{L}(\mathcal{C}(\varphi_m(X)),y) L(C(φm(X)),y) L m u l t i ( C ( φ m 1 ⊕ φ m 2 ⊕ . . . φ m k ) , y ) \mathcal{L}_{multi}(\mathcal{C}(\varphi_{m_1}\oplus\varphi_{m_2}\oplus...\ \varphi_{m_k}),y) Lmulti(C(φm1φm2... φmk),y)  其中, C \mathcal{C} C表示分类器, φ m \varphi_m φm表示模态特定权重, y y y是标签。多峰网络是单峰网络的超集,对于多峰网络中任何一个模态,通过选择最好权重,可以构造与单峰网络同样好的解,然而在实际情况,这是不可能的。
  过拟合通常被理解为在训练集中学习到的模式不会推广到目标分布。基于这一点,我们可以将第 N N N个时期的过拟合定义为 L N T \mathcal{L}_N^T LNT L N V \mathcal{L}_N^V LNV之间的差距。两个模型检查点之间的训练质量可以通过过拟合和泛化的变化来衡量(图3中的 Δ G \Delta G ΔG Δ O \Delta O ΔO)。在检查点 N N N N + n N+n N+n之间,我们可以定义过拟合与泛化比(OGR): O G R ≡ ∣ Δ O N , n Δ G N , n ∣ = ∣ Δ O N + n − O N L N ∗ − L N + n ∗ ∣ OGR\equiv|\frac{\Delta O_{N,n}}{\Delta G_{N,n}}|=|\frac{\Delta O_{N+n}-O_N}{\mathcal{L}_N^*-\mathcal{L}_{N+n}^*}| OGRΔGN,nΔON,n=LNLN+nΔON+nON
在这里插入图片描述
  直观上,我们可以在训练期间最小化 O G R OGR OGR,但是有两个麻烦:1、全局优化OGR将是非常昂贵的。2、如果是欠拟合模型,那么这个损失会非常小。
  因此,我们建议解决一个无穷小问题:给定梯度的几个估计,将它们混合以最小化无穷小 O G R 2 OGR^2 OGR2,我们将此混合应用于优化流程。每个梯度步长在验证损失的每单位增益上尽可能少地增加泛化误差,从而最大限度地减少过拟合。在多模态设置中,这意味着我们将来自多个模态的梯度估计结合起来,并最小化OGR2,以确保每个梯度步长现在产生的增益不比单个最佳模态的增益差。这个 L 2 L^2 L2问题允许一个简单的封闭式解决方案,易于实现,并且在实践中工作得很好。
  考虑一个单一的参数更新步骤,其估计为梯度。由于两个检查点之间的距离很小,我们使用一阶近似: Δ G ≈ < ∇ L ∗ , g ∗ > \Delta G ≈ <\nabla \mathcal{L}^*,g^*> ΔG≈<L,g> Δ O ≈ < ∇ L T − ∇ L ∗ , g ∗ > \Delta O ≈ <\nabla \mathcal{L}^T-\nabla \mathcal{L}^*,g^*> ΔO≈<LTL,g>。因此,对于单个向量 g ∗ g^* g O G R 2 OGR^2 OGR2为: O C R 2 = ( < ∇ L T − ∇ L ∗ , g ∗ > < ∇ L ∗ , g ∗ > ) 2 OCR^2=(\frac{<\nabla \mathcal{L}^T-\nabla \mathcal{L}^*,g^*>}{<\nabla \mathcal{L}^*,g^*>})^2 OCR2=(<L,g><LTL,g>)2

基于最小化OGR的多监督信号混合

  我们可以通过为每个模态的特征和融合特征分别添加分类器来获得梯度的多个估计(下图c)。通过分别反向传播每个损失来获得每模态梯度 { g ^ i } i = 1 k \{\hat g_i\}_{i=1}^k {g^i}i=1k。我们的下一个结果允许我们将它们全部混合到具有更好泛化行为的单个向量中。
在这里插入图片描述  设 { v k } 0 M \{v_k\}_0^M {vk}0M L ∗ \mathcal{L}^* L的一组估计值,其过拟合近似为 E [ < ∇ L T − ∇ L ∗ , v k > < ∇ L T − ∇ L ∗ , v j > ] = 0 , j ≠ k \mathbb{E}[<\nabla \mathcal{L}^T-\nabla \mathcal{L}^*,v_k><\nabla \mathcal{L}^T-\nabla \mathcal{L}^*,v_j>]=0,j\neq k E[<LTL,vk><LTL,vj>]=0,j=k。给定约束 ∑ k w k = 1 \sum_kw_k=1 kwk=1,该问题的最优权重 w k ∈ R w_k\in \mathcal{R} wkR w ∗ = a r g m i n E [ ( < ∇ L T − ∇ L ∗ , ∑ k w k v k > L ∗ , ∑ k w k v k ) 2 ] w^*=arg min \mathbb{E}[(\frac{<\nabla \mathcal{L}^T-\nabla \mathcal{L}^*,\sum_kw_kv_k>}{\mathcal{L}^*,\sum_kw_kv_k})^2] w=argminE[(L,kwkvk<LTL,kwkvk>)2]  are given by: w k ∗ = 1 Z < L ∗ , v k > σ k 2 w^*_k=\frac{1}{Z}\frac{<\mathcal{L}^*,v_k>}{\sigma_k^2} wk=Z1σk2<L,vk>  其中, σ k 2 ≡ E [ < ∇ L T − ∇ L ∗ , v k > ] \sigma_k^2\equiv\mathbb{E}[<\nabla \mathcal{L}^T-\nabla \mathcal{L}^*,v_k>] σk2E[<LTL,vk>] Z Z Z是一个标准化常数 Z = ∑ k < L ∗ , v k > 2 σ k 2 Z=\sum_k\frac{<\mathcal{L}^*,v_k>}{2\sigma_k^2} Z=k2σk2<L,vk>

在实践中的应用

  我们采用多任务架构来构建上述优化的近似解决方案。即为所有模态构建单独的损失。在每个反向传播步骤中,模态 m i m_i mi梯度是 ∇ L i \nabla \mathcal{L}_i Li,来自融合损失的梯度记为 L k + 1 \mathcal{L}_{k+1} Lk+1。产生混合梯度: L b l e n d = ∑ i = 1 k + 1 w i L i \mathcal{L}_{blend}=\sum_{i=1}^{k+1}w_i\mathcal{L}_i Lblend=i=1k+1wiLi  通过适当选择 w i w_i wi,就产生了实现梯度混合的方便方法。直观地,损失重新加权重新校准学习时间表,以平衡不同模态的泛化/过拟合率。
  在实践中,我们无法看到目标分布结果(测试集)测量OGR。为了测量OGR,我们保留训练集的子集V来近似目标分布。算法1提供了一种连续混合权重估计。以及两种不同的梯度混合方法(算法2,算法3):1.离线渐变混合(Offline Gradient-Blending):只计算一次权重,并使用一组固定权重来训练整个时期。2.在线渐变混合(Online Gradient-Blending):完整版本,定期重新计算权重(例如,每n个epoch称为超级epoch),并使用超级epoch的新权重来训练模型。

实验

  本文使用三种视频数据集进行消融:Kinetics、mini-Sports和mini-AudioSet:
在这里插入图片描述
  本文的方法超过了单峰和后期融合。本文进一步验证了朴素联合训练中的过拟合问题:
在这里插入图片描述
  在这两个数据集上,音频模型过拟合最多,视频过拟合最少。与仅视频模型相比,朴素联合音频-RGB模型具有较低的训练误差和较高的验证误差;即朴素音频-RGB联合训练增加了过拟合,解释了与单独视频相比的准确性下降。我们扩展了分析,考虑了三种模态(音频、RGB和光流)的所有4种可能组合。在每种情况下,朴素联合训练的验证准确度都明显低于最佳单流模型(表1),而训练准确度几乎总是更高。
  不同优化器的比较:
在这里插入图片描述
  表四给出了本文的方法与朴素联合训练和最佳单流模型的比较:
在这里插入图片描述
  G-Blend在不同的基准测试和任务上优于所有基线方法:
在这里插入图片描述
  在AudioSet上与最新方法的比较。GBlend在性能上大大优于现有的方法:
在这里插入图片描述  与EPIC-Kitchen最先进方法的比较:
在这里插入图片描述

相关文章:

论文笔记:是什么让多模态学习变得困难?

整理了What Makes Training Multi-modal Classification Networks Hard? 论文的阅读笔记 背景方法OGR基于最小化OGR的多监督信号混合在实践中的应用 实验 背景 直观上&#xff0c;多模态网络接收更多的信息&#xff0c;因此它应该匹配或优于其单峰网络。然而&#xff0c;最好的…...

ChatGPT Search开放:实时多模态搜索新体验

点击访问 chatTools 免费体验GPT最新模型&#xff0c;包括o1推理模型、GPT4o、Claude、Gemini等模型&#xff01; ChatGPT Search&#xff1a;功能亮点解析 本次更新的ChatGPT Search带来了多项令人瞩目的功能&#xff0c;使其在搜索引擎市场中更具竞争力。 1. 高级语音模式&…...

Centos7.9 离线安装docker

实验环境&#xff1a; [root192 ~]# cat /etc/system-release CentOS Linux release 7.9.2009 (Core)下载二进制压缩包 a. 官网下载地址&#xff1a; https://download.docker.com/linux/static/stable/x86_64/b. 阿里云下载地址 https://mirrors.aliyun.com/docker-ce/lin…...

C语言函数在调用过程中具体是怎么和栈互动的?

从栈开始的一场C语言探险记 —— C语言函数是如何与栈"共舞"的。 栈的舞步解析 通过一个简单的例子来看看这支"舞蹈"&#xff1a; int add(int a, int b) {int result a b;return result; }int main() {int x 10;int y 20;int sum add(x, y);retur…...

【Java中常见的异常及其处理方式】

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 文章目录 字符串修改的实现——StringBuilder和StringBuffer异常常见异常①算数异常②数组越界异常③空指针异…...

如何更新项目中的 npm 或 Yarn 依赖包至最新版本

要升级 package.json 文件中列出的包&#xff0c;你可以使用 npm&#xff08;Node Package Manager&#xff09;或 yarn。以下是两种工具的命令来更新你的依赖项&#xff1a; 使用 npm 更新所有包到最新版本 npm update如果你想将所有依赖项更新到其各自最新的大版本&#xf…...

SpringBoot3整合FastJSON2如何配置configureMessageConverters

在 Spring Boot 3 中整合 FastJSON 2 主要涉及到以下几个步骤&#xff0c;包括添加依赖、配置 FastJSON 作为 JSON 处理器等。下面是详细的步骤&#xff1a; 1. 添加依赖 首先&#xff0c;你需要在你的 pom.xml 文件中添加 FastJSON 2 的依赖。以下是 Maven 依赖的示例&#…...

《Vue3实战教程》2:Vue3快速上手

如果您有疑问&#xff0c;请观看视频教程《Vue3实战教程》 快速上手​ 线上尝试 Vue​ 想要快速体验 Vue&#xff0c;你可以直接试试我们的演练场。 如果你更喜欢不用任何构建的原始 HTML&#xff0c;可以使用 JSFiddle 入门。 如果你已经比较熟悉 Node.js 和构建工具等概念…...

ubuntu 24.04.1安装FTP流程

1、安装vsftpd&#xff1a; sudo apt update sudo apt install vsftpd 2、安装后重启查看vsftpd状态 sudo systemctl status vsftpd 输出如下所示&#xff0c;表明vsftpd服务处于活动状态并正在运行&#xff1a; * vsftpd.service - vsftpd FTP server Loaded: loaded (/…...

多功能护照阅读器港澳通行证阅读机RS232串口主动输出协议,支持和单片机/Linux对接使用

此护照阅读器支持护照、电子芯片护照、港澳通行证、台湾通行证&#xff0c;和串口的被动的方式不一样。此护照阅读器通电后&#xff0c;自动读卡&#xff0c;串口输出&#xff0c;软件只需要去串口监听数据即可&#xff0c;例如用串口助手就可以收到读卡信息。 非常适用于单片…...

5个用于构建Web应用程序的Go Web框架

探索高效Web开发的顶级Go框架 Go&#xff08;或称为Golang&#xff09;以其简洁性、高效性和出色的标准库而闻名。然而&#xff0c;有几个流行的Go Web框架和库为构建Web应用程序提供了额外的功能。以下是五个最值得注意的Go框架&#xff1a; 1. Gin&#xff1a; Gin是一个高…...

Qt中的异步相关类

Qt中的异步相关类 今天在学习别人的项目时&#xff0c;看到别人包含了QFuture类&#xff0c;我没有见过&#xff0c;于是记录一下。 直接在AI助手中搜索QFuture,得到的时Qt中异步相关的类。于是直接查询一下Qt异步中相关的类。 在Qt中&#xff0c;异步编程是一个重要的概念&…...

浅谈仓颉语言的优劣

仓颉语言&#xff0c;作为华为自研的新一代编程语言&#xff0c;以其高效、安全、现代化的特点&#xff0c;引起了广泛的关注。 仓颉语言的优势 高效并发 仓颉语言的一大亮点是其轻松并发的能力。它实现了轻量化用户态线程和并发对象库&#xff0c;使得高效并发变得轻松。仓颉…...

Linux 显示系统活动进程状态命令 ps 详细介绍

Linux 和类 Unix 操作系统中的 ps&#xff08;Process Status&#xff09;命令用于显示当前系统中活动进程状态的命令。它提供了关于系统中正在运行的进程的详细信息&#xff0c;如进程 ID&#xff08;PID&#xff09;、父进程 ID&#xff08;PPID&#xff09;、运行时间、使用…...

scala中正则表达式的使用

正则表达式&#xff1a; 基本概念 在 Scala 中&#xff0c;正则表达式是用于处理文本模式匹配的强大工具。它通过java.util.regex.Pattern和java.util.regex.Matcher这两个 Java 类来实现&#xff08;因为 Scala 运行在 Java 虚拟机上&#xff0c;可以无缝使用 Java 类库&…...

数据分析和AI丨知识图谱,AI革命中数据集成和模型构建的关键推动者

人工智能&#xff08;AI&#xff09;已经吸引了数据科学家、技术领导者以及任何使用数据进行商业决策者的兴趣。绝大多数企业都希望利用人工智能技术来增强洞察力和生产力&#xff0c;而对于这些企业而言&#xff0c;数据集的质量差成为了最主要的障碍。 数据源需要进行清洗且明…...

cocos creator制作2dTop-down游戏(虚拟摇杆、地图加载)

《不被遗忘的时光》第一期 1、游戏的形式&#xff1a;横板&#xff1b;2d的顶视角&#xff08;Top-down&#xff09;&#xff1b;射击&#xff1b;ARPG&#xff1b;益智解谜。 2、画风&#xff1a;类似手游《伊洛纳》。 3、故事背景&#xff1a;以中元节的爷孙阴阳交流作为故…...

SQL Server 批量插入数据的方式汇总及优缺点分析

在 SQL Server 中,批量插入数据是非常常见的操作,尤其是在需要导入大量数据时。以下是几种常用的批量插入数据的方式: 1. 使用 INSERT INTO ... VALUES • 特点:适用于少量数据插入。 • 优点:简单易用。 • 缺点:不适合大量数据插入,性能较差。 • 示例:…...

linux上抓包RoCEv2

1、检查tcpdump版本 tcpdump help&#xff08;4.99.4以上&#xff09; 如果版本较低需要重新下载编译&#xff1a; wget https://www.tcpdump.org/release/libpcap-1.10.5.tar.xz wget http://www.tcpdump.org/release/tcpdump-4.99.4.tar.gz tar -xJf libpcap-1.10.5.tar.xz…...

【机器学习与数据挖掘实战】案例04:基于K-Means算法的信用卡高风险客户识别

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈机器学习与数据挖掘实战 ⌋ ⌋ ⌋ 机器学习是人工智能的一个分支&#xff0c;专注于让计算机系统通过数据学习和改进。它利用统计和计算方法&#xff0c;使模型能够从数据中自动提取特征并做出预测或决策。数据挖掘则是从大型数…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

Linux部署私有文件管理系统MinIO

最近需要用到一个文件管理服务&#xff0c;但是又不想花钱&#xff0c;所以就想着自己搭建一个&#xff0c;刚好我们用的一个开源框架已经集成了MinIO&#xff0c;所以就选了这个 我这边对文件服务性能要求不是太高&#xff0c;单机版就可以 安装非常简单&#xff0c;几个命令就…...

Vue 模板语句的数据来源

&#x1f9e9; Vue 模板语句的数据来源&#xff1a;全方位解析 Vue 模板&#xff08;<template> 部分&#xff09;中的表达式、指令绑定&#xff08;如 v-bind, v-on&#xff09;和插值&#xff08;{{ }}&#xff09;都在一个特定的作用域内求值。这个作用域由当前 组件…...