数据
使用GPT-4,根据现有的图片对数据(image-pair data)收集指令跟随数据。作者团队收集了158,000个独特的语言-图像指令遵循样本,其中包括58,000个对话样本、23,000个详细描述样本和77,000个复杂推理样本
以图像描述为例:由图像Xv,图像的标题Xc组成的二元组可以对应一系列问题Xq(由GPT-4生成)来指示模型生成简单的描述。就可以将这个图像-文本对扩展为一个指令跟随数据:
Human : X_q, X_v <STOP>
Assistant : X_c <STOP>
但这样的扩展在深度和广度上都是不足的,交互性很弱,因此用GPT-4创建涉及视觉内容的指令遵循数据:
标题和边界框两种方法来将视觉信息传递给语言模型:
- 标题(Caption) 提供了不同的视角下对图像的描述,例如不同的物体之间的位置关系,或者其中的人物正在做什么。
- 边界框(Boxes) 定位了图像中的物体,以物体概念+位置信息的形式呈现(通常就是物体概念和矩形四个角的坐标构成)。
生成对话数据
助手(Assistance)会回答人类提出的在图像上具有明确答案的视觉问题(包括物体类型、数量、动作、位置等)
生成细节描述
创建了一个问题列表,提示GPT-4
然后筛选出了如表中所示的问题。对于每个问题,从列表中抽取一个询问GPT-4
以生成详细描述。
生成复杂推理数据
前面两种类型更多的是描述图片中存在的信息,而该问题需要在前两步的基础上遵循严格的逻辑,推理出一些信息出来
网络
LLaVA 的模型结构很简单,使用预训练的 Visual Encoder(CLIP ViT-L/14)和 LLM (LLaMA),为了做 Alignment,用一个简单的线性层 Projector 将视觉特征转换为文本特征
训练
对于任意一个图像Xv ,生成一个T轮的问答数据序列( Xq1 , Xa1 , … , XqT , XaT)
第一轮对话中加入视觉信息Xv,即使用视觉特征和语言向量的一种排列当做指令
Stage1: 预训练视觉->文本
要求机器描述这个图像作为输入的Xq,将数据集中的标题(图像描述)作为回答Xa 。然后冻结图像编码器和语言模型,训练投影矩阵W直到似然函数达到极大
Stage2: 端到端训练
这一阶段冻结视觉编码器,并更新LLaVA
模型的投影层和LLM
使用数据:
多模态聊天机器人将收集的158K独特的语言图像指令按照三种回答格式(对话、详细描述和复杂推理)进行均匀抽样并基于这些数据进行微调得到聊天机器人
科学问答(Science QA)在Science QA基准数据集上进行,通过将问题和上下文作为输入,将推理过程和答案作为输出进行训练。