多模態大模型工作梳理(施工中....)

InunI發表於2024-03-14

本文是對於近年來一些多模態大模型工作的相關總結,重點是這些模型的演化路線,各自做了什麼改進。

CLIP

論文連結:https://arxiv.org/abs/2103.00020
以往的影像模型都是採用有監督的預訓練,需要在人工標註的資料集上進行學習,這限制了影像模型預訓練的資料規模。
CLIP採用了自然語言訊號來監督影像模型的學習。人工標註的資料集很貴,但是圖片-文字pair對在網上隨處都是。因此,作者從網上爬取了一個新的資料集,其中包含4億對 (影像,文字) 對,用於對比學習。
CLIP訓練
CLIP採用了一個影像編碼器和一個文字編碼器,兩者都生成一個向量,透過拉近相同pair對的距離,拉遠不同pair對的距離,來進行對比學習。所用的損失為InfoNCE Loss,也是Moco中採用的損失。
ÍCLIP的預測
CLIP的預測不依賴於softmax,因此預測訓練中沒有出現過的標籤。透過將類別標籤擴充為多個文字,透過文字編碼器後和影像向量進行比較,相似度最高者即為預測結果。
由於採用了以往難以企及的大規模預訓練,CLIP有著強大的Zero-shot能力。

SLIP

論文地址:https://arxiv.org/abs/2112.12750
SLIP在CLIP的基礎上,引入了更多的模態內部的自監督訊號。
SLIP中,一張圖片經過三種資料增強形成三張圖片:

  1. 圖片1和文字做對比學習。
  2. 圖片2和圖片3做對比學習。
  3. 圖片1和文字用了clip embedding層,圖片2和圖片3用了同一個用於圖片的embedding層。

DeCLIP

論文地址:https://arxiv.org/abs/2110.05208
繼續引入監督資訊,以降低對資料規模的依賴。使用了以下三種監督訊號:

  1. 影像-文字對比監督:即clip的監督方法。
  2. 自監督:
  • 影像:使用simsiam的方法,一張圖片增強得到兩個圖片view,用共享引數的encoder提取特徵,計算並將提升餘弦相似度,然後一邊的encoder回傳梯度,另一邊停止梯度。
  • 文字:使用Bert的MLM預訓練。
  1. 最鄰近監督學習(Nearest-Neighbor Supervision, NNS):維持一個文字特徵佇列,對於每一個影像的兩個view,選取這個佇列中與其最相近的文字特徵作為正樣本,佇列中的其他特徵作為負樣本,做infonce。這樣做是因為非一對的文字和圖片並不一定是不匹配的,這樣可以挖掘潛在的正樣本。

ViLT

論文地址:
以各部分的模型複雜度分類多模態模型
ViLP屬於模型d,視覺和文字編碼器都很輕量,這也是首個視覺編碼器和文字編碼器一樣輕量的方法。且ViLT不採用目標檢測器的同時,沒有損失太多精度。
ViLT結構圖
ViLT表示式
模型流程:

  1. 文字:使用word embedding對文字進行轉換後與model type embedding進行拼接,並加上文字位置編碼。
  2. 影像:分塊後經過一個線性層進行embedding,與model type embedding進行拼接,並加上影像位置編碼。
  3. 文字和影像在向量維度上進行拼接,輸入Transformer Encoder中。Transformer Encoder用ViT的預訓練權重做初始化(可能是因為沒有專門的影像提取器,而影像用transformer提是需要大量預訓練的)。

模型預訓練:

  1. Image Text Matching:Transformer的輸出經過池化和線性層,來判斷文字、圖片是否為一對。
  2. MLM:Bert的預訓練,採用了Whole Word Masking,避免只透過單詞上下文進行預測。

ALBEF

論文地址:https://arxiv.org/abs/2107.07651
ALBEF的全名為ALign the image and text representations BEfore Fusing them,顧名思義,在多模態的特徵融合之前先進行對齊。
ALBEF模型結構
模型由三部分構成:

  1. 影像編碼器:採用12層的ViT-base;
  2. 文字編碼器: 採用Bert的前6層;
  3. 多模態編碼器: 採用Bert的後6層,使用啦cross attention。

共有三個損失函式:

  1. image-text contrastive learning(ITC):圖文對比損失,採用了Moco的feature queue,且影像和文字各維護一個feature queue,單模態的向量各自和另一個模態的佇列做infonce;
  2. Masked Language Modeling(MLM): Bert的預訓練。
  3. Image-Text Matching(ITM): 影像和文字的匹配損失函式。採用多模態編碼器的[cls],後跟線性層和softmax,進行二分類判斷圖文是否一致。由於這個任務過於簡單,所以採用了hard negatives:對於一個 mini-batch 中的每張圖片,按照對比相似度分佈(ITC那一步得到的)從同一 mini-batch 中抽取一個不與該圖片成對的文字,作為 hard negative(與圖片更相似的文字被抽取的機會更高)。同樣地,也為每個文字抽取一個 hard negative。

採用動量模型進行蒸餾學習

在高噪聲的訓練資料集上,很有可能一段不與影像匹配的文字也很好地描述了影像內容,可能比 ground truth 描述地還要好。為了提升在噪聲資料上的訓練效率,ALBEF 採用了 Momentum Distillation(動量蒸餾)的方法生成 pseudo label(是一個 softmax score)。
ITC:
ITC+知識蒸餾
上式中的p和q即softmax得分
即附加一個對動量模型中ITC得到的softmax score的KL散度。
MLM:
MLM+知識蒸餾
即在MLM部分,附加一個對動量模型的MLM中預測得到的softmax score的KL散度。

VLMo

VLMo: Unified Vision-Language Pre-Training with Mixture-of-Modality-Experts
論文地址:https://arxiv.org/abs/2111.02358
雙塔結構:如CLIP,模態互動較為簡單,適用於多模態檢索任務。
單塔結構:如ViLP和ALBEF,會融合模態資訊,適用於多模態分類。
VLMo是一種統一的多模態模型,將多個模態的編碼器統一到了一起,即mixture of modality experts。VLMo的transformer中,多頭自注意力的引數都是相同的,即模態間共享;每個模態都有一個屬於自己的FFN。VLMo中使用了三種:影像、文字和影像文字混合。
VLMo框架
如上圖所示,VLMo可以適配雙塔和單塔的任務:

  1. ITC:影像給V-FFN,文字給L-FFN,最後兩者做對比學習。
  2. ITM:前幾個Block影像和文字分開做,後幾個Block把兩者拼接起來並給VL-FFN。
  3. MLM:同ITM。
    影像和文字的表徵:
    影像表徵
    影像:附加一個[cls],patch後展平經過線性層,加上位置編碼和影像標記。
    文字表徵
    文字:附加一個[cls]和[sep],單詞轉為詞根,經過線性層,加上位置編碼和文字標記。
    聯合:沿著向量方向拼接文字和影像表徵。
    VLMo的預訓練也採用了以上三個任務,但是ITC沒使用moco,只使用mini-batch內的負樣本。同時採用了分階段預訓練,首先利用 BEIT中的大規模純圖self-attention自我注意模組的引數,並在大量純文字資料上透過掩碼語言建模訓練語言專家(L-FFN)。最後,對整個模型進行視覺語言預訓練,即ITC、ITM和MLM。
    三種預訓練任務

BLIP

論文地址:https://arxiv.org/pdf/2201.12086.pdf

相關文章