译者序
最近微软新出的 Office Copilot 吸足了眼球,我比较感兴趣是咋实现的,感觉实现思路应该和 visual chatgpt 类似:做一个编排引擎、把 LLM 和各种系统集成到一起。
既然 Office Copilot 没论文,那就仔细读一下 visual chatgpt 的论文好了。
论文地址: https://arxiv.org/abs/2303.04671
注: 本文由 gpt 3.5 翻译, 我负责帮他截图、复制粘贴、排版。
Abstract
ChatGPT因其出色的对话能力和跨领域推理能力而吸引了跨学科的关注。然而,由于ChatGPT是使用自然语言进行训练的,因此目前无法处理或生成来自视觉世界的图像。同时,虽然视觉基础模型(例如视觉变换器或稳定扩散)展示了出色的视觉理解和生成能力,但它们仅专注于具有一轮固定输入和输出的特定任务。为此,我们构建了一个名为Visual ChatGPT的系统,该系统整合了不同的视觉基础模型,使用户能够通过以下方式与ChatGPT进行交互:1)发送和接收语言和图像;2)提供复杂的视觉问题或视觉编辑指令,需要多个AI模型的多步协作;3)提供反馈并要求纠正结果。我们设计了一系列提示,将视觉模型信息注入ChatGPT中,考虑到具有多个输入/输出的模型和需要视觉反馈的模型。实验证明,Visual ChatGPT打开了通过视觉基础模型研究ChatGPT的视觉角色的大门。我们的系统公开在https://github.com/microsoft/visual-chatgpt
1. Introduction
近年来,大型语言模型(LLMs)的发展取得了令人惊人的进展,例如T5 [32]、BLOOM [36]和GPT-3 [5]。其中最重要的突破之一是ChatGPT,它是建立在Instruct-GPT [29]之上的,经过专门的训练以以真正对话的方式与用户进行交互,因此能够维护当前对话的上下文,处理后续问题,并纠正自己产生的答案。
尽管功能强大,ChatGPT在处理视觉信息方面受到限制,因为它是使用单一语言模态进行训练的,而视觉基础模型(VFMs)已经显示出在计算机视觉方面的巨大潜力,它们能够理解和生成复杂的图像。例如,BLIP模型 [22]是理解并提供图像描述的专家。Stable Diffusion [35]则是在基于文本提示的情况下合成图像的专家。但是,由于任务规范的特性,要求固定的输入-输出格式使得VFMs在人机交互中比对话语言模型不够灵活。
我们能否建立一个像ChatGPT一样支持图像理解和生成的系统呢?一个直观的想法是训练一个多模态对话模型。然而,建立这样的系统将消耗大量的数据和计算资源。此外,另一个挑战是,如果我们想要将超出语言和图像的模态,如视频或声音,融入进来,那么每次涉及新模态或功能时都需要训练一个全新的多模态模型吗?
我们提出了一种名为Visual ChatGPT的系统来回答上述问题。我们不是从头开始训练一个新的多模态ChatGPT,而是直接基于ChatGPT构建Visual ChatGPT,并将各种VFMs(Visual Foundation Models)纳入其中。为了弥补ChatGPT和这些VFMs之间的差距,我们提出了一个Prompt Manager,支持以下功能:1)明确告诉ChatGPT每个VFM的能力并指定输入输出格式;2)将不同的视觉信息(如png图像、深度图像和掩码矩阵)转换为语言格式,以帮助ChatGPT理解;3)处理不同的VFMs的历史记录、优先级和冲突。在Prompt Manager的帮助下,ChatGPT可以利用这些VFMs,并以迭代的方式接收它们的反馈,直到满足用户的要求或达到结束条件。
如图1所示,用户上传了一张黄色花朵的图片,并输入了一个复杂的语言指令“请生成一朵基于预测深度的红色花朵,然后让它像卡通一样,一步一步地完成”。在Prompt Manager的帮助下,Visual ChatGPT开始执行相关的Visual Foundation Models。在这种情况下,它首先应用深度估计模型来检测深度信息,然后利用深度到图像模型生成带有深度信息的红色花的图像,最后利用基于Stable Diffusion模型的样式转移VFM将此图像的风格变成卡通风格。在上述流程中,Prompt Manager充当ChatGPT的调度程序,提供视觉格式的类型并记录信息转换的过程。最终,当Visual ChatGPT从Prompt Manager获取到“卡通”的提示时,它将结束执行流程并显示最终结果。
总之,我们的贡献如下:
• 我们提出了Visual ChatGPT,打开了将ChatGPT和Visual Foundation Models结合起来处理复杂视觉任务的大门;
• 我们设计了一个Prompt Manager,其中涉及22种不同的VFMs,并定义它们之间的内部相关性以实现更好的交互和组合;
• 进行了大量的零样本实验,并展示了丰富的案例,以验证Visual ChatGPT的理解和生成能力。
2. Related Works
2.1. Natural Language and Vision
在各种模态(声音、视觉、视频等)的环绕下,语言和视觉是我们生活中传递信息的两种主要媒介。自然语言和视觉之间有天然的联系,大多数问题都需要同时对两个流进行联合建模才能产生满意的结果[15, 26, 48],例如视觉问答(VQA)[2]需要将一张图片和一个相应的问题作为输入,并根据给定图片中的信息生成一个答案。由于像InstructGPT[29]这样的大型语言模型(LLM)取得了成功,人们可以轻松地与模型进行交互或以自然语言格式获得反馈,但这些LLM无法处理视觉信息。为了将视觉处理能力融入这些LLM中,需要解决几个挑战,因为训练大型语言模型或视觉模型都很困难,并且需要精心设计的说明[4、55、21]和繁琐的转换[30、52]来连接不同的模态。虽然已经有一些工作探索了利用预训练的LLM来提高视觉语言(VL)任务的性能,但这些方法支持几个特定的VL任务(从语言到版本或从版本到语言),并需要有标注的数据进行训练[38、1、22]
2.2. VL任务的预训练模型
为了更好地提取视觉特征,早期的工作采用了冻结的预训练图像编码器[9、25、54],而最近的LiT [52]则应用了CLIP预训练[30]和冻结的ViT模型[51]。从另一个角度来看,利用LLMs的知识也很重要。按照Transformer [39]的指示,预训练的LLMs展示了强大的文本理解和生成能力[31、19、37、5],这些突破也有利于VL建模[13、14、3、49],这些工作在预训练的LLMs中添加额外的适配器模块[17],以将视觉特征对齐到文本空间。随着模型参数的增加,训练这些预训练的LLMs变得更加困难,因此更多的努力已经投入到直接利用现成的冻结预训练LLMs来进行VL任务[12、38、8、46、50]。
2.3. 预训练LLM在VL任务中的指导
为了处理复杂任务,例如常识推理[11],提出了链式思考(CoT)来引发LLM的多步推理能力[42]。更具体地,CoT要求LLM生成最终结果的中间答案。现有研究[57]将这种技术分为两类:少样本CoT[56]和零样本CoT[20]。在少样本设置中,LLM使用几个演示[58,41]进行CoT推理,结果发现LLM可以获得更好的解决复杂问题的能力。此外,最近的研究[20,47]表明,LLM可以通过利用零样本设置下的自动生成的原理来进行自我改进。上述研究主要关注单一模态,即语言。最近,提出了多模态CoT[57],将语言和视觉模态纳入两阶段框架,分离原理生成和答案推理。然而,这种方法仅在特定场景下展现出优越性,即ScienceQA基准测试[28]。简而言之,我们的工作将CoT的潜力扩展到大规模任务,包括但不限于文本到图像生成[27],图像到图像翻译[18],图像到文本生成[40]等。
3. 可视化ChatGPT
设S = {(Q1, A1),(Q2, A2), ...,(QN , AN )}为一个对话系统,包含N个问题-答案对。为了获得第i轮对话的响应Ai,涉及到一系列的VFMs和中间输出A(j)i,其中j表示来自第j个VFM(F)的输出。更具体地说,通过处理Prompt Manager M,A(j)i的格式不断地被修改以满足每个F的输入格式。最后,如果A(j)i被表示为最终响应,则系统输出A(j)i,并且不再执行更多的VFM。公式(1)提供了Visual ChatGPT的正式定义:
- 系统原则P:系统原则提供Visual ChatGPT的基本规则,例如它应该对图像文件名敏感,并应该使用VFMs来处理图像,而不是基于对话历史生成结果。
- 可视化基础模型F:Visual ChatGPT的核心之一是各种VFMs的组合:F = {f1, f2, ..., fN },其中每个基础模型fi都包含具有明确输入和输出的确定函数。
- 对话历史H
- 用户查询Qi:在可视化ChatGPT中,查询是一个通用术语,因为它既可以包括语言查询,也可以包括视觉查询。例如,图1展示了一个包含查询文本和相应图像的查询示例。
- 推理历史R(
- 中间答案A(j):当处理复杂查询时,Visual ChatGPT会逻辑地尝试通过调用不同的VFMs逐步获得最终答案,从而产生多个中间答案。
- Prompt Manager M:Prompt Manager被设计为将所有视觉信号转换为语言,以便ChatGPT模型能够理解。在下面的子节中,我们重点介绍M如何管理上述不同部分:P、F、Qi、F(A(j)i)。
图3 太大了,截图截不全,看原论文吧
3.1. 系统原则M(P)的提示管理
Visual ChatGPT是一个集成了不同视觉基础模型(VFMs)的系统,可以理解视觉信息并生成相应答案。为了实现这一点,需要定制一些系统原则,并将其转化为ChatGPT可以理解的提示。这些提示具有以下几个目的:
• 角色定位:Visual ChatGPT旨在协助完成一系列与文本和视觉相关的任务,如VQA、图像生成和编辑等。
• VFMs的可访问性:Visual ChatGPT可以访问一系列VFMs以解决各种视觉语言(VL)任务。决定使用哪个基础模型完全由ChatGPT模型自己决定,从而使得支持新的VFMs和VL任务变得容易。
• 文件名的敏感性:Visual ChatGPT根据文件名访问图像文件,因此使用精确的文件名非常重要,以避免歧义。因为一轮对话可能包含多张图像及其不同的更新版本,如果文件名使用不当会导致当前正在讨论哪个图像的混淆。因此,Visual ChatGPT被设计为严格关注文件名的使用,确保检索和操作正确的图像文件。
• 思路链:如图1所示,应对一个看似简单的命令可能需要多个VFMs,例如,“在预测的图像深度条件下生成一朵红色的花,并将其变成卡通形式”,需要深度估计、深度到图像和风格转移VFMs等。为了通过将更具挑战性的查询分解为子问题来解决它们,Visual ChatGPT引入了CoT来帮助决定、利用和调度多个VFMs。
• 推理格式的严格性:Visual ChatGPT必须遵循严格的推理格式。因此,我们使用精细的正则匹配算法解析中间推理结果,并构建ChatGPT模型的合理输入格式,以帮助其确定下一步的执行,例如触发新的VFM或返回最终响应。
• 可靠性:作为一种语言模型,Visual ChatGPT可能会制造虚假的图像文件名或事实,这可能会使系统变得不可靠。为了解决这些问题,我们设计了提示,要求Visual ChatGPT忠于视觉基础模型的输出,不要制造图像内容或文件名。此外,多个VFMs的协作可以增加系统的可靠性,因此我们构建的提示将指导ChatGPT优先利用VFMs,而不是基于对话历史生成结果。
3.2. 对基础模型 M(F) 进行提示管理
Visual ChatGPT 配备了多个视觉前馈模型(VFMs),用于处理各种视觉语言(VL)任务。由于这些不同的 VFMs 可能具有一些相似之处,例如,在图像中替换对象可以被视为生成新图像,以及图像到文本(I2T)任务和图像问答(VQA)任务都可以理解为根据提供的图像给出响应,因此区分它们非常重要。如图 3 所示,提示管理器特别定义了以下方面,以帮助 Visual ChatGPT 准确地理解和处理 VL 任务:
• 名称提示为每个 VFM 提供总体功能的摘要,例如,回答有关图像的问题,它不仅有助于 Visual ChatGPT 简洁地理解 VFM 的目的,而且还作为 VFM 的入口。
• 用途提示描述了应该使用 VFM 的特定场景。例如,Pix2Pix 模型[35]适用于更改图像的样式。提供此信息可帮助 Visual ChatGPT 对特定任务选择使用哪个 VFM。
• 输入/输出提示概述了每个 VFM 所需的输入和输出格式,因为格式可能会有很大差异,提供清晰的指南对于 Visual ChatGPT 正确执行 VFMs 至关重要。
• 示例(可选)示例提示是可选的,但它可以帮助 Visual ChatGPT 更好地理解如何在特定输入模板下使用特定的 VFM,并处理更复杂的查询。
3.3 用户查询M(Qi)的提示管理
Visual ChatGPT支持多种用户查询,包括语言或图像、简单或复杂的查询,以及多个图像的参考。提示管理器从以下两个方面处理用户查询:
• 生成唯一的文件名 Visual ChatGPT可以处理两种类型的与图像相关的查询:涉及新上传图像的查询和涉及现有图像的查询。对于新上传的图像,Visual ChatGPT使用通用唯一标识符(UUID)生成唯一的文件名,并添加一个前缀字符串“image”表示相对目录,例如“image/{uuid}.png”。虽然新上传的图像不会被输入到ChatGPT中,但会生成一个假的对话历史记录,其中包含一个问题,说明图像的文件名,以及一个回答,表示已接收到该图像。这个假的对话历史记录有助于后续的对话。对于涉及现有图像的查询,Visual ChatGPT忽略文件名检查。这种方法已被证明是有益的,因为如果模糊匹配不会导致歧义,例如UUID名称,ChatGPT有理解模糊匹配的能力。
• 强制VFM思考 为了确保成功触发Visual ChatGPT的VFM,我们在(Qi)后面附加了一个后缀提示:“由于Visual ChatGPT是一个文本语言模型,必须使用工具观察图像而不是想象。这些思想和观察结果仅对Visual ChatGPT可见,Visual ChatGPT应该记得在最终回复中重复重要信息。思考:我需要使用工具吗?”这个提示有两个目的:1)它提示Visual ChatGPT使用基础模型而不是仅仅依靠想象;2)它鼓励Visual ChatGPT提供由基础模型生成的具体输出,而不是通用的回复,例如“这是你要的”。
3.4. 快速处理基础模型的输出 M(F(A(j)i))
对于来自不同 VFMs F(A(j)i) 的中间输出,Visual ChatGPT 将隐式地对其进行总结,并将其馈送给 ChatGPT 进行后续交互,即调用其他 VFMs 进行进一步操作,直到达到结束条件或向用户提供反馈。具体步骤如下:
• 生成链接文件名
由于 Visual ChatGPT 的中间输出将成为下一个隐式对话轮次的输入,因此我们应该使这些输出更加逻辑化,以帮助 LLMs 更好地理解推理过程。具体来说,从 Visual Foundation Models 生成的图像保存在“image/”文件夹下,这暗示以下字符串表示图像名称。然后,将图像命名为“{Name} {Operation} {Prev Name} {Org Name}”,其中 {Name} 是上述提到的 UUID 名称,{Operation} 是操作名称,{Prev Name} 是输入图像唯一标识符,{Org Name} 是由用户上传或 VFMs 生成的图像的原始名称。例如,“image/ui3c edge-of o0ec nji9dcgf.png”是一个名为“ui3c”的 Canny 边缘图像,其输入为“o0ec”,这个图像的原始名称是“nji9dcgf”。通过这样的命名规则,可以提示 ChatGPT 中间结果的属性,即图像以及如何从一系列操作中生成的。
• 调用更多 VFMs
Visual ChatGPT 的核心之一是它可以自动调用更多 VFMs 来完成用户的命令。更具体地说,我们让 ChatGPT 不断询问自己是否需要 VFMs 来解决当前问题,通过在每个生成结果的结尾添加一个后缀“Thought: ”来扩展。
• 当用户的指令模糊不清时,Visual ChatGPT 应该要求用户提供更多细节信息,以帮助更好地利用 VFMs。这个设计是安全而关键的,因为当输入信息不足时,LLMs 不允许任意篡改或猜测用户的意图而没有依据。
4. 实验
4.1. 实验设置
我们使用ChatGPT[29](OpenAI“text-davinci-003”版本)实现了LLM,并使用LangChain[7]指导LLM。我们从HuggingFace Transformers[43]、Maskformer [10]和ControlNet[53]中收集了基础模型。全部22个VFMs的完全部署需要4个Nvidia V100 GPU,但用户可以灵活地部署较少的基础模型以节省GPU资源。
对话历史的最大长度为2,000个标记,过长的标记将被截断以满足ChatGPT的输入长度。
4.2. 多轮对话的完整案例
图4显示了Visual ChatGPT的16轮多模态对话案例。在这个案例中,用户提出了文本和图像问题,而Visual ChatGPT则以文本和图像的形式作出回应。对话涉及多张图片的讨论,多个基础模型的处理以及需要多步骤回答的问题。
4.3. Prompt Manager案例研究
图5分析了系统原则的提示管理案例,以验证我们的系统原则提示的有效性。我们将其不同部分删除以比较模型性能。每次删除都会导致不同的容量退化。
图6分析了基础模型的提示管理案例。VFM的名称是最重要的,需要清晰定义。当名称缺失或模糊时,Visual ChatGPT会多次猜测,直到找到现有的VFM或遇到错误,如左上角的图所示。VFM的使用应明确描述应该使用模型的具体场景,以避免错误响应。右上角的图显示了风格转换错误地被用于替换。应准确提示输入和输出格式,以避免参数错误,如左下图所示。示例提示可以帮助模型处理复杂用法,但是是可选的。如右下图所示,尽管我们删除了示例提示,ChatGPT仍然可以总结对话历史记录和人类意图来使用正确的VFM。完整的视觉基础模型提示请参见附录A。
图7上部分分析了用户查询的提示管理案例。左上角的图表明,如果图像文件没有独特的命名,新上传的图像文件可能会被重命名以避免被覆盖,并导致错误的引用。如右上角的图所示,通过将思考引导从M(P)移动到M(Q)并使其以Visual ChatGPT的声音作为强制性思考,强调使用更多VFM而不是基于文本上下文的想象。通过强制Visual ChatGPT说“思考:我需要使用工具吗?”,M(Q)使得更容易通过正则表达式匹配。相反,如果没有强制思考,A3可能会错误地生成思考结束标记,并直接将其ChatGPT输出视为最终响应。
图7下部分分析了模型输出的提示管理案例。左下方的图表明删除和保留链接命名规则的性能差异。使用链接命名规则,Visual ChatGPT可以识别文件类型,触发正确的VFM,并得出文件依赖关系命名规则。它表明链接命名规则确实有助于Visual ChatGPT理解。右下图提供了在项目推理模糊时请求更多详细信息的示例,这也表明了我们系统的安全性。
5. 限制
虽然Visual ChatGTP是一种有前途的多模态对话方法,但它也有一些限制,包括:
• 依赖于ChatGPT和VFMs Visual ChatGPT在分配任务方面严重依赖于ChatGPT,在执行任务方面严重依赖于VFMs。因此,Visual ChatGPT的性能受到这些模型准确性和效果的严重影响。
• 大量提示工程 Visual ChatGPT需要大量的提示工程来将VFMs转换为语言,并使这些模型描述可区分。这个过程可能很耗时,并需要同时具备计算机视觉和自然语言处理方面的专业知识。
• 有限的实时能力 Visual ChatGPT的设计目标是通用性。它尝试自动将一个复杂任务分解成几个子任务。因此,在处理特定任务时,Visual ChatGPT可能会调用多个VFMs,相对于专门针对特定任务进行训练的专家模型,其实时能力受到限制。
• 令牌长度限制 ChatGPT中的最大令牌长度可能会限制可以使用的基础模型数量。如果有成千上万或数百万个基础模型,则可能需要预过滤模块来限制输入到ChatGPT的VFMs。
• 安全和隐私 可以轻松插入和拔出基础模型,这可能引发安全和隐私问题,特别是通过API访问的远程模型。必须仔细考虑和自动检查,以确保不应暴露或泄露敏感数据。
6. 结论
在本研究中,我们提出了Visual ChatGPT,这是一个开放的系统,集成了不同的VFMs,并使用户能够以超越语言格式的方式与ChatGPT交互。为了构建这样一个系统,我们精心设计了一系列提示,帮助将视觉信息注入到ChatGPT中,从而可以逐步解决复杂的视觉问题。大量的实验和选定的案例已经证明了Visual ChatGPT在不同任务中具有巨大的潜力和能力。除了上述限制之外,另一个关注点是,由于VFMs的失败和提示的不稳定性,一些生成结果不令人满意。因此,一个自我纠正模块对于检查执行结果和人类意图之间的一致性并相应地进行相应的编辑是必要的。这种自我纠正行为可以导致模型更复杂的思考,从而显著增加推理时间。我们将在未来解决这个问题。