【論文閱讀筆記】多模態大語言模型必讀 —— LLaVA

KeanShi發表於2024-11-20

論文地址:https://arxiv.org/abs/2304.08485
程式碼地址:https://github.com/haotian-liu/LLaVA

image

簡介

人類對於世界的認知是透過視覺、語言多個途徑的,因此設計出能夠遵循多模態的視覺和語言指令的通用大模型成為了人工智慧領域的核心目標之一。

當前,很多工作已經在視覺大模型方面取得成就,不過每一種任務(如分類、分割、影像生成編輯等)均由不同的 LVM 完成,且語言僅用於描述影像,這導致了我們不能很好地與模型進行互動,模型也缺失適應複雜指令的能力。

除此之外,LLM 展示出了語言的強大能力,各種各樣的任務都可以透過指令來進行端到端的訓練,很多模型如 GPT-4 應用了高質量的 instruction-following 資料,模型可以根據不同的指令來完成不同的任務。不過這些方法僅限於語言。

作者在 LLaVA 中將語言的微調方式推廣到多模態大模型,具體來說本篇論文有以下 contributions:

  1. Multimodal instruction-following data. 利用 ChatGPT/GPT-4,將影像-文字對轉化為了 instruction-following 形式的資料。
  2. Large multimodal models. 利用 CLIP 和 Vicuma 設計了一種 LMM,在科學 QA 上得到了 SOTA。
  3. Multimodal instruction-following benchmark. (LLaVA-Bench)
  4. Open-source.

Visual Instruction 資料生成

作者團隊基於已有的影像-文字對資料,利用 ChatGPT/GPT-4 進行資料的擴充。

首先根據影像 \(X_v\) 以及相應的描述 \(X_c\),GPT 可以生成一個問題 \(X_q\),此時可以得到一輪對話資料:

Human : Xq, Xv <STOP>
Assistant : Xc <STOP>

不過只有上面簡單的對話不能使模型學習到深層次的推理能力,因此作者團隊應用 GPT 進行了包含視覺資訊的 instruction-following 資料擴充。分為兩種符號表示:

  • Captions:從多個角度細緻地描述視覺場景
  • Bounding boxes:指出了每個物體的名稱以及位置

此時視覺模型轉化為了 LLM 可以理解的文字資訊。作者團隊接著基於 COCO 資料集生成了三種 instruction-following 資料(對話、細節描述、複雜推理)。對於每一種首先手工設計一些樣例,然後以此作為 in-context 學習的模板詢問 GPT-4 生成更多相關的資料。

image

作者總共收集了 158K 個單獨的語言-影像指令跟隨樣本,包括 58K 個對話、23K 個細節描述、77K 個複雜推理。

視覺指令微調

模型架構

image

其中,\(X_v\) 是輸入影像,Vision Encoder 使用預訓練的 ViT-L/14,大語言模型 \(f_\phi\) 使用 Vicuna,\(W\) 是可訓練的投影矩陣,\(H_v\)\(H_q\) 分別為視覺和文字 token;對於輸入影像,轉化公式為:

\[\mathbf{H}_{\mathrm{v}}=\mathbf{W}\cdot\mathbf{Z}_{\mathrm{v}},\mathrm{~with~}\mathbf{Z}_{\mathrm{v}}=g(\mathbf{X}_{\mathrm{v}}) \]

訓練

對於輸入圖片 \(X_v\),可以生成多輪對話:\((\mathbf{X_q^1},\mathbf{X_a^1},\cdots,\mathbf{X_q^T},\mathbf{X_a^T})\),則第 \(t\) 輪的指令為:

\(\mathbf{X}_{{\mathrm{instruct}}}^{t}=\begin{cases}&\text{Randomly choose }[\mathbf{X}_{{\mathrm{q}}}^{1},\mathbf{X}_{{\mathrm{v}}}]\ \ \mathrm{or~}[\mathbf{X}_{{\mathrm{v}}},\mathbf{X}_{{\mathrm{q}}}^{1}],\ \mathrm{the~first~turn~}t=1\\&\mathbf{X}_{{\mathrm{q}}}^{t},\qquad \qquad \qquad \qquad \qquad\qquad\mathrm{the~remaining~turns~}t>1&&\end{cases}\)

並利用其自身的自迴歸結構進行 next token prediction,也就是說,對於任何一個長度為 \(L\) 的序列,我們透過如下公式計算:

\[p(\mathbf{X_a}|\mathbf{X_v},\mathbf{X_{instruct}})=\prod_{i=1}^Lp_{\boldsymbol{\theta}}({\textcolor{green}{x_i}}|\mathbf{X_v},\mathbf{X_{instruct,<i}},\mathbf{X_{a,<i}}), \]

輸入輸出以下圖方式組織,只有綠色部分才會參與計算 loss。

image

對於 LLaVA 的訓練採用了兩階段的策略:

  1. Pre-training for Feature Alignment. 作者首先從 CC3M 篩選出 595K 的影像文字,然後利用第二節介紹的普通方法擴充為 instruction-following 資料。該階段凍結 LLM 以及 Vision Encoder,只訓練 \(W\)
  2. Fine-tuning End-to-End. 該階段訓練 \(W\) 和 LLM,
    • 利用 158K 的指令追隨樣本訓練一個多模態 Chatbot
    • 利用 ScienceQA benchmark,輸入為文字或影像的單輪對話

相關文章