多模态大语言模型和 Apple 的 MM1

原文地址:multimodal-large-language-models-apples-mm1

2024 年 4 月 13 日

抽象是计算机科学中最关键的概念之一,具有一些最强大的影响。从简单的角度来看,抽象就是将某一事物应用于多种不同情况的能力。例如,如果你创造了一种方法,可以在工厂中成功地根据苹果的大小进行分类,那么你的解决方案也可以抽象为以同样的方式对橘子或桃子进行分类。这样,通过抽象,一个非常强大的解决方案就能从根本上影响世界的多个部分。

虽然大型语言模型(Large Language Models)在以文本作为输入时的推理能力非常出色,但最近我们已经能够对其输入进行抽象,使其能够对图像和声音进行推理。

下面这篇文章将介绍苹果公司 MM1 论文中的架构删减,以及他们在构建多模态大型语言模型(MLLM)时的研究成果。

抽象LLM型输入

大型语言模型背后的架构可以追溯到 2017 年的论文《Attention is All You Need》,其中介绍了 Transformer 架构。

本文展示了如何将人类语言转化为神经网络可以处理的标记(在该论文中,处理为不同的语言)

8

从图中可以看到,我们很早就进行了转换,将输入转换为标记(嵌入部分)。然而,只有文本数据才能被映射为标记,这并没有内在的原因。因此,该领域开始尝试将其他类型的数据映射为标记。

MM1 架构基础

9

苹果的模型有三个关键组件:视觉转换器(ViT)图像编码器、视觉语言连接器和大型语言模型。假设你已经对大型语言模型及其工作原理有了一定的了解,下面我们就来深入了解图像编码器和视觉语言连接器。

图像编码器和视觉连接器

虽然从抽象的角度来看,我们可以将文本和图像想象成简单的不同输入类型,但要使其正常工作,我们需要接受的是,我们可能必须以不同的方式处理它们,才能将它们转换成令牌形式。目前,我们有两个不同的系统来帮助我们将图像转换成 LLM 可以推理的标记:图像编码器和连接器。

首先,图像编码器负责将我们的图像转换成转换器模型可以理解的标记形式。

其次,连接器从图像编码器中获取数据,并将其转换为直接传递给大型语言模型的数据。鉴于图像编码器会返回标记,你可能会问为什么我们需要连接器。我们的想法似乎是,图像编码器在其标记中提供了太多信息,因此,为了在优化推理的同时降低成本,我们希望有选择地传递信息。

下图显示了我们正在使用的数据流。

10、

消融

机器学习中的消融研究围绕着删除和修改模型的某些部分,以了解它们对整体性能的贡献。苹果的研究围绕着不同的图像编码器训练方式、VL Connector 的不同投影仪以及不同的预训练数据展开。

图像编码器消融

在图像编码器方面,CLIP 和 AIM 模型、图像分辨率大小以及模型训练数据集都有所不同。下图显示了每种消融的结果。

11

让我们来回顾一下上面的主要部分,并解释一下它们是什么。

CLIP 是 "对比语言图像预训练"(Contrastive Language Image Pre-training)的缩写,目的是通过为文本中的事物提供名称,帮助模型学习视觉概念。如下图所示,它将图像与文本编码配对,以便模型最终将视觉标记(下图中表示为 I,文本标记为 T)连接起来。这种方法称为对比训练。

12

AIM 是自回归图像模型的缩写,通过重建损失优化算法对其进行训练。这里的目标是看变换器能否重新创建(重建)所给的图像。

13

这里的图像分辨率指的是输入转换器的像素数。例如,378 x 378 的图像分辨率意味着我们将输入该大小的矩阵,然后将其转换为嵌入式数据,再在此基础上对模型进行训练。训练数据分为 (DFN-2B)、(DFN-5B)、(DFN-5B + VeCap) 和 (ImageText-400M)。

VL 连接消融

对于 VL Connector,他们测试了使用 64 或 144 标记的图像,测试了使用 224、336 和 378 的图像分辨率,并选择了几种架构。下面我将简要介绍一下这些架构。

平均池化 "和它听起来的意思一样,取所有tokens的平均值,然后对这个平均值进行线性投影,使网格为 8x8 或 12x12。

注意力池假设图像标记应被视为来自与文本标记完全不同的群体集的样本。在这里,我们调整了每张图片输入的标记数量,在本文中称为 k 可学习查询。研究人员只考虑了 64 或 144 的 k。

卷积映射是 Honeybee 提出的一种方法,它使用 ResNet 来动态决定从图像传递到 LLM 的词块数量。这在 C-Abstractor 模块中得以实现。

14

从上面可以看出,不同的架构实际上影响不大。正如我们所猜测的那样,更高分辨率的图像和更多的令牌通过会提高所有连接器的性能,但并不显著。

这一发现表明,我们要么还没有找到更好的方法将图像编码器与 LLM 连接起来,要么这一领域根本就不是优秀模型能够脱颖而出的地方。

训练前数据消融

15

在这里,使用了 4 种不同的数据:带标题的图像、带标题的合成图像、交错图像-文本数据和纯文本数据。他们发现了 4 条经验,每条经验都有一张图表来总结性能变化。

16

首先,交错数据有助于提高少镜头和纯文本性能,而字幕数据则有助于提高零镜头性能。研究人员改变了交错的程度,下图显示了结果。正如你所看到的,在使用交错数据训练的模型上,少镜头提示的表现明显优于使用全部或无交错数据训练的模型。

17

其次,纯文本数据有助于少量推理。这里的纯文本是指训练数据包括图像示例和纯文本示例。这样做是为了确保模型既能理解人类语言,也能理解图像。将纯字幕与带文字字幕进行比较后发现,除 0 次拍摄推理外,其他所有推理都有明显改善,然而,除 TextCore 测试外,在其他所有测试中,纯交错数据的表现都优于交错加文字数据

18

然后,如果图像和文本的混合比例恰当,就能获得非常强大的性能。上图显示了交错+标题数据与纯文本数据的不同比例。由于目标是建立一个多模式模型,他们从未测试过没有图像数据时的性能。

19

接着,合成数据有助于少镜头学习。VeCap 是 "Visual-enriched Caption "的缩写,它是一种创建标题的方法,确保标题能够描述图片的关键视觉片段。反过来,想象一下,标题可以解释一张照片背后的含义,但却不解释照片中的任何元素。如果你的数据抓取器发现图片的alt-text数据很差,你通常会这样做。

这里的作者得出结论,VeCap 对少量照片的推理有 "非同小可 "的促进作用,但对质量的提高相对较小。这就对 VeCap 的成本效益提出了质疑。

研究结果

利用消融结果,创建了两种形式的 Transformer: 专家混合型和普通型。这两种模型都有一个编码器,编码器的图像为 378 x 378,仅使用 DFN-5B 数据集进行预训练。它们混合了 45% 的字幕数据、45% 的交错数据和 10% 的纯文本数据(近似于图像与文本数据 91:9 的比例)。VL Connector 有 144 个标记,他们选择了一个 C Abstractor,不过他们指出这是一个有些随意的选择。对于 LLM 本身,他们创建了一个 3B、7B 和 30B 参数模型(MoE 模型最高只能达到 7B)。下图显示了这些模型的性能。

20

有趣的是,30B 参数模型的性能与其他比它多数十亿参数的模型(LLaVA-NeXT-34B 等)相当,这表明参数大小与性能之间可能存在某种量子关系。

结论

多模态 LLM 是该领域令人兴奋的一部分。随着我们找到更好的方法将不同数据类型传输到令牌中,我们可能会为这些变压器开辟更广阔的应用领域。展望未来,我们可以考虑如何在文本描述之外输入其他感官,例如声音、气味甚至触觉。数据质量可能只会变得越来越有价值。

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

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

相关文章

如何让 PDF 书签从杂乱无序整洁到明丽清新

1、拉取书签(详细步骤看文末扩展阅读) 原状态 —— 杂乱无序 自动整理后的状态 —— 错落有致,但摩肩接踵 2、开始整理 全选自动整理后的书签,剪切 访问中英混排排版优化 - 油条工具箱 https://utils.fun/cn-en 1 粘贴 → 2 …

R语言数据探索和分析7-使用随机森林模型对中国GDP及其影响因素分析

一、研究背景和意义 国内生产总值(GDP)是宏观经济领域中最为关注的经济统计数据之一,它反映了一个国家或地区在一定时期内所创造的所有最终商品和服务的总价值。GDP的增长率不仅仅是一个国家经济健康状况的关键指标,还直接关系到…

leetCode68. 文本左右对齐

基本思路&#xff1a; leetCode68. 文本左右对齐 代码 class Solution { public:vector<string> fullJustify(vector<string>& words, int maxWidth) {vector<string> res;for(int i 0; i < words.size(); i){ // 枚举有多少个单词int j i 1; //…

【JVM】内存调优——内存泄漏、内存溢出

内存调优 什么是内存泄漏、内存泄漏&#xff1f; 内存泄漏&#xff1a;在Java中如果不再使用一个对象&#xff0c;但是该对象依然在GC ROOT的引用链上&#xff0c;这个对象就不会被垃圾回收器回收。内存溢出&#xff1a;内存的使用量超过了Java虚拟机可以分配的上限&#xff…

数字孪生不能接入数据,那还叫数字孪生吗?花架子而已

Hi&#xff0c;我是贝格前端工场&#xff0c;经常给大家分享可视化和数字孪生项目&#xff0c;就有一些老铁说这个不能接入真实数据&#xff0c;是个花架子。我就乐啦&#xff0c;不接入数据那还叫数字孪生吗&#xff1f; 数字孪生是指通过数字化技术对实体世界进行建模、仿真和…

[1702]java旅游资源网上填报系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java旅游资源网上填报系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql…

「 网络安全常用术语解读 」SBOM主流格式SWID详解

国际标准化组织&#xff08;ISO&#xff09;和国际电工委员会&#xff08;International Electrotechnical Commission&#xff0c;IEC&#xff09;发布了ISO/IEC 19770-2软件标识&#xff08;Software Identification&#xff0c;SWID&#xff09;标签标准&#xff0c;该标准定…

数据结构与算法---线性表

线性表 1.顺序表 需求分析 /*创建顺序表具体功能&#xff1a;初始化顺序表销毁顺序表获取顺序表元素个数输出顺序表中的内容自动扩容增 --- 插入数据&#xff08;包含了尾部添加功能&#xff09;删 --- 删除数据&#xff08;包含了尾部删除功能&#xff09;改 --- 修改数据查…

(ARM)ORACLE JDK 22 的下载安装及环境变量的配置

目录 获取JDK 安装JDK 配置JAVA环境变量 其他补充&#xff1a;JDK 22的新特征 1. 语法 2. 库 3. 性能 4. 工具 在今年的3月份&#xff0c;ORACLE 更新了的JDK 发行版 JDK 22&#xff0c;作为了一位ORACLE Primavera系列产品的研究者&#xff0c;其实对JDK的迭代完全不感…

基于.NET WinForms 数据的CURD实现

开发工具 VS 2022 C#&#xff0c;数据库MS SQL SERVER 2019 1.WinForms界面 2.使用SqlDataApater DataSet DataGridView 读取数据 private void ReadData() {//数据库连接串string strConn "Data Source127.0.0.1;Initial CatalogTEST;Persist Security InfoTrue;Us…

Vue 组件通信

组件通信 组件与组件之间的数据传递 组件的数据是独立的&#xff0c;无法直接访问其他组件的数据。通过组件通信&#xff0c;可以访问其他组件的数据。 组件关系 父子关系非父子关系 组件通信解决方案 父子关系 父->子 父组件通过props将数据传递给子组件 App.vue …

模式识别作业:颜色算子的三种阈值分割算法

一、引言&#xff1a; 在图像处理中&#xff0c;我们往往需要提取图像的一些关键信息&#xff0c;比如本篇文章的内容——提取颜色&#xff0c;然而当我们需要提取某一种颜色时&#xff0c;无论图像余下的部分如何“丰富多彩”&#xff0c;他们都不再重要&#xff0c;需要被忽…

IDEA2024版本控制台乱码怎么解决?

在使用最新版本的IDEA时&#xff0c;可能会遇到控制台输出乱码问题&#xff1f; 在网上找了很多办法&#xff0c;修改了IDEA的vmoptions文件也没有用,最后发现原来是要修改这里 Setting>>Build&#xff0c;Execution,Deployment>>Runnr中的VM Options配置&#xf…

Vue进阶之Vue项目实战(一)

Vue项目实战 项目搭建初始化eslint版本约束版本约束eslint配置 stylelintcspellcz-githusky给拦截举个例子 zx 项目搭建 node版本&#xff1a;20.11.1 pnpm版本&#xff1a;9.0.4 初始化 vue3最新的脚手架 pnpm create vite byelide-demo --template vue-ts pnpm i pnpm dev…

2024年 Java 面试八股文——Mybatis篇

目录 1. 什么是Mybatis&#xff1f; 2. 说说Mybatis的优缺点 3. Xml映射文件中&#xff0c;都有哪些标签 4. #{}和&{}有什么区别 5. Mybatis是如何进行分页的,分页插件的原理是什么 6. Mybatis是如何将sql执行结果封装为目标对象并返回的&#xff1f; 7. Mybatis是怎…

【副本向】Lua副本逻辑

副本生命周期 OnCopySceneTick() 子线程每次心跳调用 --副本心跳 function x3323_OnCopySceneTick(elapse)if x3323_g_IsPlayerEnter 0 thenreturn; -- 如果没人进入&#xff0c;则函数直接返回endif x3323_g_GameOver 1 thenif x3323_g_EndTick > 0 thenx3323_CountDown…

简化Transformer模型,以更少的参数实现更快的训练速度

在深度学习领域&#xff0c;Transformer模型因其卓越的性能而广受欢迎&#xff0c;但其复杂的架构也带来了训练时间长和参数数量多的挑战。ETH Zurich的研究人员Bobby He和Thomas Hofmann在最新研究中提出了一种简化的Transformer模型&#xff0c;通过移除一些非必要的组件&…

STM32——GPIO篇

技术笔记&#xff01; 1. 什么是GPIO&#xff1f; GPIO是通用输入输出端口&#xff08;General-purpose input/output&#xff09;的英文简写&#xff0c;是所有的微控制器必不可少的外设之一&#xff0c;可以由STM32直接驱动从而实现与外部设备通信、控制以及采集和捕获的功…

wordpress子比主题美化-为图文列表封面添加动态缩略图特效 多种效果演示

wordpress子比主题-为图文列表文章封面添加动态缩略图特效 给自己子比主题加一个列表文章封面添加动态缩略图 直接复制以下代码&#xff0c;添加到主题自定义CSS代码中即可&#xff0c;下图为效果演示 wordpress子比主题-为图文列表文章封面添加动态缩略图特效 给自己子比主题…

MySQL①——数据库与表格的创建

今日任务&#xff1a; 创建一个名为“db_classes”的数据库 创建一行名为“db_hero”的表 将四大名著中的常见人物插入这个英雄表 数据库的创建与删除 create 命令&#xff08;创建&#xff09;&#xff1a; create database 数据库名&#xff1b;#参数默认create database …