刚开始感觉这就是一篇工程类文章,把各种的模型做了整合,把最近很热的两个方向chatgpt和文本生成图、图文提问整合在一起。看完文章发现自己太自傲了,绝对轻视了微软亚研院大佬们的实力。
表面看起来这是一个用chatgpt做意图理解、对话管理,然后用各种多模态视觉模型做任务(VQA、图生文)简单的系统。其实这是一个多模态的训练框架,并且是一个把多模态中多任务整合:
1.学习目标不好定
a.简单了单一模态信息就够,跨模态之间没有交互,基座模型多模态表现力不够(过拟合)
b.复杂了,模型根本收敛不了,太能训练,基座模型也是学习不到东西(欠拟合)
这篇文章给出的解法是:
1.问题要够复杂,设计出一套解决多种任务统一思维框架保证任务复杂性。(没错直接拔高一层,不在具体任务细节复杂度纠结,拔高一个复杂度,在哲学层面上提高复杂度。升纬境界瞬间不一样,还保证下游任务的通用性)
2.太复杂学习不到东西怎么办,设计解决问题思维链,保证任务复杂情况下还保证每步可以学习到东西
3.思维链是有了,链上的各个环节如何串接,太复杂了这个任务也没法解,文章解法是chatgpt作为思维链的中转管理了所有中间过程,保证了这个任务可以简单训练(把思维链转为带状态的多轮对话,即做意图理解器有做对话管理器)
实现细节:
1.利用现有的基础多模态信息作为特征抽取器
2.并且把解决问题的思维链作为多轮对话管理
3.把多模态的信息统一输入格式:图、文、历史图、多轮时序、中间特征、对话状态跳转全部转成是prompt
大道至简,这样一个统一数据、统一框架、统一解决流程,直接把各种信息、任务、处理流程统一,让这个框架可以整合各种数据各种任务学习拥有强大的表征能力和知识压榨能力;到下游任务针对性做finetune、prompt或者instruct调教,用很少数据就能在具体任务表现很好(迁移能力很强、有种结构化学习意思了)
论文部分
-
系统原则 P:系统原则提供了 Visual ChatGPT 的基本规则,例如应对图像文件名敏感,并使用 VFMs 处理图像而不是根据聊天历史生成结果。
-
视觉基础模型 F:Visual ChatGPT 的核心之一是各种 VFMs 的组合:F = {f1,f2,...,fN},其中每个基础模型 fi 包含一个确定的函数,具有明确的输入和输出。
-
对话历史 H<i>:我们将第 i 轮对话的对话历史定义为先前问题答案对的字符串连接,即 {(Q1,A1),(Q2,A2),...,(Qi-1,Ai-1)}。此外,我们根据最大长度阈值截断对话历史,以满足 ChatGPT 模型的输入长度。
-
用户查询 Qi:在视觉 ChatGPT 中,查询是一个通用术语,因为它既可以包含语言查询,也可以包含视觉查询。例如,图 1 显示了包含查询文本和相应图像的示例查询。
-
推理历史 R(<j>)i:为了解决复杂的问题,Visual ChatGPT 可能需要多个 VFMs 的协作。对于第 i 轮对话,R(<j>)i 是从 j 调用的 VFMs 的所有先前推理历史。
-
中间答案 A(j):在处理复杂查询时,Visual ChatGPT 将逻辑地尝试通过调用不同的 VFMs 逐步获得最终答案,从而产生多个中间答案。
-
提示管理器 M:提示管理器旨在将所有视觉信号转换为语言,以便 ChatGPT 模型可以理解。在下面的子部分中,我们重点介绍 M 如何管理上述不同部分:P、F、Qi、F(A(j>)i)。
管理系统原则 M(P)
Visual ChatGPT 是一个系统,集成了不同的 VFMs 来理解视觉信息并生成相应的答案。为了实现这一点,需要定制一些系统原则,然后将它们转换为 ChatGPT 可以理解的提示语。这些提示语有几个目的,包括:
• Visual ChatGPT 的角色 Visual ChatGPT 的设计旨在帮助完成各种文本和视觉相关的任务,如视觉问答(VQA)、图像生成和编辑等。
• VFMs 的可访问性 Visual ChatGPT 可以访问一系列 VFMs,以解决各种 VL 任务。决定使用哪个基础模型完全由 ChatGPT 模型自己决定,因此易于支持新的 VFMs 和 VL 任务。
• 文件名的敏感性 Visual ChatGPT 根据文件名访问图像文件,因此使用精确的文件名非常重要,以避免歧义。因为一轮会话可能包含多个图像及其不同的更新版本,如果文件名被误用,将导致混淆哪个图像正在讨论。因此,Visual ChatGPT 的设计严格要求使用文件名,以确保它检索和操作正确的图像文件。
• Chain-of-Thought 如图 1 所示,为了应对一个看似简单的命令,可能需要多个 VFMs,例如,查询“在预测的深度条件下生成一朵红花,然后将其变成卡通样式”,需要深度估计、深度到图像和风格转换 VFMs。为了将更具挑战性的查询分解成子问题,Visual ChatGPT 引入了 CoT,帮助决定、利用和分派多个 VFMs。
• 推理格式的严格性 Visual ChatGPT 必须遵循严格的推理格式。因此,我们使用精细的正则表达式匹配算法解析中间推理结果,并构造 ChatGPT 模型的合理输入格式,帮助它确定下一步的执行,例如触发新的 VFM 或返回最终响应。
• 可靠性 作为一个语言模型,Visual ChatGPT 可能会编造虚假的图像文件名或事实,这可能会使系统不可靠。为了处理这些问题,我们设计提示语,要求 Visual ChatGPT 忠实于视觉基础模型的输出,不编造图像内容或文件名。此外,多个 VFMs 的协作可以增加系统的可靠性,因此我们构造的提示语将引导 ChatGPT 优先利用 VFMs,而不是基于对话历史记录生成结果。
管理基础模型M(F)
Visual ChatGPT配备了多个VFMs以处理不同的VL任务。由于这些不同的VFMs可能存在一些相似之处,例如,在图像中替换对象可以被视为生成新图像,而图像到文本(I2T)任务和图像问答(VQA)任务都可以理解为根据提供的图像给出响应,因此区分它们是至关重要的。如图3所示,Prompt Manager专门定义了以下方面,以帮助Visual ChatGPT准确理解和处理VL任务:
• 名称prompt提供每个VFM的整体功能摘要,例如回答关于图像的问题。它不仅帮助Visual ChatGPT以简洁的方式理解VFM的目的,而且作为进入VFM的入口。
• 使用prompt描述了VFM应该使用的特定场景。例如,Pix2Pix模型[35]适用于更改图像的风格。提供这些信息可以帮助Visual ChatGPT做出有根据的决策,选择适合特定任务的VFM。
• 输入/输出prompt概述了每个VFM所需的输入和输出格式,因为格式可能会有很大的差异,提供清晰的指导对于Visual ChatGPT正确执行VFMs至关重要。
• 示例(可选)prompt是可选的,但可以帮助Visual ChatGPT更好地理解如何在特定的输入模板下使用特定的VFM,并处理更复杂的查询。
用户查询的提示管理 M(Qi)
Visual ChatGPT支持各种类型的用户查询,包括语言或图像、简单或复杂的查询以及对多个图像的引用。提示管理器从以下两个方面处理用户查询:
• 生成唯一的文件名 Visual ChatGPT可以处理两种类型的图像相关查询:涉及新上传图像和引用现有图像的查询。对于新上传的图像,Visual ChatGPT生成一个带有通用唯一标识符(UUID)的唯一文件名,并添加一个表示相对目录的前缀字符串“image”,例如“image/{uuid}.png”。虽然新上传的图像不会被输入到ChatGPT中,但会生成一个虚假的对话历史记录,其中包含一个说明图像文件名的问题和一个表示已接收到图像的答案。这个虚假的对话历史记录有助于后续的对话。对于涉及引用现有图像的查询,Visual ChatGPT忽略文件名检查。这种方法已被证明是有益的,因为如果不会导致歧义,ChatGPT有能力理解用户查询的模糊匹配,例如UUID名称。
• 强制VFM思考 为确保成功触发Visual ChatGPT的VFM,我们在(Qi)后附加一个后缀提示:“由于Visual ChatGPT是一个文本语言模型,Visual ChatGPT必须使用工具观察图像,而不是想象。思考和观察只对Visual ChatGPT可见,Visual ChatGPT应该记得在最终响应中重复重要信息。思考:我需要使用工具吗?”这个提示有两个目的:
1)它提示Visual ChatGPT使用基础模型,而不是仅仅依靠想象;
2)它鼓励Visual ChatGPT提供由基础模型生成的具体输出,而不是通用的响应,如“这是你要的”。
管理基础模型输出 M(F(A(j)i))
对于来自不同视觉基础模型的中间输出 F(A(j)i),Visual ChatGPT会隐式地对它们进行总结并将它们传递给ChatGPT进行后续交互,即调用其他VFMs进行进一步操作,直到达到结束条件或向用户提供反馈。以下是内部步骤的概述:
• 生成链接文件名 由于Visual ChatGPT的中间输出将成为下一个隐式对话轮的输入,因此我们应该使这些输出更有逻辑性,以帮助LLMs更好地理解推理过程。具体来说,从视觉基础模型生成的图像保存在“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不被允许在没有依据的情况下随意篡改或推测用户的意图,特别是当输入信息不足时。
限制
总结下来不足就是这个模型其实是多个零部件和模块组合成的,不是一体成型的。这样做不好,我们不需要分立元器件组合成的计算机,我们需要一块集成电路,或者一个芯片就可以把所有东西收纳了,这样才能更好的用来做通用计算机。(为Gpt4发布做准备啊)
虽然Visual ChatGPT 是一种有前途的多模态对话方法,但它也有一些限制,包括:
• 依赖于 ChatGPT 和 VFMs 视觉 ChatGPT 在很大程度上依赖于 ChatGPT 分配任务和 VFMs 执行任务。因此,视觉 ChatGPT 的性能受到这些模型准确性和有效性的严重影响。
• 大量的提示工程视觉 ChatGPT 需要大量的提示工程,将 VFMs 转换为语言并使这些模型描述可区分。这个过程可能耗时,并需要在计算机视觉和自然语言处理方面的专业知识。
• 有限的实时能力视觉 ChatGPT 的设计是通用的。它尝试自动将复杂任务分解为多个子任务。因此,在处理特定任务时,视觉 ChatGPT 可能会调用多个 VFMs,导致与专门针对特定任务进行训练的专家模型相比,实时能力有限。
• 标记长度限制在 ChatGPT 中的最大标记长度可能限制可以使用的基础模型数量。如果有成千上万个基础模型,可能需要一个预过滤模块来限制馈入 ChatGPT 的 VFMs。
• 安全和隐私易于插拔基础模型的能力可能引发安全和隐私方面的担忧,特别是通过 API 访问远程模型。必须仔细考虑并进行自动检查,以确保敏感数据不会被暴露或泄露。