本文大纲:
MLLM的三个主要训练阶段:预训练(pre-training)、指令微调(instruction-tuning)、对齐微调(alignment tuning)。
Pre-training:对齐不同模态,并学习多模态世界知识。如 llava 第一阶段训练的目的是为了将图片信息映射到文本语义空间,让 LLM 能够理解图像内容。
预训练阶段使用大规模文本配对数据,通常为图像、音频或视频的caption数据。代表性的预训练数据集有:CC-3M & CC-12M、SBU Captions、LAION、COYO-700M等。
用于构建image-text-pair数据的简化模板:{<image>}是视觉token的占位符,{caption}是图像的描述
训练:通常冻结预训练模块,如Visual Encoder和 LLM,并训练一个可学习的Adapter,是为了在不丢失预训练知识的情况下对齐不同模态。一些方法也会解冻更多的模块,如解冻 visual encoder ,能够训练更多的参数。
LLaVA 的 Pre-training 阶段
预训练模型将多种模态对齐,可以理解不同模态的基本信息,有时执行简单的问答。但是无法遵循复杂的指令,通常需要针对特定任务进行微调才能执行。
指令微调旨在教会模型更好地理解用户的指令并完成所要求的任务。通过这种方式的微调,大型语言模型(LLMs)可以通过遵循新的指令来泛化到未见过的任务,从而提升零样本(zero-shot)性能。这个简单而有效的想法激发了后续LLMs的成功,例如ChatGPT、InstructGPT、FLAN、和OPT-IML。
多模态大模型指令微调的目的:为了提高模型在特定任务上的性能和泛化能力,使其能够更好地理解和执行与多模态数据(如图像、文本等)相关的复杂指令。
下图为三种传统学习范式的区别:
Pretrain-finetune:需要大量的特定任务数据来训练特定任务的模型
Prompting:减少了对大规模数据的依赖,并通过提示工程完成任务。在这种情况下,尽管few-shot的性能有所提高,但zero-shot性能仍然相当一般
Instruction tuning:指令调整学习如何泛化到未见过的任务,而不是像另外两种方法那样适应特定任务。此外,指令调整与多任务提示高度相关。
三种传统学习范式
一个多模态指令样本可以用三元组形式表示,即(I, M, R),其中I、M、R分别代表指令、多模态输入和真实的响应。MLLM根据指令和多模态输入预测一个答案
这里,A表示预测的答案,θ是模型的参数。训练目标通常是用于训练LLMs的原始自回归目标,基于此,MLLM被鼓励预测响应的下一个token。目标可以表示为:
其中N是真实响应的长度。
下图为 LLaVA 指令微调阶段训练阶段,可学习的参数包括 Adapter 和 LLM。
图:llava 指令微调阶段
对齐调整目的:用于模型需要与特定人类偏好对齐的场景,例如,响应中包含较少的幻觉。目前,人类反馈强化学习(RLHF)和直接偏好优化(DPO)是两种主要的对齐调整技术。
对齐调整的数据收集要点是收集对模型响应的反馈,即决定哪个响应更好。通常,收集此类数据的成本更高,用于此阶段的数据量通常少于之前阶段使用的数据量。LLaVA-RLHF、RLHF-V、VLFeedback 。
LLaVA-RLHF数据集格式
RLHF技术旨在使用强化学习算法将大型语言模型(LLMs)与人类偏好对齐,训练循环中以人类标注作为监督。正如InstructGPT中的例子所示,RLHF包含三个关键步骤:
研究人员已经利用RLHF技术在多模态对齐方面取得了进展,例如LLaVARLHF项目通过收集人类偏好数据来减少模型的幻觉。
LLaVA-RLHF: Aligning Large Multimodal Models with Factually Augmented RLHF
MLLM 的训练范式大致可以划分为预训练阶段(Pre-training)、指令微调阶段(Instruction-tuning)和对齐微调阶段(Alignment-tuning),它们的作用: