多模态中各种Fusion方式汇总

多模态中各种Fusion骚操作

大噶好,我是DASOU;

今天继续写多模态系列文章,对多模态感兴趣的可以看我之前的文章:

其实对于多模态来说,主要可以从三个部分去掌握它:

  1. 如何获取多模态的表示【learning multimodal representations】
  2. 如何做各个模态的融合【fusing multimodal signals at various
    levels】
  3. 多模态的应用【multimodal applications】

今天我主要放在第二个部分,也就是各个模态的Fusion方式汇总;

Fusion做的事情简单来说就是把不同模态的信息整合为一个信息,得到一个特征向量,然后利用这个特征向量再去做下游任务;

所以它的任务就是更深的挖掘不同模态信息同时更好的融合进最终的representation;

我们可以把Fusion分为三种融合方式:

  1. 基于简单操作的融合
  2. Attention-based Fusion
  3. 双线性池化融合

1. 基于简单操作的融合

Simple Operation-based Fusion 就是说来自不同模态的特征向量可以使用很简单的方式进行整合,比如多个模态的特征向量的拼接,加权和;

举个简单的例子,比如我们现在做一个图文双模态的分类任务,我们获取了文本特征向量和图片特征向量,那么我们可以把两个特征向量直接拼接,就当做是融合后的向量了;

如果我认为文本的包含的信息更加的重要,图片包含的信息不是那么重要,我完全可以自定义文本特征向量权重为0.7,图片特征向量权重为0.3,然后两者的向量再concat或者做加权的和;

其实如果我们自己最开始做一个多模态任务,最先想到的方式就应该是这种基于简单操作的方式;

但是这个方式存在一个问题,就是两个模态之后没有做足够的交互,两者之间的联系比较弱一点;

针对这个,我们一般会在得到concat features之后,不会直接去做分类任务,而是再接一个或者几个全连接层,让模型自动的去学习两个模态之间的关系,这样效果会更好;

这里还有一点需要注意的是,对于concat方式,我们最好是确保文本特征向量和图片特征向量维度是固定的,这样后面接全连接层维度不会出错;

但是有些时候我们输入的图片数量不固定,那么图片特征向量维度不一定,这个时候操作比较多,举个简单例子可以先做一个max pooling到固定维度再去和文本拼接;

如果做加权和,我们需要确保文本和图片特征维度是相同的,这个就不多说,很好理解;

以我自己个人经验来说,在图文多模态分类这个,使用concat这种方式,能比单一的使用文本效果提升不到2个点左右,当然case by case;

2. Attention-based Fusion

第一种方式我一般是在任务中作为基线,简单粗暴有提升;之后任务迭代的时候,一般都会往attention上靠一靠;

因为concat虽然后面加上了全连接层学习两者之间关系,但是在两者的交互上来说还是有点弱的;

对于attention的操作可以简单分为:1.Image attention;2. Symmetric attention for images and text;3. Attention in a bimodal transformer; 4. Other attention-like mechanisms;

我详细说一下第三点,就是基于TRM的attention,因为TRM太火了;

基于TRM的attention这块,从两个类别去理解它,一个是基于TRM的多模态预训练模型,一个是基于TRM的微调模型;

基于TRM的多模态预训练模型,就是所借助TRM,输入是图片和文本信息,然后做预训练任务,从大量数据中学习到信息,然后得到多模态预训练模型,然后放入到下游任务中去;

但是这些有个问题,很多人都没有大量的图文平行无监督数据,相反大家一般都有图文平行的标注数据;

所以我们可以直接借助TRM的结构,直接做下游任务的微调就可以,这一块有个论文是facebook的MMBT;

MMMBT其实很简单,直接看这个图:MMBT结构图

就是借助bert做初始化,然后图片从resent得到向量输出,一般是三个,然后拼接文本,输入到bert,直接在下游任务做微调;

在这里我想多说几句,其实还可以直接对文本和图片之间做attention,多头或者单头都可以,其实单头就够了;

在写代码的时候,我在遇到一个问题,就是文本和图片之间attention的矩阵化,我踩了下坑~~~;

3. 基于双线性池化的融合办法

双线性池化也是一个比较受重视的融合方法,不过它的问题就是在于会把n为变成n的平方,复杂度大大提升,后续的改进一般都是在降低复杂度这一块;

双线性池化最初的操作,就是做向量的外积,获得一个矩阵,然后对矩阵做sum池化,得到特征向量,然后再去做分类;

如果是在实际业务,大家还是优先考虑前两种吧,双线性池化这个放后一点;

先写这么多,后续会写一个MMBT论文的解读;

参考论文:Multimodal Intelligence: Representation Learning, Information Fusion, and Applications

https://arxiv.org/pdf/1911.03977.pdf

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

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

相关文章

大数据毕业设计选题推荐-收视点播数据分析-Hadoop-Spark-Hive

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

Spring基础(2):放弃XML,走向注解

上一篇并没有实际地带大家去看源码,而是介绍了两个概念: BeanDefinitionBeanPostProcessor 当然,我介绍得非常笼统,不论是BeanDefinition还是BeanPostProcessor其实都有着较为复杂的继承体系,种类也很多。作为Spring…

5.网络之IP

IP协议(网络层) 文章目录 IP协议(网络层)1. 报文格式2. IP地址2. 地址管理3. 特殊IP地址 IP协议(Internet Protocol,互联网协议),是TCP/IP协议栈中最核心的协议之一,通过…

2024年天津财经大学珠江学院专升本预计新增金融学招生专业

2024年天津高职升本科天津财经大学珠江学院预计在今年新增招生专业,专业为金融学,目前该专业正在向天津市教育委员会申报中,预计最快下周即可在天津财经大学珠江学院招生官方发出通知。具体以官方审批是否通过为准。 珠江消息详情如下&#x…

01-单节点部署clickhouse及简单使用

1、下载rpm安装包: 官网:https://packages.clickhouse.com/rpm/stable/ clickhouse19.4版本之后只需下载3个rpm安装包,上传到节点目录即可 2、rpm包安装: 安装顺序为conmon->server->client 执行 rpm -ivh ./clickhouse-…

相机滤镜软件Nevercenter CameraBag Photo mac中文版特点介绍

Nevercenter CameraBag Photo mac是一款相机和滤镜应用程序,它提供了一系列先进的滤镜、调整工具和预设,可以帮助用户快速地优化和编辑照片。 Nevercenter CameraBag Photo mac软件特点介绍 1. 滤镜:Nevercenter CameraBag Photo提供了超过2…

HTML 表格

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>表格标签</title>/* <style>.yun {widt…

【MongoDB】索引 - 数组字段的多键索引

数组字段创建索引时&#xff0c;MongoDB会为数组中的每个元素创建索引键&#xff08;多键索引&#xff09;&#xff0c;多键索引支持数组字段的高效查询。 一、准备工作 这里准备一些数据 db.shop.insertMany([{_id: 1, name: "水果店1", fruits: ["apple&qu…

turtle绘制分形树-第10届蓝桥杯省赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第5讲。 turtle绘制分形树&…

Sui发布RPC2.0 Beta,拥抱GraphQL并计划弃用JSON-RPC

为了解决现有RPC存在的许多已知问题&#xff0c;Sui正在准备推出一个基于GraphQL的新RPC服务&#xff0c;名为Sui RPC 2.0。GraphQL是一种开源数据查询和操作语言&#xff0c;旨在简化需要复杂数据查询的API和服务。 用户目前可以访问Sui主网和测试网网络的Beta版本的只读快照…

基于侏儒猫鼬算法的无人机航迹规划-附代码

基于侏儒猫鼬算法的无人机航迹规划 文章目录 基于侏儒猫鼬算法的无人机航迹规划1.侏儒猫鼬搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用侏儒猫鼬算法来优化无人机航迹规划。 …

2024年人工智能安全发展十大预测

上周三&#xff0c;包括英国、美国和中国在内的近30个国家&#xff08;以及欧盟&#xff09;在人工智能安全峰会上达成首个全球性人工智能安全协议&#xff0c;并发布了《人工智能安全宣言》&#xff0c;这标志着人工智能正式进入安全发展的强监管时代。 峰会期间&#xff0c;…

网络爬虫的实战项目:使用JavaScript和Axios爬取Reddit视频并进行数据分析

概述 网络爬虫是一种程序或脚本&#xff0c;用于自动从网页中提取数据。网络爬虫的应用场景非常广泛&#xff0c;例如搜索引擎、数据挖掘、舆情分析等。本文将介绍如何使用JavaScript和Axios这两个工具&#xff0c;实现一个网络爬虫的实战项目&#xff0c;即从Reddit这个社交媒…

Spring boot集成sentinel限流服务

Sentinel集成文档 Sentinel控制台 Sentinel本身不支持持久化&#xff0c;项目通过下载源码改造后&#xff0c;将规则配置持久化进nacos中&#xff0c;sentinel重启后&#xff0c;配置不会丢失。 架构图&#xff1a; 改造步骤&#xff1a; 接着我们就要改造Sentinel的源码。…

【蓝桥杯省赛真题41】Scratch电脑开关机 蓝桥杯少儿编程scratch图形化编程 蓝桥杯省赛真题讲解

目录 scratch电脑开关机 一、题目要求 编程实现 二、案例分析 1、角色分析

【数据开发】大数据平台架构,Hive / THive介绍

1、大数据引擎 大数据引擎是用于处理大规模数据的软件系统&#xff0c; 常用的大数据引擎包括Hadoop、Spark、Hive、Pig、Flink、Storm等。 其中&#xff0c;Hive是一种基于Hadoop的数据仓库工具&#xff0c;可以将结构化的数据映射到Hadoop的分布式文件系统上&#xff0c;并提…

✔ ★【备战实习(面经+项目+算法)】 11.6 学习

✔ ★【备战实习&#xff08;面经项目算法&#xff09;】 坚持完成每天必做如何找到好工作1. 科学的学习方法&#xff08;专注&#xff01;效率&#xff01;记忆&#xff01;心流&#xff01;&#xff09;2. 每天认真完成必做项&#xff0c;踏实学习技术 认真完成每天必做&…

【Vue.js】Vue3全局配置Axios并解决跨域请求问题

系列文章目录 文章目录 系列文章目录背景一、部署Axios1. npm 安装 axios2. 创建 request.js&#xff0c;创建axios实例3. 在main.js中全局注册axios4. 在页面中使用axios 二、后端解决跨域请求问题方法一 解决单Contoller跨域访问方法二 全局解决跨域问题 背景 对于前后端分离…

8 ICMP与ping

1、ICMP 协议的格式 一般在网络不同的时候&#xff0c;我们首先想到的是ping 那你知道 ping 是如何工作的吗&#xff1f; 1.ping 是基于 ICMP 协议工作的。 2.ICMP全称Internet Control Message Protocol&#xff0c;就是互联网控制报文协议。这里的关键在于"控制"…

Ubuntu 创建用户

在ubuntu系统中创建用户&#xff0c;是最基本的操作。与centos7相比&#xff0c;有较大不同。 我们通过案例介绍&#xff0c;讨论用户的创建。 我们知道&#xff0c;在linux中&#xff0c;有三类用户&#xff1a;超级管理员 root 具有完全权限&#xff1b;系统用户 bin sys a…