多模态AnyGPT——整合图像、语音和文本多模态大规模语言模型算法原理与实践

概述

大规模语言模型在理解和生成人类语言方面具有非凡的能力,但迄今为止,它们的能力主要局限于文本处理。然而,现实世界是一个多模式的环境,信息通过视觉、听觉和触觉等多种感官进行交换。融入这种多样性是开发下一代系统的主要目标。具体来说,多模态编码器的加入有望使大规模语言模型能够处理不同模式的信息,并利用其先进的文本处理能力生成一致的响应。然而,这种方法无法产生多模态输出。

Emu (Sun et al., 2023b)、SEED-LaMA (Ge et al., 2023b) 和 SpeechGPT (Zhang et al., 2023a)等开创性工作在实现语言模型中的多模态理解和生成方面取得了重大进展,但这些但这些模型只集成了单一的非文本模态,如图像或音频。虽然将文本与一种额外的模态对齐相对容易,但将多种模态(N ≥ 3)整合到一个框架中并实现它们之间的双向一致性则是一个更大的挑战。

为了应对这一挑战,本文开发了 “AnyGPT”。这是一种新型的多模态大规模语言模型,带有一个多模态标记器,可将图像和语音等原始数据转换为离散的语义标记。这种方法允许大规模语言模型在语义层面以统一的方式执行识别、理解、推理和生成。此外,该模型还可处理多模态输入和输出的任何组合,实验结果表明,其零点性能可与专用模型相媲美。

本文还建立了一个新的以文本为中心的多模态对齐数据集。由于自然语言是最复杂的语义表示模式,而且存在于大多数多模态数据集中,因此该数据集旨在以文本为桥梁,实现所有模态之间的相互对齐。通过这一举措,AnyGPT 促进了多模态对话,并证明了使用离散表示统一多种模态的可行性。

本文提出了一种新的多模态大规模语言模型 AnyGPT,它可以理解和生成多种模态,并开发了一个数据集 AnyInstruct-108k,该数据集遵循多模态交织指令,并使用离散表示法有效地统一了多种模态。在演示中,我们看到了这样做的可能性。这些发展为下一代多模态系统的开发开辟了新的可能性。

AnyGPT

AnyGPT 为每种图像、语音和音乐模式都引入了专用的标记器,从而创建了一种底层技术,使 AnyGPT 的应用更加多样化。

首先,采用 SEED 标记器对图像进行标记。该标记器将 224 x 224 RGB 图像作为输入,ViT 编码器将图像编码为 16 x 16 补丁,然后因果 Q 形成器将补丁特征转换为 32 个因果嵌入。用于量化这些嵌入,并通过 MLP 将其解码为视觉代码。这一过程最终由 UNet 解码器还原为原始图像。这种先进的标记器可以精确标记图像,并将其与 unCLIP 稳定扩散的潜空间对齐。

然后使用编码器-解码器架构 SpeechTokenizer 对音频数据进行标记化。该系统使用分层量化器将音频序列压缩成离散矩阵,同时捕捉语义和语外信息。在 Commonvoice 和 Librispeech 数据集上进行预训练后,标记器能够有效地对语义和语外信息进行建模,并与语音克隆模型结合使用,生成逼真的语音。

然后,Encodec 被用作音乐数据的专用标记器。这种卷积自动编码器使用残差向量量化技术将音乐曲目量化到潜在空间;Encodec 在超过 20,000 首曲目上进行了预先训练,以高分辨率处理音乐数据,并使用四个量化器捕捉音乐的语义元素。标记器与语言模型一起预测音乐片段,彻底改变了音乐的创作和生成。

AnyGPT 大幅扩展了其语言模型的词汇量,使其能够理解和生成多模态数据,不仅包括文本,还包括图像和音频。这种新方法引入了针对每种模式的标记,并相应地扩展了模型的嵌入层和预测层。这些新添加的参数首先被随机初始化,然后进行训练,以整合来自所有模态的标记,形成一个新的词汇表,从而实现共享表征空间的一致性。这种方法使模型能够无缝整合不同类型数据的知识和信息。

为了有效处理多模态数据,AnyGPT 为每种模态配备了专用的标记器,用于将数据转换为离散的标记序列。转换后的数据通过损失函数预测下一个标记,用于训练模型。通过这种一致的学习方法,模型获得了理解和生成所有类型数据的能力,包括文本、图像和音频。主干是 LLaMA-2 7B 模型,该模型已在一个大型文本标记数据集上进行了预训练,并针对新词汇进行了微调。

此外,生成高分辨率图像和高质量音频数据尤其具有挑战性,因为需要处理大量信息。为了高效处理长序列,AnyGPT 采用了两阶段框架。这种方法首先处理语义层面的信息,然后利用这些信息生成高保真多模态内容。

此外,对于视觉内容,使用扩散模型从 SEED 标记生成高质量图像。对于音频,则采用非自回归 SoundStorm 模型从语义标记生成声音标记,然后将其转换为原始音频数据。这一过程能够从短短三秒的音频提示中再现任何说话者的声音。音乐生成使用 Encodec 标记来过滤人类感知不到的细节,并将其重构为高质量的音频数据

因此,AnyGPT 采用了创新方法来处理复杂的多模态数据并生成高质量的内容。这些技术能够深入理解和生成文本、图像和音频模式。

AnyInstruct-108k

AnyGPT 预训练数据集的分布如下图所示。该数据集根据标记数量进行了划分。内侧部分显示了模式,中间部分显示了数据类型的详细信息,外侧部分显示了各个数据集。

为了实现不同信息模态的无缝生成,目前正在开发以文本为中心的双模态数据集,精心连接不同的模态。以文本为关键,目的是通过语言模型整合图像和音频等不同模式,并使所有这些模式相互协调。

为了便于比较来自不同模式的数据,我们采用了基于标记数量的量化方法。无论数据类型如何,这种方法都能在一致的基础上对数据量进行比较。

在图像和文本方面,使用了从 LAION-2B、LAION-COCO、LAION-Aesthetics 和 JourneyDB 收集的图像-文本对。这些数据集经过精心挑选,以提高图像和文本质量,从而形成高质量的语料库。此外,我们还添加了 LAION-Aesthetics 的一个子集和 JourneyDB 的一个合成数据集,以提高图像生成的质量。我们还加入了图像和文本交叉的数据,以确保模型能在不同模式下有效工作。

在 "语音与文本 "方面,收集了大型数据集,如 Gigaspeech、Common Voice 和多语言 LibriSpeech (MLS),用于英语自动语音识别 (ASR)。这些数据集是从在线平台、众包和有声读物中收集的 57,000 小时的口语文本对,涵盖了广泛的说话者、领域和环境。

音乐与文本》从互联网上收集了 100 多万个音乐视频,并通过 Spotify API 对歌曲和视频标题进行了匹配。收集到的元数据包括视频标题、描述、关键词、播放列表名称和 Spotify 歌词,并以 JSON 格式输入到 GPT-4 中。字幕。这样就能有效地为大量音乐音频提供高质量的字幕,并最大限度地减少数据集中的错误信息。

此外,有效的人机交互应允许以各种交叉模式交换信息。然而,对话中模式数量的增加大大增加了数据收集过程的复杂性。目前,还没有包含两种以上模式的大型指示性数据集。这是开发能够管理多种交织模式对话的综合模型的主要制约因素�

为了克服这一局限性,本文从最近的数据合成研究(Wang 等人,2022 年;Wu 等人,2023 年)中汲取灵感,利用生成模型建立了一个由 108k 多轮对话样本组成的数据集。通过精心策划,每个合成对话都整合了多种交叉模式,如文本、语音、图像和音乐。数据合成过程如下图所示。

通过这种方式,可以建立连接不同模态的预训练数据集,为整合各种信息开辟新的可能性。

试验

本文评估了基于预训练的 AnyGPT 的基本性能,涵盖所有模态的多模态理解和生成任务。评估旨在测试预学习过程中不同模态之间的一致性。具体来说,每种模态都测试了文本到 X 和 X 到文本的任务。在这里,X 适用于图像、音乐和音频。

为了模拟真实世界的场景,所有的评估都是零次测试。这种严格的评估设置要求模型能够泛化到未知的测试分布,并通过不同的模态展示了 AnyGPT 的通用能力。评估结果表明,AnyGPT 作为一种通用的多模态语言模型,在各种多模态理解和生成任务中表现出色。

AnyGPT 的图像理解性能在图像字幕任务中进行了评估。下表列出了比较结果,使用的是 MS-COCO 2014 标题基准(Lin 等人,2014 年),并根据现有研究(Li 等人,2023 年;Tang 等人,2023 年b)使用了 Karpathy 细分测试集。

文本到图像图像生成任务的结果如下表所示。为了与现有研究(Koh 等人,2023;Ge 等人,2023b;Sun 等人,2023a)保持一致,从 MS-COCO 验证集中随机选取了 30 000 幅图像,并使用 CLIPscore 作为评估指标。该指标基于 CLIP-ViTL(Radford 等人,2021 年)计算生成的图像与其对应的实际图像标题之间的相似度得分。

我们还通过计算 LibriSpeech 数据集(Panayotov et al.vec 2.0 和 Whisper Large V2 作为基线,不过 Wav2vec 2.0 是用 60,000 小时的语音进行预训练,并用 LibriSpeech 进行微调的,而 Whisper Large V2 则是在零拍摄设置下进行评估的、而 Whisper Large V2 则是在零拍摄设置下进行评估的,使用 680,000 小时的语音进行训练。结果如下表所示。

此外,还在 VCTK 数据集上进行了零镜头文本到语音(TTS)评估。结果如下表所示。TTS 系统根据说话人相似度和词错误率 (WER) 进行评估。这里的 WER 侧重于语音质量。

MusicCaps 基准(Agostinelli 等人,2023 年)用于评估 AnyGPT 在音乐理解和生成任务中的表现。CLAPscore(Wu 等人,2022 年;Huang 等人,2023 年)被用作客观测量指标。它衡量生成的音乐与文本描述之间的相似度。

在对音乐字幕进行评估时发现,现有的客观测量方法在反映音乐字幕任务的表现方面能力有限。音乐的多样性和主观性会引起每个人的不同看法。只有某些音乐流派和乐器具有易于识别的显著特征。最近的研究(Gardner 等人,2023 年)对这一问题进行了探讨,但它仍然是一个难以解决的问题。为了确保评估的客观性,我们计算并比较了<音乐、实际标题>和<音乐、生成标题>对的 CLAPscores。这些分数是整个测试集的平均值。

总结

AnyGPT的核心在于使用离散表示法,可以在不改变现有大规模语言模型的框架和训练方法的情况下毫不费力地纳入新的模态。AnyGPT 的核心在于使用离散表示法,可以在不改变现有大规模语言模型的框架和学习方法的情况下毫不费力地纳入新的模式。这就赋予了模型学习新语言的灵活性。

为了使 AnyGPT 能够熟练处理不同的模式,我们还开发了一个多模式指令数据集 AnyInstruct-108k。这是一个开创性的大规模数据集,包含涉及多种模式的多轮对话。

此外,实验结果表明,AnyGPT 在不同的跨模态任务中取得了显著的成果,并有能力在单一语言模型中高效、便捷地统一具有不同离散表征的模态。AnyGPT 的引入为语音、图像、文本等不同信息源的整合开辟了新途径、AnyGPT 为整合语音、图像、文本和音乐等不同信息源开辟了新途径,有望开发出更加丰富的多模态应用。

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

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

相关文章

高效求解最长回文子序列:动态规划方法与C语言实现

高效求解最长回文子序列&#xff1a;动态规划方法与C语言实现 问题描述解决方案伪代码C代码示例算法分析进一步讨论 在计算机科学中&#xff0c;回文是一种有趣的字符串&#xff0c;它在正序和逆序下是相同的。例如&#xff0c;“civic”、"racecar"和"aibohpho…

解决Qt中文乱码

解决Qt中文乱码 编程环境解决方法设置编辑器的文件编码每个源文件中增加设置增加转码代码有中文的源文件添加UTF-8 BOM 编程环境 WindowsQCreatorQtMSVC 解决方法 设置编辑器的文件编码 项目->Project Settings->编辑器->文件编码&#xff1a; 1.设置默认编码为&a…

吴恩达机器学习:均值聚类法(K-means Clustering)

在本练习中&#xff0c;您将实现K-means算法并将其用于图像压缩。 您将从一个样本数据集开始&#xff0c;该数据集将帮助您直观地了解K-means算法的工作原理。之后&#xff0c;您将使用K-means算法进行图像压缩&#xff0c;将图像中出现的颜色数量减少到该图像中最常见的颜色。…

树--排序二叉树的删除

一、二叉排序树的删除 二叉排序树的删除情况比较复杂&#xff0c;有以下三种情况需要考虑。 删除叶子节点 &#xff08;比如&#xff1a;2,5,9,10&#xff09;删除只有一个子树的节点&#xff08;比如&#xff1a;1&#xff09;删除有两个子树的节点 &#xff08;比如&#x…

【测试思考】当我给互联网姐妹解读电商大促规则

20年初&#xff0c;疫情开始&#xff0c;我和同事好不容易回家过年了&#xff0c;但是无法返沪&#xff0c;只能远程上班。 远程上班的效率比我想象的高很多&#xff0c;上班时间也比我想象的拉长很多&#xff0c;抛开这些扯远了&#xff0c;我们当时在做一个优惠券的项目。 下…

java学习——消息队列MQ

上一篇传送门&#xff1a;点我 目前只学习了RabbitMQ&#xff0c;后续学习了其他MQ后会继续补充。 MQ有了解过吗&#xff1f;说说什么是MQ&#xff1f; MQ是Message Queue的缩写&#xff0c;也就是消息队列的意思。它是一种应用程序对应用程序的通信方法&#xff0c;使得应用…

【解决】Spring Boot创建项目常见问题

&#x1f3a5; 个人主页&#xff1a;Dikz12&#x1f525;个人专栏&#xff1a;Spring学习之路&#x1f4d5;格言&#xff1a;吾愚多不敏&#xff0c;而愿加学欢迎大家&#x1f44d;点赞✍评论⭐收藏 目录 idea无maven选项 无效发行版17 类⽂件具有错误的版本 61.0, 应为 …

基于PyAutoGUI图片定位的自动化截图工具--完成了

1、计划 压测完成后需要编写性能测试报告&#xff0c;报告中所需数据截图较多&#xff0c;使用自动化操作方便快捷&#xff0c;就编写一个界面工具以便后续复用。 基于PyAutoGUI图片定位的自动化截图工具–jmeter部分 基于PyAutoGUI图片定位的自动化截图工具–jmeter部分&#…

js纯前端实现语音播报,朗读功能(2024-04-15)

实现语音播报要有两个原生API 分别是【window.speechSynthesis】【SpeechSynthesisUtterance】 项目代码 // 执行函数 initVoice({text: 项目介绍,vol: 1,rate: 1 })// 函数 export function initVoice(config) {window.speechSynthesis.cancel();//播报前建议调用取消的函数…

HCIP【ospf综合实验】

目录 实验要求&#xff1a; 实验拓扑图&#xff1a; 实验思路&#xff1a; 实验步骤&#xff1a; 一、划分网段 二、配置IP地址 三、搞通私网和公网 &#xff08;1&#xff09;先搞通私网&#xff08;基于OSPF协议&#xff0c;在各个路由器上进行网段的宣告&#xff0c…

使用icpc tool进行滚榜操作

前言 参加ACM的同学都知道&#xff0c;比赛非常有趣的环节就是赛后的滚榜环节&#xff0c;所以为了一个比赛的完整性&#xff0c;自己办比赛时也想要加入滚榜的操作&#xff0c;经过一段时间的研究学习&#xff0c;已经可以将滚榜程序与domjudege程序成功完成融合&#xff0c;…

BypassUAC漏洞挖掘和代码集成

什么是UAC UAC是UserAccountControl的缩写&#xff0c;即用户帐户控制。是Windows操作系统中的一种安全特性&#xff0c;旨在保护计算机不被未经授权的应用程序和操作所破坏。UAC通过提示用户是否允许某个应用程序或操作修改计算机的设置或访问敏感数据&#xff0c;来帮助用户…

AntDesign震撼发布!阿里企业级设计体系引领行业风向!

企业级产品设计系统Antdesign是蚂蚁集团经过大量项目实践和总结&#xff0c;逐步打磨出来的产品。随着近两年b端产品的逐渐白热化&#xff0c;越来越多的用户对更好的用户体验有了进一步的要求。 作为国内研发团队量身定制的在线协作工具&#xff0c;设计师可以直接预览并在即…

C语言 | Leetcode C语言题解之第25题K个一组翻转链表

题目&#xff1a; 题解&#xff1a; /* 定义保存两个地址的结构体* 用来保存反转后结果的头节点和尾节点*/ typedef struct {struct ListNode* head; struct ListNode* tail; } TwoAddress; // 反转中间链表 TwoAddress* reverse(struct ListNode* head){struct ListNode* pr…

Java IO流-字节流

简介 IO流的输入与输出&#xff0c;都在站在内存的角度来看的&#xff0c;因为毕竟是和内促你打交道的嘛&#xff01; 分类 IO流是可以根据方向&#xff0c;或者最小单位进行划分的 上述两两结合一下&#xff0c;就得到四种大的分类 IO流的继承体系 字节输入流InputStream 创建…

邮件群发系统如何确保效率?怎么评估性能?

邮件群发系统构建方法&#xff1f;邮件群发系统有哪些关键功能&#xff1f; 如何确保邮件群发系统的效率&#xff0c;以及如何评估其性能&#xff0c;却成为摆在众多使用者面前的一大问题。AokSend将围绕这两个方面展开讨论&#xff0c;帮助读者更好地理解和应用邮件群发系统。…

链表OJ1——删除链表中等于给定值 val 的所有节点

题目 力扣OJ链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 解法 我们来看看这个题目啊&#xff0c;怎么做呢&#xff1f; 有两种解法 三指针法 我们完全可以定义三个指针来进行这个删除操作 假设我们要移除的是2 这样子就完成了 特殊情况 开头——假设我们…

【学习】黑盒测试用例设计方法都有哪些

在软件测试中&#xff0c;黑盒测试是一种重要的测试方法&#xff0c;它专注于软件的外部行为&#xff0c;而不关心其内部结构和实现。黑盒测试的目标是确保软件的功能符合需求规格说明书中的要求。为了有效地进行黑盒测试&#xff0c;需要设计合理的测试用例。本文将详细介绍黑…

java:多线程中的死锁

多线程:死锁 当多个线程互相争抢资源导致都在互相等待资源的僵局时,如果没有外力,将会一直僵持下去,这就是死锁. 就像两个人分一双筷子,如果一人拿到一根筷子,都在等待对方手里的那根,将没有人能完成吃饭的任务. 死锁的必要条件 1,互斥 即资源只能被一个线程调用 2,不可剥…

idea 卡怎么办

设置内存大小 清缓存重启 idea显示内存全用情况 右下角