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