Ovis原理解读: 多模态大语言模型的结构嵌入对齐

news2025/1/15 16:39:02

在这里插入图片描述

论文:https://arxiv.org/pdf/2405.20797
github:https://github.com/AIDC-AI/Ovis

在多模态大语言模型 (MLLM) 中,不同的嵌入策略有显著的区别。以下是使用基于连接器的方法与 Ovis 方法的比较:
不同方案总结对比

基于连接器的方法-优缺点(connector-based approach)

  • 策略:在基于连接器的方法中,视觉嵌入通过连接器(connector)转化为与文本嵌入具有相同维度。
  • 具体实现:文本嵌入从一个文本嵌入表中索引,而连接器的作用是将视觉嵌入调整到相同的尺度和形式,使其能够与文本嵌入一起处理。
  • 优点:这种方法确保了视觉和文本嵌入在形式上的一致性,方便后续的联合处理。
  • 缺点:连接器可能限制了视觉特征的表达能力,无法完全捕捉到视觉输入的复杂模式和细节。

Ovis 方法-优缺点

  • 策略:Ovis 引入了一个额外的视觉嵌入查找表,从而生成结构化的视觉嵌入,并对齐两种模态的嵌入策略。
  • 具体实现:在 Ovis 中,这个额外的视觉嵌入表的每一行对应一个唯一的视觉词汇,表示不同的视觉模式。Ovis 首先将视觉编码器输出的连续 token 映射为概率 token,通过索引视觉嵌入表多次来生成最终的视觉嵌入。这种方法利用了整个嵌入表的期望值,捕捉了视觉输入的丰富语义。
  • 优点:这种方法能够更好地捕捉视觉输入中的复杂模式,提升了视觉信息的表达能力。此外,通过与文本嵌入策略的一致性设计,提高了两种模态信息的融合效果。
  • 缺点:引入额外的视觉嵌入表可能增加计算复杂度,需要更多的存储和计算资源。

Ovis 总结

它提出了一种新颖的多模态大语言模型 (MLLM) 架构,称为 “Ovis”。该架构吸收了大语言模型 (LLMs) 的洞见,从而建立视觉输入的结构化嵌入。如图1所示,Ovis 引入了一个额外的可学习视觉嵌入查找表,用以转换连续的视觉tokens,从而与文本嵌入的结构完整性相呼应。图2展示了在各种基准测试中,Ovis 在相同参数范围内优于开源 MLLMs,而 Ovis-14B 在整体表现上也超越了高资源的专有模型 Qwen-VL-Plus。

具体而言,Ovis 包含一个视觉嵌入表,其行对应于唯一的视觉词汇,代表不同的视觉模式。给定由视觉编码器 [22] 输出的视觉块的连续token,Ovis 首先将该token 映射为概率token,展示其在整个视觉词汇表中的相似性。这个概率token 捕捉单个视觉块中的丰富语义,其中可能包含多个视觉词汇的模式,有效地将视觉token视为从视觉嵌入表中基于分布抽样而来。随后,Ovis多次根据概率token 索引视觉嵌入表,生成一个最终的视觉嵌入,即整个嵌入表的嵌入期望。因此,Ovis 将视觉嵌入策略与其文本嵌入结构的本质对齐。

视觉嵌入表的优化和生成概率token 的参数显著影响 MLLM 的性能。与之前方法使用图像上的向量量化自动编码器和各种其他损失不同 [78, 23, 33],Ovis 利用联合文本生成损失,并以三阶段方式优化参数。这种学习过程使得 Ovis 避免了由于缺乏文本指导而在视觉语言任务中表现不足的风险。

以开源的视觉 Transformer 和 LLM 模型作为骨干实现 Ovis,并在不同的多模态基准中评估其性能。结果表明,在大多数基准测试中,Ovis 在相同参数范围内优于流行的开源 MLLMs。具体而言,Ovis-8B 与其竞争对手相比表现出较大的优势,而 Ovis-14B 始终超越了被比较的开源 MLLMs。
在这里插入图片描述

首先回顾了多模态大语言模型(MLLMs)中的视觉和文本嵌入策略的差异。接着,我们介绍了提出的架构Ovis,该架构包括用于概率性tokens的线性映射和在大语言模型(LLM)中引入的视觉嵌入查找表。

1 视觉和文本tokens的差异

图像和文本都作为输入被送入MLLM,但它们的标记化策略各不相同。设 I ∈ R C × W × H I \in \mathbb{R}^{C \times W \times H} IRC×W×H 为图像的像素值张量,其中 C C C W W W H H H 分别表示图像的通道数、宽度和高度。图像首先被划分为一系列视觉块(visual patches) { P i ∈ R C × w × h } i = 1 , 2 , … , n \{P_i \in \mathbb{R}^{C \times w \times h}\}_{i=1,2,\ldots,n} {PiRC×w×h}i=1,2,,n,其中 w w w h h h 分别表示视觉块的宽度和高度, n = ⌈ W w ⌈ ⌈ H h ⌈ n = \left\lceil \frac{W}{w} \right\lceil \left\lceil \frac{H}{h} \right\lceil n=wWhH 为视觉块的数量。给定预训练的视觉转换器(ViT)骨干网 g θ g_{\theta} gθ ,我们将这些视觉块转换为一系列视觉表示 { r i ∈ R d } i = 1 n \{r_i \in \mathbb{R}^d\}_{i=1}^n {riRd}i=1n

对于文本输入,设 { t i } i = 1 m \{t_i\}_{i=1}^m {ti}i=1m 为文本tokens的输入序列,它们将被 LLM f ϕ f_{\phi} fϕ 处理。在 MLLM 中,视觉 { r i } i = 1 n \{r_i\}_{i=1}^n {ri}i=1n 和文本 { t i } i = 1 m \{t_i\}_{i=1}^m {ti}i=1m 的tokens都需要转换为相同的形式,随后 LLM 处理所有tokens,并生成一个文本tokens的输出序列。我们用 λ \lambda λ 来表示图像指示器token的索引,即 t λ = <image > t_{\lambda} = \text{\textless image \textgreater} tλ=<image >,多模态输入tokens变成:
[ t 1 , … , t λ − 1 , <image > , … , t m ]          ( 1 ) [ t_1, \ldots, t_{\lambda-1}, \text{\textless image \textgreater}, \ldots, t_m ] \ \ \ \ \ \ \ \ (1) [t1,,tλ1,<image >,,tm]        (1)由于视觉和文本tokens的维度不同,直接用 { r i } i = 1 n \{r_i\}_{i=1}^n {ri}i=1n 替换 <image > \text{\textless image \textgreater} <image >是困难的。先前的方法引入了额外的线性投影、MLP或transformer架构来将视觉tokens映射成与文本tokens相同的形式。

2 概率性视觉Tokens

在Equation 1中与其使用连续的视觉tokens,我们对齐图像和文本的内部标记化策略以激发MLLM的潜力。为了模拟离散的文本tokens,我们使用一个线性头 R K × d R^{K \times d} RK×d 来变换具体的视觉tokens。假设K是视觉词汇表的大小,即唯一视觉词的数量,给定一个视觉token r i r_i ri,我们首先通过线性投影和softmax归一化将 r i r_i ri 转换为一个 ( K − 1 ) (K-1) (K1) 维的概率单纯形 Δ K \Delta^K ΔK
v i = softmax ( W r i ) , W ∈ R K × d          ( 2 ) v_i = \text{softmax}(W r_i), W \in R^{K \times d} \ \ \ \ \ \ \ \ (2) vi=softmax(Wri),WRK×d        (2) v i ∈ Δ K v_i \in \Delta^K viΔK 视为一种概率token,这是一种在包含K个视觉词汇的视觉词汇表上的概率分布。如果 r i r_i ri 更多地与某些模式相关,则 v i v_i vi 中对应的元素应更大。

:给定一个视觉嵌入表,我们将每个视觉词与其原型 { w i ∈ R d } i = 1 K \{w_i \in R^d\}_{i=1}^K {wiRd}i=1K 关联。为了匹配一个连续的视觉token与嵌入表中的K个视觉词,我们利用内积来计算它们的相似度值。Equation 2是 r i r_i ri 与所有视觉词之间的归一化相似度。

3 视觉嵌入表

在LLMs中,通常采用文本嵌入表将词汇表中的每个词映射到一个嵌入向量。对于以one-hot形式表示的每个文本token t i t_i ti,其嵌入 T i ∈ R d ′ T_i \in R^{d'} TiRd 是由 t i t_i ti 中非零索引指示的文本嵌入表中的行。

类似地,我们引入一个额外的视觉嵌入表,其中每个视觉词(每一行)与一个嵌入向量 e k ∈ R d ′ e_k \in R^{d'} ekRd 关联, d ′ d' d 是嵌入维度。为了使视觉和文本tokens的嵌入具有兼容的形状,我们将视觉嵌入表的维度设定为与文本嵌入表相同。

相应地,每个视觉token v i v_i vi 的嵌入可以基于概率性token推导出来:
V i = ∑ k = 1 K v i , k e k ∈ R d ′          ( 3 ) V_i = \sum_{k=1}^K v_{i,k}e_k \in R^{d'} \ \ \ \ \ \ \ \ (3) Vi=k=1Kvi,kekRd        (3)

其中 v i , k v_{i,k} vi,k 表示 v i v_i vi 的第 k 个成分。另一方面,由于 v i ∈ Δ K v_i \in \Delta_K viΔK,上述公式可以重写为
V i = E k ∼ v i [ e k ] V_i = \mathbb{E}_{k \sim v_i}[e_k] Vi=Ekvi[ek]
这是视觉词的嵌入的期望,视觉词从 v i v_i vi 中抽样。换句话说,我们假设视觉嵌入可以基于视觉块的概率token v i v_i vi 从离散的视觉嵌入表中抽样。

:考虑到视觉块 r i r_i ri 的多义性,仅从嵌入表中为其分配一个视觉词(即由 arg ⁡ max ⁡ j ∈ { 1 , … , K } v i j \arg \max_{j \in \{1, \ldots, K\}} v_{ij} argmaxj{1,,K}vij 索引)可能忽略块内包含的丰富语义。为解决这个问题,我们将视觉块与多个视觉词关联,由 v i v_i vi 中非零元素表示,这些元素代表视觉块与K个视觉词的相关性。

我们随后使用所选视觉词汇的加权组合 V i V_i Vi 作为最终的块嵌入。换句话说,基于 v i v_i vi 的值,从嵌入表中索引出多个视觉嵌入,并利用这些嵌入的加权平均作为视觉嵌入模块的最终输出。附录E中的实验验证了 v i v_i vi 的稀疏性。视觉嵌入 V i V_i Vi 既捕捉了丰富的视觉语义,同时其生成过程与文本生成过程相似。

4 Ovis的训练策略

视觉和文本嵌入组合后作为输入送入LLM。具体来说,我们将以下多模态输入嵌入序列
[ T 1 , … , T λ − 1 , V 1 , … , V n , T λ + 1 , … , T m ]          ( 4 ) [T_1, \ldots, T_{\lambda-1}, V_1, \ldots, V_n, T_{\lambda+1}, \ldots, T_m]\ \ \ \ \ \ \ \ (4) [T1,,Tλ1,V1,,Vn,Tλ+1,,Tm]        (4)输入到LLM。所有tokens不仅具有相同的维度,而且通过嵌入表以相似方式生成。LLM将输出一个文本token序列 o 1 , … , o l o_1, \ldots, o_l o1,,ol

Ovis分三阶段训练,并始终通过文本生成损失(即Ovis输出的文本tokens与真实文本之间的交叉熵)进行优化。这三个阶段的差异在于其可训练参数和训练数据的类型。

阶段1:我们冻结LLM的所有参数,以及视觉编码器 g g g 中大部分参数(一个开源的预训练ViT骨干网)。我们随机重新初始化 g g g 最后一层的参数,使用诸如COYO [7] 等视觉描述数据集训练重新初始化的参数和Ovis的投影矩阵 W W W 以及视觉嵌入表 { e k } k = 1 K \{e_k\}_{k=1}^K {ek}k=1K。对于标题数据集中的每个图像,我们构建一个训练样本,输入为“的标题:”并将其标签为“CAPTION”,其中CAPTION表示图像的标题。

阶段2:在这个阶段,我们继续训练Ovis的W,视觉嵌入表 { e k } k = 1 K \{e_k\}_{k=1}^K {ek}k=1K 以及视觉编码器 g g g 中的所有参数。LLM仍然冻结。与第一阶段使用的标题样本不同,我们利用如ShareGPT4V-Pretrain [11] 等视觉描述数据,这些数据集的训练样本结构化为描述图像的对话。

阶段3:在阶段1和阶段2的训练中赋予Ovis视觉感知能力之后,本阶段的重点是多模态指令学习。目标是使Ovis具备跟随多模态指令的能力。为此,我们解冻LLM模块,并在多模态指令数据集(如LLaVA-Finetune [47])上训练Ovis的全部参数。

总结

通过三阶段的训练策略,Ovis能够逐步获得视觉感知和跟随多模态指令的能力。这种策略既保证了模型在视觉和文本上的高效整合,又通过多模态任务不断提升模型的实际应用能力。

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

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

相关文章

WPF+MVVM案例实战(十)- 水波纹按钮实现与控件封装

文章目录 1、运行效果1、封装用户控件1、创建文件2、依赖属性实现 2、使用封装的按钮控件1.主界面引用2.按钮属性设置 3 总结 1、运行效果 1、封装用户控件 1、创建文件 打开 Wpf_Examples 项目&#xff0c;在 UserControlLib 用户控件库中创建按钮文件 WaterRipplesButton.x…

产品结构设计(五):结构设计原则

1. 产品结构设计总原则 1.1 合理选用材料 1、根据产品应用场所来选择 如果为日常消费类电子产品&#xff0c;产品材料就应选用强度好、表面容易处理、不容易氧化生锈、不容易磨伤、易成型的材料&#xff0c;如塑胶材料选用 PC、ABS、PCABS 等&#xff0c;金属材料选用不锈钢、…

一些待机电流波形特征

一、待机电流波形 最干净的待机电流波形应该只有paging&#xff0c;不过需要注意2点&#xff1a; 每个paging的间隔&#xff0c;不同网络可能不一样&#xff0c;有可能是320ms, 640ms 待机网络 paging 间隔 1分钟的耗电量 单个耗电量 单个待机电流 单个波形时长 4G 64…

你了解kafka消息队列么?

消息队列概述 一. 消息队列组件二. 消息队列通信模式2.1 点对点模式2.2 发布/订阅模式 三. 消息队列的优缺点3.1 消息队列的优点3.2 消息队列的缺点 四. 总结 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&…

uniapp使用easyinput文本框显示输入的字数和限制的字数

uniapp使用easyinput文本框显示输入的字数和限制的字数 先上效果图&#xff1a; 整体代码如下&#xff1a; <template><view class"nameInfoContent"><uni-easyinput class"uni-mt-5" suffixIcon"checkmarkempty" v-model&quo…

Linux云计算 |【第五阶段】CLOUD-DAY4

主要内容&#xff1a; Linux容器基础、安装Docker、镜像管理、容器管理、容器部署应用 一、容器介绍 容器&#xff08;Container&#xff09; 是一种轻量级的虚拟化技术&#xff0c;用于在操作系统级别隔离应用程序及其依赖项。容器允许开发者在同一台主机上运行多个独立的应…

MaskGCT,AI语音克隆大模型本地部署(Windows11),基于Python3.11,TTS,文字转语音

前几天&#xff0c;又一款非自回归的文字转语音的AI模型&#xff1a;MaskGCT&#xff0c;开放了源码&#xff0c;和同样非自回归的F5-TTS模型一样&#xff0c;MaskGCT模型也是基于10万小时数据集Emilia训练而来的&#xff0c;精通中英日韩法德6种语言的跨语种合成。数据集Emili…

《数字图像处理基础》学习03-图像的采样

在之前的学习中我已经知道了图像的分类&#xff1a;物理图像和虚拟图像。《数字图像处理基础》学习01-数字图像处理的相关基础知识_图像处理 数字-CSDN博客 目录 一&#xff0c;连续图像和离散图像的概念 二&#xff0c;图像的采样 1&#xff0c; 不同采样频率采样同一张图…

SSA-CNN-LSTM-MATT多头注意力机制多特征分类预测

SSA-CNN-LSTM-MATT多头注意力机制多特征分类预测 目录 SSA-CNN-LSTM-MATT多头注意力机制多特征分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现SSA-CNN-LSTM-MATT麻雀算法优化卷积神经网络-长短期记忆神经网络融合多头注意力机制多特征分类预测&…

ComfyUI - 视觉基础任务 检测(Detection) 和 分割(Segmentation) 的 Impact-Pack 流程 教程

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/141140498 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 在 Com…

【音视频 | ADPCM】音频编码ADPCM详细介绍及例子

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

租房市场新动力:基于Spring Boot的管理系统

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

深入理解数据链路层:以太网帧格式、MAC地址、交换机、MTU及ARP协议详解与ARP欺骗探究

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;Linux从入门到进阶 欢迎大家点赞收藏评论&#x1f60a; 目录 数据链路层 认识以太网以太网帧格式 认识 MAC 地址交换机与碰撞域的划分认识 MTUMTU 对 IP 协议的影响MTU 对 UDP 协议的影响 MTU 对…

SolidWorks 导出 URDF 中的惯性矩阵错误问题

系列文章目录 前言 一、 dsubhasish09于2021年5月23日发表评论 在装配体中定义由多个零件组成的 link 时&#xff0c;单个零件质心处各自的惯性值&#xff08;在使用相似性变换使其与关节坐标系平行后&#xff09;会直接相加&#xff0c;从而得到净惯性矩阵&#xff0c;而不是…

使用linuxdeployqt打包Qt程序问题及解决方法

dpkg: 处理归档 libmysqlclient18_5.6.25-0ubuntu1_amd64.deb (--install)时出错: 预依赖问题 - 将不安装libmysqlclient18:amd64 在处理时有错误发生: libmysqlclient18_5.6.25-0ubuntu1_amd64.deb下载libmysqlclient18/5.6.25 libmysqlclient18/5.6.25-0ubuntu1 安装 s…

如何把图片转换成pdf?这几种转换方法看了就能学会!

如何把图片转换成pdf&#xff1f;在当今这个高度数字化的世界里&#xff0c;图片文件和PDF文件无疑是我们日常生活中最常接触到的两种文件格式&#xff0c;它们各自拥有独特的特性和功能&#xff0c;为我们的工作与生活带来了诸多便利&#xff0c;图片文件&#xff0c;以其卓越…

Android Activity SingleTop启动模式使用场景

通知栏 当用户点击通知栏中的通知时,可以使用单顶启动模式来打开对应的活动,并确保只有一个实例存在。 简单集成极光推送 创建应用 获取appkey参数 切换到极光工作台 极光sdk集成 Project 根目录的主 gradle 配置 Module 的 gradle 配置 Jpush依赖配置 配置推送必须…

乐维网管平台(一):如何精准掌控 IP 管理

业网络已成为支撑业务运转的关键基础设施&#xff0c;而在企业网络管理中&#xff0c;IP 管理至关重要&#xff0c;它就像是网络秩序的守护者&#xff0c;确保网络的高效运行、安全可靠。 一、为什么企业要进行 IP 管理 1. 优化资源分配 IP 地址作为网络中的重要资源&#xf…

c++数据结构算法复习基础--7--线性表-队列-常用操作接口-复杂度分析

1、队列 特点&#xff1a;先进先出&#xff0c;后进后出 环形队列&#xff08;依赖数组实现&#xff0c;单必须实现环形&#xff09; 链式队列&#xff08;依赖链表实现&#xff09; 2、环形队列 理论 常规数组思想随着队列的不断使用&#xff0c;会出现越界 所以要将其…

拍拍贷鸿蒙版H5容器之路

背景介绍 业务背景 2024年1月18日华为宣布&#xff1a;HarmonyOS NEXT 将不再支持 Android系统&#xff0c;基于以上背景及国内信贷业务现状&#xff0c;公司决定启动借款App鸿蒙化项目。 下图是2024年6月华为HDC大会上&#xff0c;华为宣布 HarmonyOS NEXT 将面向开发者和先…