Long-CLIP:無縫擴展 CLIP 模型的長文本理解能力
一、背景
這里介紹一下新出的文章 Long-CLIP,方案雖然比較簡單,但是 CLIP 使用的場景非常多,因此對很多任務也會比較有幫助。
對應的論文為:??https://arxiv.org/abs/2403.15378??
對應的代碼庫為:??https://github.com/beichenzbc/Long-CLIP/tree/main??
二、摘要
CLIP(Contrastive Language Image Pre-Training)模型在涉及圖文相關的場景中非常常用,比如圖文檢索、文生圖以及大型多模態模型等。它們通常使用 CLIP 中的 Text Encoder 或 Image Encoder 對文本或圖像進行編碼。然而,CLIP 中的 Text Encoder 只支持 77 個 Text Token,甚至有研究表明其超過 20 個 Token 就會導致性能下降,這會導致其無法處理長文本的場景,比如詳細描述。
在 Long-CLIP 中,作者通過對 Positional Embedding 的 Knowledge-Preserved Stretching 以及 Primary Component Matching 方案對 CLIP 模型進行優化,使其在保留短文本能力的同時擴充長文本理解能力,并且可以無縫替換已有的 CLIP 模型,在針對長文本的圖文檢索任務上提升 20%,在傳統圖文檢索任務提升 6%。
三、方法
3.1 CLIP 模型
CLIP 模型是 OpenAI 在大規模圖像-文本對數據集上通過對比學習方式訓練的圖文模型,具體論文可以參考 [2103.00020] Learning Transferable Visual Models From Natural Language Supervision,對應的代碼庫為 GitHub - openai/CLIP: CLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image。其核心思想為:一對圖像-文本分別提取特征,這一對特征的相似性應該盡可能大,而圖像和其他文本對應的特征相似性應該盡可能小。
3.2 Knowledge-Preserved Stretching
CLIP 中的 Text Encoder 采用了可學習的絕對 Position Embedding,因此輸入文本 Token 會受到 77 個 Token 的限制,也有一些方案試圖解決這個問題,比如位置編碼插值方法。然而,這種簡單的線性插值方案可能導致對已有 Position Embedding 的干擾,導致影響模型對短文本的理解能力。
幸運的是,作者發現 CLIP 模型本身的前 20 個 Token 的 Postion Embedding 對模型效果起到至關重要的作用,而在之后的 Position Embedding 并沒有經過較充分的學習。基于這一發現,作者在進行 Position Embedding 插值時會保留前 20 個 Position Embedding,只對后續的 Position Embedding 進行插值。
其相應推理過程也很簡單,這里作者額外創建了一個 positional_embedding_res,其有效長度為 248-20=(77-20)*4=228,也就是 57 個 Position Embedding 擴展為 228 個 Position Embedding,推理時分別處理。
3.3 Primary Component Matching
在進行長度外推后,直接使用長文本進行微調并不能獲得理想的效果,主要是其會導致短文本能力的下降,尤其是在分類任務上。因此,作者進一步探索了如何通過微調來解鎖長文本理解能力,同時保留短文本能力。
具體方案如下圖 Fig.3 所示,作者提出了 Primary Component Matching 策略:
- 同時輸入圖像、短文本以及詳細長文本,分別提取特征,分別對應細粒度圖像特征、粗粒度文本特征和細粒度文本特征;
- 使用 Primary Component Extraction 模塊從細粒度圖像特征中提取粗粒度圖像特征。
- 訓練的目標為:細粒度圖像特征和細粒度文本特征對齊,粗粒度圖像特征和粗粒度文本特征對齊。?
那么什么是細粒度圖像特征,什么是粗粒度圖像特征呢?作者認為,一個好的模型不僅應該能捕獲各種屬性,還應該理解它們之間的相對關系和不同的重要性。而長描述文本微調可能將模型推向于只捕獲各種屬性,為此,作者期望模型還能夠專注于捕獲關鍵屬性對應的粗粒度圖像特征,并與短文本特征對齊。
基于以上考量,作者將 Primary Component Extraction 模塊分為 3 個基本組件:
- Component-Decomposition Function:分解為特征值(重要性)和特征向量,Ifine 為細粒度圖像特征
? - Component-Filtration Function:按照特征值(重要性)過濾,這里作者保留了32 個最大的特征值
? - ?
- Component-Reconstruction Function:使用過濾后的特征值和特征向量恢復到原來的特征空間,Icoarse 為粗粒度圖像特征
?
上述的過程和我們常見的數據壓縮-重建,圖像去噪等處理高度相似,作者也同樣直接使用 PCA(Principal Component Analysis)方法來實現。
PS:其實 OpenAI 在其文生圖模型 DALL-E 2([2204.06125] Hierarchical Text-Conditional Image Generation with CLIP Latents) 中也通過 PCA 來降低 CLIP 圖像 embedding 的維度。這是因為作者發現,當使用 SAM 訓練 CLIP 時,CLIP 表征空間的秩急劇下降,同時略微提升了評估指標。作者發現僅保留 1024 個主成分中的 319 個也能幾乎保留全部信息。
四、評估
4.1 定量評估
如下圖 Table 1 所示,在長文本的文本-圖像檢索任務上,提出的 Long-CLIP 模型獲得了最優的效果:
如下圖 Table 2 所示,在短文本的文本-圖像檢索任務上,提出的 Long-CLIP 模型甚至獲得了比原始 CLIP 更好的效果,并且明顯優于直接微調的方案:
如下圖 Table 3 所示,在 0-shot 圖像分類任務上,提出的 Long-CLIP 模型明顯優于直接微調的方案,并且相比原始 CLIP 差距不大:
4.2 消融實驗
作者也進一步進行了消融實驗,來驗證提出的兩個組件 Knowledge-Preserved Stretching(KPS) 以及 Primary Component Matching(PCM) 的有效性。如下圖 Table 4 所示,同時使用兩個組件在所有任務上獲得了最優效果:
4.3 定性評估
為了驗證提供模型的即插即用特性,作者直接替換了 Stable-Diffusion-V1-5 中的 CLIP text encoder,用于驗證其文生圖能力,如下圖可以看出,替換后模型能更好的遵循指令,生成更多的細節信息,而原始的結果中往往容易忽略一些內容:
PS:其實 OpenAI 也在很早之前意識到了這個問題,在 DALL-E 3(Improving Image Generation with Better Captions)模型中,他們發現傳統的文生圖模型難以遵循詳細的圖像描述,并且經常出現忽略單詞或混淆提示的語義,作者猜測可能是訓練集中的噪聲或者不準確的圖像描述導致的。相應的解決方案是訓練了一個詳圖圖像描述模型,然后對圖像生成高度描述性的文本,然后借助這些文本用于模型訓練,可以大大提高文生圖的指令跟隨能力。此外作者也將相關能力應用到了其強大的視頻生成模型 Sora 中。
PS:在 Google 的 Imagen([2205.11487] Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding)文生圖模型中作者也發現了類似的現象。具體來說,作者發現使用 CLIP 的 Text Encoder 和 T5-XXL 在 MS-COCO 等簡單任務上獲得了相似的表現,但是在 DrawBench 上人們更喜歡 T5-XXL 作為 Encoder 的結果,作者也認為主要原因是 DrawBench 中的文本 Prompt 更加復雜,比如包含更長、更詳細的描述。
五、參考鏈接
- ???https://arxiv.org/abs/2403.15378???
- ???https://github.com/beichenzbc/Long-CLIP/tree/main???
- ???https://arxiv.org/abs/2103.00020???
- ???https://github.com/openai/CLIP???
- ???https://arxiv.org/abs/2204.06125???
- ???https://cdn.openai.com/papers/dall-e-3.pdf???
- ???https://arxiv.org/abs/2205.11487????
本文轉載自 ??AI閑談??,作者: AI閑談
