- 萬字長文總結多模態大模型最新進展
- 😊Flamingo
- 1. Visual processing and the Perceiver Resampler
- 2. GATED XATTN-DENSE details
- 3. Multi-visual input support
- 4. 訓練細節
- 😂BLIP-2
- 😊Flamingo
萬字長文總結多模態大模型最新進展
MLLM 的驚人新能力,如基於影像撰寫故事和無 OCR 的數學推理,在傳統方法中很少見,這表明了通向通用人工智慧的潛在路徑。
😊Flamingo
Flamingo: a Visual Language Model for Few-Shot Learning
1. Vision Encoder(視覺編碼器)
將輸入的影像或影片轉換成特徵表示, 通常是一個深度卷積網路,它能夠提取視覺資料的重要資訊。
2. Perceiver Resampler(感知器重取樣器)
接收來自視覺編碼器的時空特徵,並輸出固定數量的視覺標記(tokens)。它透過學習一組潛在的查詢向量,並將這些查詢與視覺特徵進行交叉注意(cross-attention),從而將變化大小的特徵圖轉換為固定數量的輸出。
3. 1st GATED XATTN-DENSE / n-th GATED XATTN-DENSE(第一門控交叉注意密集層 / 第n門控交叉注意密集層)
它們被訓練為從頭開始學習。這些層是交錯在預訓練的語言模型層之間的,負責將視覺資訊整合到語言模型中。它們使用門控機制(gating mechanism)來控制資訊流,從而在初始化時保持語言模型的完整性,並提高訓練穩定性和最終效能。
4. Interleaved visual/text data(交錯的視覺/文字資料)
一段文字中可以包含多個影像標籤(
<image>
),這些影像與文字交錯排列。
<image>
標籤用於表示文字中的一個特定位置,該位置與一個影像相關聯。這種標籤是一種佔位符,它指示模型在處理文字時,應該考慮與之相關聯的影像內容。
首先,Perceiver Resampler 接收來自視覺編碼器的時空特徵(從影像或影片獲取),並輸出固定數量的視覺標記。其次,這些視覺標記用於透過新初始化的交叉注意力層對凍結的語言模型進行條件化,這些層被插入到預訓練的語言模型層之間。這些新層為語言模型提供了一種表達方式,以便將視覺資訊納入到下一個標記預測任務中
1. Visual processing and the Perceiver Resampler
視覺編碼器:是一個預訓練並凍結的 Normalizer-Free ResNet(NFNet),使用 Radford 等人提出的 two-term contrastive loss,在影像和文字對資料集上對視覺編碼器進行對比目標的預訓練。使用最終階段的輸出,即一個二維空間網格的特徵,將其壓平為一個一維序列。
two-term contrastive loss 是一種用於訓練視覺編碼器(Vision Encoder)的損失函式,它基於對比學習(contrastive learning)的原則
\(L=-\frac{1}{N} \sum_{i-1}^{N}\left(\log \frac{e^{\operatorname{sim}\left(f\left(x_{i}\right), f\left(x_{i}^{+}\right)\right)}}{\sum_{j-1}^{N} e^{\operatorname{sim}\left(f\left(x_{i}\right), f\left(x_{j}\right)\right)}}\right)\)
\(x_i\) 是第\(i\)個樣本,\(x_i^+\) 是與 \(x_i\) 正相關的樣本(例如同一影像的不同描述),\(x_j\)是與\(x_i\) 負相關的樣本,可能包括與不同影像對應的描述,或者是隨機配對的影像和文字。
對於影片輸入,幀以 1 FPS 進行取樣並獨立編碼,以獲得一個三維時空特徵網格,然後將學習到的時間嵌入新增到其中。特徵然後被壓平為一維,然後輸入到 Perceiver Resampler 中。
1. 幀取樣 Frame Sampling
影片由一系列連續的幀組成。為了處理影片,首先需要對這些幀進行取樣。這裡提到的“以1 FPS(每秒幀數)進行取樣”意味著模型每秒只考慮一幀影像,這通常用於降低計算複雜度並提取關鍵幀。
2. 獨立編碼
每個取樣得到的幀都被獨立地送入視覺編碼器進行處理。這意味著每一幀都被當作一個獨立的影像來編碼,而不是考慮幀之間的時間連續性。
3. 三維時空特徵網格
儘管每一幀被獨立編碼,但最終得到的是一個三維特徵網格,這可能意味著特徵網格在空間維度(如高度和寬度)之外,還增加了一個時間維度來表示幀的順序。
4. 學習時間嵌入
為了捕捉幀之間的時間關係,模型會學習時間嵌入。這些嵌入是可學習的引數,用於表示不同幀之間的時間間隔或順序。
5. 特徵壓平
將三維特徵網格壓平為一維序列,這樣每個幀的特徵都被轉換成一個長向量
Perceiver Resampler 模組將由 Vision Encoder 輸出的可變大小的時空視覺特徵網格對映到固定數量的輸出標記(圖中為五個),與輸入影像解析度或輸入影片幀數無關。這個 transformer 具有一組學習到的潛在向量作為查詢,而鍵和值則是由時空視覺特徵與學習到的潛在向量的連線組成。
Perceiver Resampler:從不同大小的大型特徵圖到少量視覺標記。這個模組將視覺編碼器連線到凍結的語言模型,如上圖所示。它以視覺編碼器中的影像或影片特徵的可變數量作為輸入,併產生固定數量的視覺輸出(64 個),從而降低了視覺-文字交叉注意力的計算複雜度。
類似於 Perceiver 和 DETR,本文學習了預定義數量的潛在輸入查詢,這些查詢被輸入到一個 Transformer 中,並對視覺特徵進行交叉關注。消融研究中展示了使用這樣一個視覺-語言重取樣模組優於一個普通的 Transformer 和一個 MLP。
2. GATED XATTN-DENSE details
上圖提供了一個 GATED XATTN-DENSE 塊的示意圖,以及它與一個凍結的 LM 塊的連線方式,同時附上了虛擬碼。
1. Gated Cross Attention (門控交叉注意力)
使用門控機制來控制語言特徵(y)和視覺特徵(X)之間的互動。門控引數
alpha_xattn
初始化為0,並透過tanh函式啟用,以控制從視覺輸入到語言模型的注意力流。\(y = y + tanh(alpha\_xattn)\ *\ attention(1=y, kv=x)\)
2. Gated Feed Forward (dense) Layer (門控前饋密集層)
一個門控的前饋網路層, 對經過交叉注意力處理的語言特徵進行進一步的非線性變換。
門控引數
alpha_dense
同樣初始化為0,並透過tanh啟用$y = y+ tanh(alpha_dense)\ *\ ffw(y) $
3. 凍結的LM
將融合了視覺特徵的語言特徵 \(y\) 作為 \(q, k, v\) 輸入凍結的語言模型層計算。
\(y = y+frozen\_attention(q=y, kv=y)\)
4. 凍結的FFW
輸入凍結的前饋網路進行計算
\(y = y + frozen\_ffw(y)\)
下圖繪製了 Flamingo-3B 模型的 24 個 LM 層在訓練過程中(從 0% 到 100%)不同層中 tanh 門控值的絕對值的演變。
凍結的 LM 堆疊的所有層似乎都利用了視覺資訊,因為 tanh 門控的絕對值從其 0 初始化中迅速增長。
我們還注意到,絕對值似乎隨著深度增加而增加。然而,從這個觀察中很難得出強有力的結論:門控之前的啟用的規模也可能隨著深度變化。未來的工作需要更好地理解這些新增層對最佳化動態和模型本身的影響。
3. Multi-visual input support
首先透過在文字中的視覺資料位置插入 image 標籤以及特殊標記 BOS 表示“序列開始”或 EOC 表示“塊結束”)來處理文字。
一個輸入序列,只在開頭新增BOS,後續每個文字序列結束都新增EOC
影像由 Vision Encoder 和 Perceiver Resampler 獨立處理,以提取視覺標記。
在給定的文字標記處,模型僅與最後一個前導影像/影片對應的視覺標記進行交叉關注。
𝜑 指示文字標記可以關注的影像/影片,或者在沒有前導影像/影片時為 0
上圖說明了本文使用的 mask 方法,以限制某個文字標記看到的視覺標記數量。
我們還對影像/影片和文字的交錯序列的符號化進行了規範化。交錯的視覺資料和文字序列。
我們考慮交錯的影像/影片和文字示例:每個示例包含一系列文字 𝑦,一系列影像/影片 𝑥,以及影像在文字中的位置序列。
基於視覺資料的位置,我們定義一個函式 \(\varphi:[1, L] \mapsto \rightarrow[0, N]\),它為每個文字位置分配最後一個出現在該位置之前的影像/影片的索引(或者如果該位置之前沒有視覺資料,則為 0)。函式 𝜑 定義了我們考慮用於預測的標記的可用視覺輸入:前面的標記
4. 訓練細節
-
訓練資料集由不同格式的訓練資料集混合而成。去除交錯的影像文字資料集 M3W 導致效能下降超過 17%,而去除傳統的配對影像文字對也會導致效能下降(下降 9.8%),這表明需要不同型別的資料集。
-
凍結 LM 元件可以防止災難性遺忘。如果從頭開始訓練,我們觀察到效能大幅下降了-12.9%。
有趣的是,微調我們預訓練的 LM 也導致了效能下降了-8.0%。
-
資料集加權。M3W、ALIGN、LTIP 和 VTP,其權重分別為 1.0、0.2、0.2 和 0.03。這些權重是在小模型規模下經驗性地獲得的,並且在之後保持不變。