1、构建策略
视觉语言指令微调数据构建策略主要有以下两种:
标注适配
由于视觉模型的发展,已有规模巨大、多样性且高质量的标注数据。这些数据适合于广泛的下游任务,并可容易地改造为指令数据。许多工作将已有的标注数据转化为标准的指令数据格式。
指令部分(Instruction)主要用于解释任务的本质,典型的构建方法是手写,然后作为候选指令池。有些研究使用手写指令作为种子,以引导LLM进行重写或扩展指令池,以增强指令的多样性。
输入(Input)由图像和可选的上下文组成,主要从原始的标注数据中获取,以形成指令数据的完整部分。
响应(Response)对应于已标注数据中的结果,表示指令数据的输出部分。
如果原始标注数据满足用户的需求,不需要多少改动就可以直接转化。但是,对于特定下游任务如分类、判断或简要Caption,典型的只会生成几个单词或简单句子,此时原始的答案需要基于输入信息利用LLM进行扩展,以避免可能得过拟合或其他相关问题。值得注意的是,有些工作将这样精简的响应作为正式的指令,因此在指令中选择融合合适的有限语言解决这类问题。
自我指导Self-Instruct
指令的规模、多样性和创造性往往受到现有任务和相应标注数据的限制,阻碍了使用这些数据进行调整的多模态大型语言模型的通用性。标准指令格式在适应不断变化的现实世界应用场景和满足用户需求方面面临挑战。因此,为了获得与现实世界情况更相关的额外指令数据,自我指导开始整合更广泛的标注数据。这种方法将促使大型语言模型生成更多样化和内容丰富的遵循指令数据。
具体来说,这种方法利用大型语言模型强大的理解和生成能力。如图所示,它们根据模板、大型语言模型等将标注信息(如标题、边界框、标签等)组织成关于图像的详细描述,然后引导仅语言的大型语言模型生成问答对或直接进入多轮对话。其中,为了正确引导大型语言模型,这些方法会手动定制详细的系统提示和一些示例,并通过上下文学习进一步提高生成内容的质量。自我指导消除了对数据的严格限制,允许在指令和响应中都增加多样性和复杂性。
数据混合
当然,为了在确保指令数据具有良好多样性等属性的同时扩大指令数据的规模,许多方法同时使用上述两种方法并构建大规模的指令数据。最近,一些多模态大型语言模型甚至将来自不同来源的多组指令数据进行合并,以进一步提高多模态大型语言模型的性能。
2、构建原则
原则 1. 正确性:每个视觉语言指令微调(VLIT)数据(即指令-响应对)中的视觉信息和文本内容必须完全匹配,确保生成内容中对视觉信息或外部知识的描述没有不准确之处。
原则 2. 任务多样性:视觉语言指令微调数据应包含足够多样的任务,包括文本任务和视觉任务。
原则 3. 指令多样性:在视觉语言指令微调数据中,每个任务必须包含足够多样的不同指令句子。
原则 4. 响应多样性:在视觉语言指令微调数据中,每个任务的响应文本需要保持足够的可区分性。
原则 5. 指令复杂性:在视觉语言指令微调数据中,必须确保一些指令文本需要足够复杂的逻辑才能完成。
原则 6. 对象/粒度复杂性:在视觉语言指令微调数据中,指令对象操作的粒度必须表现出足够的复杂性。在多模态场景具备适当复杂度的高质量VLIT数据可进一步引导MLLM在不同粒度上联合理解视觉和文本语义。
原则 7. 在视觉语言指令微调数据中,任务分布需要均匀,不存在明显的长尾现象。不均衡的数据设置可能导致大型模型中的遗忘现象,严重阻碍其整体性能。
3、构建流程
数据收集
在收集数据时,必须全面考虑标注数据的类型、来源、规模和质量等因素。这可以确保收集的信息生成符合正确性、多样性和复杂性要求的视觉语言指令微调数据。具体而言,经过人工审查且广泛使用的标注数据可信度更高,不会因标注不准确而导致后续错误。同时,不同类型的标注数据通常可以扩展来定义各种任务,显著增强最终视觉语言指令微调数据的多样性。当来自同一来源的多模态数据包含不同类型的标注时,甚至可以在原始简单视觉任务之上生成更复杂的上下文和新的任务类型,确保复杂性。
指令响应生成
当提供一幅图像和相应的各种类型的标注数据时,需要为每种类型的标注数据设计合适的模板,以确保插入的标注数据符合标准语言表示。通过结合所有标注数据源,可以获得对图像的详细且准确的描述,这对仅使用语言的大型语言模型来说是一个可理解的视觉线索。为确保生成内容的多样性和复杂性,有必要编写足够详细的提示来引导大型语言模型,并手动编写足够数量的示例指令-响应对。
在系统提示设计中,遵循正确性、多样性、复杂性原则,并通过灵活使用具有不同附加约束(例如,扩展知识、负面样本、多轮对话等)的系统提示来引导生成器生成更多样化和复杂的指令-响应对。同时,设计的上下文示例足够充分,符合全面性和随机性的特点,与所涉及的边界相对应,并提供所有可能场景的适当示例,以便生成器能正确理解提示的含义。此外,为了在生成过程中确保足够的多样性,还冗余设置了系统提示和上下文示例的关键点,即多次重复某些关键点(如不生成不确定内容、避免模糊回答等)。
质量控制
由于大型语言模型本身可能存在错误以及生成数据分布的不可控性,对大型语言模型直接输出的视觉语言指令微调数据进行质量控制至关重要。
正确性:对于准确性评估,引入多语言大型语言模型和手动编写的指导示例,对给定的视觉语言指令微调数据进行多次准确性评估,取最高频率作为最终准确性得分。
多样性:使用基于图的方法来计算指令多样性,即,在去除停用词后,将具有相同任务标签的指令文本基于共现关系转换为元素图,并使用重叠社区划分方法(即自我分裂)来计算簇的数量以评估指令多样性。
复杂度:首先使用经典的语义依存分析来计算指令中的元素数量,然后利用 LLaMA-2 作为判别模型,在给定样本的指导下提供定量的难度评分。
平衡度:利用获得的任务标签来计算不同任务的样本大小方差,作为平衡指标。同时,通过从各种任务标签中随机且均匀地抽样,可以获得具有类别平衡的视觉语言指令微调数据。