多模態模型結構與訓練總結
01、模型結構
一般的多模態模型架構包含5個部分,分別是:模態編碼器、輸入映射器、大模型骨干、輸出映射器以及模態生成器。
模態編碼器(Modality Encoder, ME)
將多種模態輸入編碼成特征表示
,公式如下
X表示模態,表示各種預訓練好的編碼器。
目前模態主要分為:視覺模態、語音模態、3D點云模態,其中視覺模態主要包括圖像和視頻,對于視頻,視頻通常被均勻采樣成5幀圖像,然后進行與圖像相同的預處理。各模態常用的編碼器如下:
圖像編碼器(Image Encoder):
- NFNet-F6:這是一個無歸一化(normalizer-free)的ResNet變體,它使用了自適應梯度裁剪技術,允許在大量增強的數據集上進行訓練,同時保持了高水平的圖像識別性能。
- ViT(Vision Transformer):ViT將Transformer架構應用于圖像,通過將圖像分割成小塊(patches),然后進行線性投影和多層Transformer編碼來處理圖像。
- CLIP ViT:CLIP(Contrastive Language-Image Pre-training)結合了文本和圖像,通過對比學習優化ViT,將成對的文本和圖像視為正樣本,其他視為負樣本。
- Eva-CLIP ViT:Eva-CLIP是CLIP的穩定版本,它通過對比學習優化了大規模CLIP的訓練和優化過程,為擴展和加速昂貴的多模態基礎模型訓練提供了新的方向。
視頻編碼器(Video Encoder):
- UL2:UL2(Universal Language Model 2)是一個編碼器-解碼器模型,它使用混合去噪目標進行訓練,適用于視頻內容的理解。
音頻編碼器(Audio Encoder):
- C-Former:C-Former使用CIF(Cross-Information Flow)對序列進行轉錄,并結合Transformer提取音頻特征。
- HuBERT:HuBERT是一個自監督的語音表示學習框架,基于BERT,通過預測離散隱藏單元的掩蔽來實現。
- BEATs:BEATs是一個迭代的音頻預訓練框架,旨在從音頻Transformer中學習雙向編碼器表示。
- Whisper:Whisper是一個大型的自監督語音識別模型,它使用大量的未標記數據進行訓練。
3D點云編碼器(3D Point Cloud Encoder):
- ULIP-2:ULIP-2(Universal Language Image Pre-training 2)是一個點云編碼器,它結合了PointBERT作為其主干,用于處理3D點云數據。
輸入映射器(Input Projector, IP)
將模態編碼器輸出的特征與文本特征空間TT對齊,以便輸入到LLM主干。
為輸入映射器,
為映射后的特征向量,即:
給定模態-文本數據集,通過如下目標函數實現特征對齊:
典型的輸入映射器如下:
- 線性投影器(Linear project)或多層感知機(MLP),現在多模態大模型中最常用的輸入映射方式。
- 交叉注意力(Cross-Attention):使用一組可訓練的向量作為query, 將編碼的模態特征
作為key,將其壓縮為固定長度的特征表示。壓縮后的特征表示隨后直接輸入到LLM主干,或者用于與其他模態的交叉注意力融合。
- Q-Former:從模態編碼器的輸出特征
中提取相關特征
,并將這些特征用作LLM主干的輸入。Q-Former通常需要一個單獨的預訓練過程來初始化。
- P-Former:生成“參考提示”(reference prompts),對Q-Former產生的提示施加對齊約束,同樣需要一個單獨的預訓練過程。
大模型骨干(LLM Backbone)
處理來自不同模態的表示,進行語義理解、推理和決策。
LLM主干通常是基于預訓練的文本模型,能夠處理多種模態的輸入,并生成文本輸出 t 和其他模態的信號Token
,指導模態生成器產生相應的多模態內容。
對于其他模態的信號Token ,如果用于生成多模態內容,其生成過程可表示為:
表示其他模態的對其表征,可以看做LLM的軟Prompt-tuning。
典型的LLM包括:Flan-T5、ChatGLM、UL2、Qwen、Chinchilla、OPT、PaLM、LLaMA、LlaMA2、Vicuna等。
輸出映射器(Output Projector, OP)
輸出映射器將LLM主干產生的信號Token映射成模態生成器可以理解的特征,通常由Tiny Transformer或MLP實現。
為輸出映射器,映射過程即:
在這一過程中,為了促進映射后特征的對齊,通過如下目標函數最小化
和模態生成器的條件文本表示之間的距離,即:
為模態生成器中的文本條件編碼器。
模態生成器(Modality Generator,MG)
模態生成器根據LLM主干的輸出從而實現不同模態的輸出,如對于圖像,可以使用基于擴散模型(如Stable Diffusion)的生成器;對于視頻,可以使用基于時間序列的生成器(如Zeroscope);對于音頻,可以使用基于音頻變換器的生成器(如AudioLDM)。
由輸出映射器映射的特征充當去噪過程中的條件輸入,為了生成特定模態的內容,模態生成器首先需要將真實內容轉換為潛在特征
。這一步通過預訓練的變分自編碼器(VAE)完成。接著,向
添加噪聲 ? 以獲取帶有噪聲的潛在特征
。之后,通過一個預訓練的U-Net模型計算出預測的噪聲
,并基于此計算模態生成器的損失函數。該損失函數定義如下:
02、模型訓練
在訓練過程中,輸入和輸出映射器通常是輕量級組件,而LLM主干則是模型的核心,通常保持凍結狀態,以減少訓練成本。通過這種方式,MM-LLMs能夠在保持高效訓練的同時,實現對多模態任務的強大支持。
LMM訓練考慮要素
- 圖像分辨率
更高的圖像分辨率可以包含更詳細的視覺特征,有利于需要細粒度信息的任務。像LLaVA-1.5和VILA采用336*336分辨率,Qwen-VL和MiniGPT-v2采用448*448分辨率。
大分辨率帶來的較長的詞元序列,需要額外的訓練和推理代價。MiniGPT-v2通過拼接4個相鄰的視覺詞元,降低詞元序列的長度。Monkey方法提出了增強輸入圖像分辨率而無需重訓練高分辨率的視覺編碼器模型的方法,使用低分辨率編碼器,可以處理1300*800的圖像。DocPedia方法,為了增強富文本圖像、表格和文檔的理解, 將視覺編碼器分辨率增強到25602560。 - 高質量SFT數據
高質量SFT數據可顯著提升特定任務的性能。 - 在LLM骨干進行執行PEFT, 可以提升深度嵌入對齊能力,對ICL重要
- 交替文本-圖像數據更好,而僅圖像文本對則是次優的
- 在SFT中,重新混合僅文本的指令數據 與圖文數據(如非自然語言指令),不僅可以解決僅文本任務的性能下降,也正提升視覺語言任務的準確性。
多模態大模型的訓練主要分為兩個階段:多模態預訓練(MM PT, MultiModal Pre-Training)和多模態指令微調(MM IT, MultiModal Instruction Tuning)
多模態預訓練
預訓練階段,采用數據集,輸入和輸出映射器用于實現不同模態之間的對齊,對于LLM Backbone有時使用PEFT訓練。
對于多模態理解模型,只優化文本生成損失;對于多模態生成模型,需要優化文本生成損失、模態生成損失和輸出對齊損失。
典型的數據集包括:圖像-文本、視頻-文本、語音-文本等,其中圖像文本包含兩種,分別是圖像文本(<img1><txt1>)和交替圖像文本(<img1><txt1><txt2><img3><txt3>)。
多模態指令微調
這一階段,通過指令格式化的數據集對預訓練的MM-LLM進行微調,以提高模型遵循新指令的能力,增強其在未見任務上的性能。
指令微調包括監督微調(SFT)和人類反饋強化學習(RLHF),增強多模態大模型的交互能力,顯著改善零樣本性能,極大增強泛化能力。
視覺語言指令微調(VLIT)
預訓練階段,MLLM需要使用大量的圖像文本對作為訓練數據,以在不同模態之間實現對齊,并將視覺信號轉化為LMM可以理解的表征或Token。
指令微調階段,需額外的需求以理解視覺信息。隨著多模態數據越來越多地融入 LLM 中,視覺語言指令調優(VLIT)受到了越來越多的關注,與純文本指令調優相比,它呈現出更復雜的特征。
指令微調階段的損失函數:
03、總結
最近看了很多多模態大模型相關的論文,今天對模型結構和訓練進行一個簡單總結,整體來看,各家的模型結構基本上一致,無非是一些模型細節上的改變。模型訓練方式也大差不差,基本上都是預訓練+微調。整體的模型結構了解了,后續就開始更新模型的各個模塊單元了,首先從模態編碼器上繼續進行一個系統的學習,希望能幫助到大家。