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

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

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

相关文章

本地大语言模型LLM的高效运行专家 | Ollama

Ollama简介 Ollama是一个开源的大型语言模型服务工具,它帮助用户快速在本地运行大模型。通过简单的安装指令,用户可以执行一条命令就在本地运行开源大型语言模型,如Llama 2。Ollama极大地简化了在Docker容器内部署和管理LLM的过程&#xff0…

JAVA面试专题-微服务篇

Spring cloud Spring Cloud 5大组件有哪些 注册中心/配置中心:nacos 负载均衡:Ribbon 服务远程调用:Feign 服务保护:sentinel 服务网关:Gateway 微服务注册和发现 nacos和eureka的区别 负载均衡 微服务向Ribbon发送…

基于Spring Boot的校园疫情防控系统设计与实现

基于Spring Boot的校园疫情防控系统设计与实现 开发语言:Java框架:springbootJDK版本:JDK1.8数据库工具:Navicat11开发软件:eclipse/myeclipse/idea 系统部分展示 管理员登录首页界面图,管理员进入校园疫…

Android --- 消息机制与异步任务

在Android中,只有在UIThread(主线程)中才能直接更新界面, 在Android中,长时间的工作联网都需要在workThread(分线程)中执行 在分线程中获取服务器数据后,需要立即到主线程中去更新UI来显示数据, 所以,如…

手撕spring框架(2)

相关系列 java中spring底层核心原理解析(1)-CSDN博客 java中spring底层核心原理解析(2)-CSDN博客 手撕spring框架(1)-CSDN博客 手撕spring框架(3)-CSDN博客 手撕spring框架(4)-CSDN博…

用龙梦迷你电脑福珑2.0做web服务器

用龙梦迷你电脑福珑2.0上做web服务器是可行的。已将一个网站源码放到该电脑,在局域网里可以访问网站网页。另外通过在同一局域网内的一台windows10电脑上安装花生壳软件,也可以在外网访问该内网服务器网站网页。该电脑的操作系统属于LAMP。在该电脑上安装…

Qt Creator导入第三方so库和jar包——Qt For Android

前言 之前了解了在Android Studio下导入so库和jar包,现在实现如何在Qt上导入so库和jar包。 实现 下面是我安卓开发(需调用安卓接口的代码)的目录(图1),此目录结构和原生态环境(Android Studi…

详细分析Java中的脱敏注解(附Demo)

目录 前言1. 基本知识2. 核心逻辑3. Demo4. 模版 前言 对于隐私信息,需要做特殊处理,比如身份证或者手机号等 对于Java的相关知识推荐阅读:java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全) 1. 基本知…

软件定义汽车落地的五大关键要素

1、架构升级 1.1 软件架构:分层解耦、服务化、API 接口标准化 随着企业向软件定义汽车开发方法的转变,软件架构也需要同步进行升级,引入面向服务的架构(Service-Oriented Architecture,简称 SOA)方法论。…

ThreeJS:响应式画布与全屏控制

响应式画布 响应式画布:在用户缩放浏览器窗口时,为便于动态更新画布尺寸与宽高比例,需要通过监听resize事件,来实现响应式画布。 window.onresize function () {//TODO:重置渲染器宽高比renderer.setSize(window.innerWidth, wi…

为人处事电影解说,全新升级瀚海跑道一分钟一条视频,全平台可推广,轻轻松松日入1000

自古以来,我国流行的一种现象是,大多数人都会与领导或上司打交道。由于某些话题不宜公开讨论,因此出现了许多含蓄的表达方式。随着年龄的增长,人们的态度也发生了变化,从最初的轻视到现在的重视。 下 载 地 址&#…

VG做mirror引起的块偏移

事件起因 Oracle10.2环境 Aix操作系统使用aix的lvm技术。制作vg的mirror。以此来替换掉老的存储。 做mirror前,数据库已完全关闭 故障现象 在启动数据库时,发现IO错误。该系统的spfile,ctl,dbf均是用lv做的裸设备。其中dbf是使…

cmake的使用方法: 编译生成库文件

一. 简介 前面文章学习了针对单个 .c文件,cmake 工具是如何编译的? 针对包含多个 .c文件,cmake工具又是如何编译的?文章如下: cmake的使用方法: 单个源文件的编译-CSDN博客 cmake的使用方法: 多个源文件的编译-CS…

Java入门-final关键字

final关键字 修饰基本类型 变量为只读,不能修改变量的内容。 final int SIZE 3;修饰引用类型 引用的对象不能改变,但是对象的内容可以修改。 final Car c new Car( );c.setColor("红色");修饰类的属性 类的属性不能被修改。 第一种方式&…

Linux 进程间通信之命名管道

💓博主CSDN主页:麻辣韭菜💓   ⏩专栏分类:Linux知识分享⏪   🚚代码仓库:Linux代码练习🚚   🌹关注我🫵带你学习更多Linux知识   🔝 目录 前言 命名管道 创建一个命名管道 …

Leetcode—976. 三角形的最大周长【简单】(ranges::sort函数)

2024每日刷题&#xff08;122&#xff09; Leetcode—976. 三角形的最大周长 实现代码 class Solution { public:int largestPerimeter(vector<int>& nums) {ranges::sort(nums);for(int i nums.size() - 1; i > 1; i--) {if(nums[i - 1] nums[i - 2] > nu…

洛谷 P1377 [TJOI2011]:树的序 ← 笛卡尔树

【题目来源】https://www.luogu.com.cn/problem/P1377【题目描述】 众所周知&#xff0c;二叉查找树的形态和键值的插入顺序密切相关。准确的讲&#xff1a; 1.空树中加入一个键值 k&#xff0c;则变为只有一个结点的二叉查找树&#xff0c;此结点的键值即为 k。 2.在非空树中插…

智能物联网与Web3:连接未来数字生活的桥梁

随着科技的不断进步&#xff0c;智能物联网&#xff08;IoT&#xff09;和Web3技术正成为数字化时代的关键驱动力。智能物联网将各种物理设备连接到互联网&#xff0c;使其能够感知环境、收集数据并与其他设备通信&#xff0c;而Web3技术则以去中心化、安全性和透明性为核心&am…

Linux开发板 FTP 服务器移植与搭建

VSFTPD&#xff08;Very Secure FTP Daemon&#xff09;是一个安全、稳定且快速的FTP服务器软件&#xff0c;广泛用于Unix和Linux操作系统。它以其轻量级、高效和易于配置而受到赞誉。VSFTPD不仅支持标准的FTP命令和操作&#xff0c;还提供了额外的安全特性&#xff0c;如匿名F…

Python日志记录库之logbook使用详解

概要 在软件开发和运维中,日志记录是一项至关重要的任务。Python 的 Logbook 库是一个强大而灵活的日志记录工具,提供了丰富的功能和易用的接口。本文将深入探讨 Logbook 库的特性、用法,并通过丰富的示例代码展示其在实际项目中的应用。 Logbook 简介 Logbook 是一个为 P…