視覺語言模型導論:這篇論文能成為你進軍VLM的第一步
近些年,語言建模領域進展非凡。Llama 或 ChatGPT 等許多大型語言模型(LLM)有能力解決多種不同的任務,它們也正在成為越來越常用的工具。
這些模型之前基本都局限于文本輸入,但現在也正在具備處理視覺輸入的能力。如果能將視覺與語言打通,那么勢必能造就多種多樣的應用 —— 這實際上也正是當前 AI 技術革命的關鍵方向。
即便現在已有不少研究將大型語言模型擴展到了視覺領域,但視覺與語言之間的連接尚未被徹底打通。舉些例子,大多數模型都難以理解空間位置關系或計數 —— 這還需要復雜的工程設計并依賴額外的數據標注。許多視覺語言模型(VLM)依然難以理解屬性和順序。它們往往會忽略輸入 prompt 的某些部分,因此為了得到理想結果,用戶常常需要在提示工程上費心費力。還有些模型會產生幻覺,產出無用或不相關的內容。因此,人們依然在大力開發穩定的模型。
如果你是有志這一行業的學生或愛好者或想要從其它 AI 領域轉戰此方向,那么請一定不要錯過我們今天要介紹的這篇《視覺語言模型導論》。
- 論文標題:An Introduction to Vision-Language Modeling
- 論文地址:https://arxiv.org/pdf/2405.17247
這篇導論來自 Meta 和蒙特利爾大學等多所研究機構的數十位研究者,將解釋 VLM 是什么、它們是如何訓練的以及如何基于不同研究目標有效地評估它們。
該團隊表示,這篇論文的目標是幫助讀者輕松理解 VLM 并著重說明這一領域的有效實踐,而不是提供 VLM 研究成果的詳盡綜述或完整指南。
多種多樣的 VLM
得益于深度學習的發展,計算機視覺和自然語言處理領域都取得了令人矚目的進展,也因此已經有不少研究團隊嘗試過將這兩個領域連接到一起。
這篇論文關注的重點是最近期的基于 Transformer 的技術。
該團隊將嘗試打通這兩大領域的研究成果,按訓練范式分成了四類,見圖 1。
第一類是對比式訓練(contrastive training),這是一種使用正例和負例對來訓練模型的常用策略。VLM 的訓練目標是為正例對預測相似的表征,為負例對預測不同的表征。
第二類是掩碼(masking),其方法是根據某些未被遮掩的文本來重建被遮掩的圖塊。類似地,通過遮掩描述中的詞,也可以讓 VLM 根據未被遮掩的圖像來重建這些被遮掩的詞。
另一類是基于預訓練骨干網絡來訓練 VLM,這往往是使用 Llama 等開源 LLM 來學習圖像編碼器(也可能是預訓練的)和 LLM 之間的映射關系。相比于從頭開始訓練文本和圖像編碼器,學習預訓練模型之間的映射關系的計算成本往往更低。
大部分這類方法都是使用中間表征或部分重建,而生成式 VLM 則能生成圖像或描述。有鑒于這類模型的性質,它們的訓練成本通常是最高的。
需要說明:這些范式并不是互斥的,很多方法都混合使用了對比、掩碼和生成范式。文中為每種范式都提供了一兩個模型進行說明,以幫助讀者了解這些模型的設計思路。
基于 Transformer 的 VLM 早期研究
通過使用 Transformer 架構,BERT(使用 Transformer 的雙向編碼器表征)一誕生,就超過了當時所有的語言建模方法。之后不久,BERT 就被擴展用來處理視覺數據。visual-BERT 和 ViLBERT 是其中兩個代表,它們的做法是將文本與圖像 token 組合到一起。
這些模型有兩個訓練目標:1) 經典的掩碼建模任務,目標是預測給定輸入中缺失的部分;2) 句子 - 圖像預測任務,目標是預測圖像標注是否描述了圖像內容。
通過利用這兩個目標,這些模型在多種視覺 - 語言任務上表現出色,這主要是得益于 Transformer 模型有能力學會通過注意力機制將詞與視覺線索關聯起來。
基于對比的 VLM
基于對比的訓練往往能通過基于能量的模型(EBM)更好地解釋,即模型的訓練目標是為觀察到的變量分配低能量,為未被觀察到的變量分配高能量。來自目標分布的數據的能量應該較低,其它數據點的能量應該較高。
使用掩碼目標的 VLM
在深度學習研究中,掩碼是一種常用技術。它可被視為一種特定形式的去噪自動編碼器,其中的噪聲有一種空間結構。它也與修復(inpainting)策略有關,該策略曾被用于學習強大的視覺表征。BERT 也在訓練階段使用了掩碼式語言建模(MLM)來預測句子中缺失的 token。掩碼方法非常適合 Transformer 架構,因此輸入信號的 token 化使得隨機丟棄特定的輸入 token 變得更容易。
已經有一些研究在圖像方面探索這一方法,即掩碼式圖像建模(MIM),具體案例包括 MAE 和 I-JEPA。
很自然地,也有人將這兩者組合起來訓練 VLM。其一是 FLAVA,其使用了掩碼在內的多種訓練策略來學習文本和圖像表征。另一個是 MaskVLM,這是一種獨立模型。
基于生成的 VLM
上面的訓練范式主要是操作隱含表征來構建圖像或文本抽象,之后再在它們之間映射,生成范式則不同,它考慮文本和 / 或圖像的生成。
CoCa 等一些方法會學習一個完整的文本編碼器和解碼器來描述圖像 Chameleon Team 和 CM3leon 等另一些方法則是多模態的生成模型,其訓練目標就包括生成文本和圖像。最后,還有些模型的目標是基于文本生成圖像,比如 Stable Diffusion、Imagen 和 Parti。但是,即便它們是為生成圖像而生的,它們也能被用于解決一些視覺 - 語言理解任務。
用預訓練骨干網絡構建的 VLM
VLM 的一個缺點是從頭開始訓練的成本很高。這通常需要成百上千臺 GPU,同時還必須使用上億對圖像和文本。因此,也有很多研究者探索使用已有的 LLM 和 / 或視覺提取器,而不是從頭開始訓練模型。
這種做法的另一個優勢是可以利用現在很多開源且易用的 LLM。
通過使用這樣的模型,有可能學習到僅在文本模態和圖像模態之間的映射。通過學習這樣的映射,僅需要少量計算資源就可讓 LLM 有能力回答視覺問題。
該團隊在論文中說明了這類模型的兩個代表:一是首個使用預訓練 LLM 的模型 Frozen,二是 Mini-GPT。詳見原論文。
VLM 訓練指南
有一些研究揭示了進一步擴大深度神經網絡規模的重要性。受這些 scaling law 的激勵,最近不少項目都在通過增加計算量和擴大模型規模來學習更好的模型。這就催生了 CLIP 等模型 —— 其訓練使用了 4 億張圖像,計算預算自然也非常高。就算是其開源實現 OpenCLIP,根據模型大小的不同,訓練也使用了 256 到 600 臺 GPU,耗時數天到幾周。
但是,又有一項研究表明通過精心的數據整編,有可能戰勝 scaling law。這一節首先將討論訓練模型時數據的重要性,并會給出一些用于構建 VLM 訓練數據集的方法。
然后會討論常用的軟件、工具和技巧,它們可幫助實踐者更高效地訓練 VLM。
由于訓練 VLM 有多種不同方法,所以文中還會討論特定情形下應該選用什么類型的模型。
之后,該團隊還會給出一些提升定基(grounding,即正確映射文本與視覺線索的能力)的技巧,并介紹使用人類偏好提升對齊的技術。
VLM 常被用于閱讀和翻譯文本,所以他們也會分享一些用于進一步提升 VLM 的 OCR 能力的技術。
最后是一些常用的微調方法。
訓練數據
為了評估預訓練數據集的質量,DataComp 提出了一個基準,其中 CLIP 的模型架構和預訓練超參數都是固定的。其評估重點是設計出能在 38 個下游任務上取得優良零樣本和檢索性能的圖像 - 文本數據集。DataComp 提供了多個有噪聲網頁數據集池,規模從小型(1.28M)到超大型(12.8B)不等。針對每個池,都有多個過濾策略被提出和評估。DataComp 表明:為了訓練出高效高性能的 VLM,數據剪枝是一個關鍵步驟。
用于 VLM 的數據剪枝方法可以分為三大類:(1) 啟發式方法,可以清除低質量數據對;(2) bootstrapping 方法,使用預訓練的 VLM 評估圖像和文本的多模態對齊程度,然后丟棄其中對齊較差的數據對;(3) 用于創建多樣化和平衡數據集的方法。具體的措施包括:
- 使用合成數據來提升訓練數據
- 使用數據增強
- 交錯式的數據整編
- 評估多模態數據質量
- 利用人類專業知識:數據標注的力量
軟件
這一小節討論了現有的可用于評估和訓練 VLM 的軟件以及訓練它們所需的資源。
- 使用現有的公共軟件庫
- 我需要多少臺 GPU?
- 為訓練加速
- 其它超參數的重要性
使用什么模型?
前面已經提到,訓練 VLM 的方法有好幾種。一些是使用簡單的對比訓練方案,一些則是使用掩碼策略來預測缺失的文本或圖塊,還有一些模型使用的是自回歸或擴散等生成范式。也有可能使用 Llama 或 GPT 等預訓練的視覺或文本骨干網絡。在這種情況下,構建 VLM 模型僅需學習 LLM 和視覺編碼器表征之間的映射。
那么,應該如何選擇這些方法呢?我們需要像 CLIP 一樣從頭開始訓練視覺和文本編碼器,還是像 Flamingo 或 MiniGPT 一樣從預訓練的 LLM 開始訓練?
- 何時使用 CLIP 這樣的對比模型?
- 何時使用掩碼?
- 何時使用生成模型?
- 何時使用 LLM 作為預訓練骨干網絡?
提升定基
在 VLM 和生成模型文獻中,定基(grounding)是一個關鍵難題。定基的目標主要是解決模型不能很好理解文本 prompt 的問題,這個問題既可能導致模型忽視 prompt 中的某些部分,也可能導致其產生幻覺,想象出 prompt 中沒有的內容。
解決這些難題需要理解關系,比如確定一個物體是在左邊還是右邊、否定、計數、理解屬性(如顏色或紋理)。
提升定基這個研究領域很活躍,而目前還尚未出現一種能解決此難題的單一簡單方法。盡管如此,在提升定基性能方面,還是有一些技巧可用:
- 使用邊界框標注
- 否定描述
提升對齊
受語言領域指令微調的成功的啟發視覺語言模型也開始整合指令微調和根據人類反饋的強化學習(RLHF)來提升多模態聊天能力以及將輸出與期望響應對齊。
指令微調涉及到在一個包含指令、輸入和期望響應的監督式數據集上對視覺語言模型進行微調。通常來說,指令微調數據集的規模遠小于預訓練數據集 —— 指令微調數據集的規模從少量到數十萬不等。整合了指令微調的視覺語言模型包括 LLaVa、InstructBLIP、OpenFlamingo。
RLHF 的另一個目標是對齊模型輸出與人類偏好。使用 RLHF 時,需要訓練一個獎勵模型來匹配人類偏好 —— 即人類認為一個模型響應是好是壞。盡管指令微調需要監督訓練樣本(收集成本較高),但 RLHF 則可使用輔助式獎勵模型來模擬人類偏好。然后再使用該獎勵模型來微調主模型(不管是語言模型還是視覺語言模型),使其輸出與人類偏好對齊。LLaVa-RLFH 就是一個視覺語言模型整合 RLHF 的突出案例,其能通過事實信息來提升模型的輸出對齊。
提升對富含文本的圖像的理解
在我們的日常生活中,視覺感知中有一大關鍵部分:理解文本。多模態大型語言模型(MLLM)的成功可讓 VLM 以零樣本方式應用于多種應用,并且其中許多已經可用于真實世界場景。
有研究表明 MLLM 具備卓越的零樣本光學字符識別(OCR)能力,無需專門使用特定于 OCR 領域的數據進行訓練。但是,當涉及到數據類型之間的復雜關系時,這些模型往往難以解讀圖像中的文本,原因是它們的訓練數據中包含大量自然圖像。
下面列出了一些在文本理解方面的常見難題以及試圖解決該難題的模型:
- 使用細粒度的富含文本的數據進行指令微調:LLaVAR
- 處理高分辨率圖像中的細粒度文本:Monkey
- 分立式場景文本識別模塊和 MM-LLM:Lumos
參數高效型微調
事實已經證明,在跨領域視覺和語言任務上,VLM 的效果很好。但是,隨著預訓練模型大小持續增長,由于計算限制,微調這些模型的全體參數集將變得不切實際。
為了解決這一難題,參數高效型微調(PEFT)方法誕生了,其目標是解決與微調大規模模型相關的高計算成本問題。這些方法關注的重點是訓練部分參數來使模型適應下游任務,而不是重新訓練全體模型。現有的 PEFT 方法可以分為四大類:
- 基于低秩適配器(LoRa)的方法
- 基于 prompt 的方法
- 基于適應器的方法
- 基于映射的方法
實現負責任 VLM 評估的方法
VLM 的主要能力是實現文本與圖像的映射,因此度量其視覺語言能力就非常關鍵了,因為這能確保詞與視覺線索真正實現了映射。
在評估 VLM 方面,早期的評估任務包括圖像描述和視覺問答(VQA)。
現在還有以文本為中心的 VQA(text-centric VQA)任務,其評估的是模型理解和閱讀圖像中的文本的能力。
Radford et al. [2021] 也提出了一種常用的評估方法,該方法是基于零樣本預測,比如 ImageNet 分類任務。這樣的分類任務可以評估 VLM 是否具備足夠的世界知識。
Winoground 是一個更近期的基準,其度量的是模型的視覺 - 語言組合推理能力。
另外,我們已經知道 VLM 會表現出偏見和幻覺,因此對這兩方面進行評估也非常重要。
將 VLM 擴展用于視頻
之前談到的 VLM 基本都是在靜態視覺數據(圖像)上訓練和評估的。但是,視覺數據還有動態的,即視頻。
對 VLM 而言,視頻數據既能帶來新挑戰,也有望為其帶來新能力,比如理解物體的運動和動態或在空間和時間中定位物體和動作。用文本檢索視頻、視頻問答和視頻生成正在快速成為基礎的計算機視覺任務。
視頻的時間屬性對存儲、CPU 內存來說都是一個巨大挑戰(如果把每一幀都視為一張圖像,那么幀率越高,成本就越高)。于是對于處理視頻的 VLM 而言,就需要考慮多個權衡因素,比如數據加載器中動態視頻解碼器的壓縮格式、基于圖像編碼器來初始化視頻編碼器、為視頻編碼器使用時空池化 / 掩碼機制、非端到端 VLM。
與圖像 - 文本模型類似,早期的視頻 - 文本模型也是使用自監督指標來從頭開始訓練視覺和文本組件。但不同于圖像模型,對比式視頻 - 文本模型并非首選方法,早期時人們更喜歡融合和時間對齊方法,因為相比于計算視頻的全局表征,讓表征中有更多時間粒度更重要。
近段時間,視頻 - 語言模型領域出現了圖像 - 語言模型領域類似的趨勢:使用預訓練 LLM 并將其與視頻編碼器對齊,從而增強 LLM 的視頻理解能力。視覺指令微調等現代技術也被廣泛使用并被適配用于視頻。