论文笔记3 - LLaVA

LLaVA: Large Language and Vision Assistant

概述

结合了CLIP vision encoder与LLaMA的多模态大模型,具有与GPT-4相似的能力。

数据集生成

数据集的形式为图片和针对该图片的多组文本描述(问题-答案对)。

  • 图片:来自COCO数据集

  • 图片的文本描述

    • 问题:对图片内容的提问,在预先设定好的问题表中抽取得到
    • 答案:不需要人工标注,而是使用ChatGPT/GPT-4生成。由于现有的ChatGPT/GPT-4不接受图像输入,图像被转化为captions+bounding boxes的描述方式作为输入。

    image.png

模型结构

img.png

  • Vision Encoder:来自CLIP,将图像\(X_V\)映射到图像特征\(Z_V\)

  • Projection:仅使用一个投射矩阵W将图像特征\(Z_V\)映射到语义空间\(H_V\),与问题的language embedding(\(H_q\))对齐

    作者还探讨了其他可能的连接图像和语言表征的方法:

    • gated cross-attention in Flamingo
    • Q-former in BLIP-2
    • SAM
  • LLM:预测问题答案

训练策略

训练时,数据集以如下形式输入模型: \[ \begin{aligned} & \mathbf{X}_{\text {system-message }}\textcolor{green}{\langle\mathrm{STOP}\rangle} \backslash \mathrm{n} \\ & \text { Human : } \mathbf{X}_{\text {instruct }}^1\textcolor{green}{\langle\mathrm{STOP}\rangle} \backslash \mathrm{n} \text { Assistant: } \textcolor{green}{\mathbf{X}_{\mathrm{a}}^1\langle\mathrm{STOP}\rangle} \backslash \mathrm{n} \\ & \text { Human : } \mathbf{X}_{\text {instruct }}^2\textcolor{green}{\langle\mathrm{STOP}\rangle} \backslash \mathrm{n} \text { Assistant: } \textcolor{green}{\mathbf{X}_{\mathrm{a}}^2\langle\mathrm{STOP}\rangle} \backslash \mathrm{n} \ldots \end{aligned} \]

其中:

\(\mathbf{X}_{\text {system-message }}\) = A chat between a curious human and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the human’s questions.

​ <STOP> = ###

image embedding在对话的开始被输入,此后\(\mathbf{X}_{\text {instruct}}\)均为language embedding: \[ \mathbf{X}_{\text {instruct }}^t= \begin{cases}\text { Random choose }\left[\mathbf{X}_{\mathrm{q}}^1, \mathbf{X}_{\mathrm{v}}\right] \text { or }\left[\mathbf{X}_{\mathrm{v}}, \mathbf{X}_{\mathrm{q}}^1\right], & \text { the first turn } t=1 \\ \mathbf{X}_{\mathrm{q}}^t, & \text { the remaining turns } t>1\end{cases} \] 训练目标是:将输出文本x最大化似然到真值\(X_a\),模型在预测时能看到之前的全部图像与文本: \[ p\left(\mathbf{X}_{\mathrm{a}} \mid \mathbf{X}_{\mathrm{v}}, \mathbf{X}_{\text {instruet }}\right)=\prod_{i=1}^L p_{\boldsymbol{\theta}}\left(x_i \mid \mathbf{X}_{\mathrm{v}}, \mathbf{X}_{\text {instruct },<i}, \mathbf{X}_{\mathrm{a},<i}\right) \] 采用两阶段的训练过程:

  • Pre-training for Feature Alignment:冻结Vision Encoder和LLM,只调整W的参数,要求模型对图像做一些简单的描述。这个阶段可以理解为为固定参数的LLM训练一个兼容的visual tokenizer
  • Fine-tuning End-to-End:仅保持Vision Encoder的参数不变,训练W和LLM的参数,针对特定任务微调。

论文笔记3 - LLaVA
https://robert-zwr.github.io/2023/07/19/论文笔记3-LLaVA/
Author
Robert-zwr
Posted on
July 19, 2023
Licensed under