Meta 聯合紐約大學和華盛頓大學提出MetaCLIP,帶你揭開CLIP的高質量數據之謎。
自2021年誕生,CLIP已在計算機視覺識別系統和生成模型上得到了廣泛的應用和巨大的成功。我們相信CLIP的創新和成功來自其高質量數據(WIT400M),而非模型或者損失函數本身。雖然3年來CLIP有大量的后續研究,但并未有研究通過對CLIP進行嚴格的消融實驗來了解數據、模型和訓練的關系。
CLIP原文僅有簡短的數據處理描述,而后續工作依靠已經訓練好的CLIP來重新過濾數據去訓練CLIP(學生)模型。更廣泛地說,雖然目前的開源著重強調已訓練模型權重的公開,而訓練數據以及如何從低質量數據獲得高質量數據的技巧的公開度卻往往并不那么高。
本文帶你揭開CLIP的數據質量之謎,為開源社區帶來元數據導向的CLIP預訓練(MetaCLIP)。
- 原文鏈接:https://arxiv.org/abs/2309.16671
- 項目鏈接:https://github.com/facebookresearch/MetaCLIP
- 論文標題:Demystifying CLIP Data
MetaCLIP數據質量
MetaCLIP根據CLIP原文對數據處理的描述,提出可擴展到整個CommonCrawl上的數據算法。該算法接受原始互聯網數據分布,產生在元數據上平衡的高質量訓練數據分布。
MetaCLIP產生的數據質量源自兩個部分:
(1) 通過元數據字符串匹配來抓取高質量人類監督文本;
(2)通過平衡數據在元數據上的分布來最大限度保留長尾數據的信號、弱化噪聲以及頭部分布的冗余信息。MetaCLIP的元數據來自50萬個WordNet和維基百科的視覺概念(visual concept),它們使被匹配的alt文本包含超越人類平均認知水平的監督質量(superhuman level supervision)。
我們的實驗嚴格遵循CLIP設定來控制研究數據分布對結果的影響。整個數據提取,訓練無需已訓練CLIP來過濾數據以及潛在未知的來自OpenAI CLIP的數據偏見。
相反的是,MetaCLIP數據算法同時輸出訓練數據分布。這使得訓練數據更加透明,以方便調試模型。MetaCLIP在400M訓練數據上達到ViT-B 70.8%的零樣本ImageNet分類精度;使用1B訓練數據上達到72.4%;在2.5B訓練數據上使用ViT-bigG模型達到82.1%,而整個模型和訓練參數并未進行任何更改(比如學習率或批樣本量)。
消融實驗表明:字符串匹配(MetaCLIP w/o bal. (400M))和平衡分布(MetaCLIP(400M)) 對MetaCLIP的數據質量產生重大貢獻。
CLIP數據算法介紹
本文正式提出CLIP數據算法,來簡化和產生高質量的訓練數據。
該方法大致分為:創建元數據,提出數據算法,提高數據質量及輸出訓練數據等四個步驟。
具體方法見下:
(1) 實現了CLIP數據的相關描述,包括如何創建元數據;
(2)提出如下數據算法:第一部分為元數據字符串匹配,第二部分為平衡數據分布。該算法簡潔可擴展,本文已證明可在所有CommonCrawl 300+B 級圖片樣本并行運行;
(3)可植入已有數據流水線或者數據加載器(data loader)來提高數據質量;
(4)輸出訓練數據在元數據上的訓練分布使得訓練數據更透明。
該算法的python代碼如下:
MetaCLIP的元數據來自WordNet和Wikipedia的高質量視覺概念(visual concept)。我們根據CLIP原文描述實現了從維基百科提取uni/bi-gram以及高頻標題的過程。
相關選取的超參數如下:
元數據的創建來源
MetaCLIP算法簡潔,可以將兩部分分開植入已有的數據流水線。
如下圖所示,該算法可以在數據流水線的早期進行植入,來減小數據規模和對計算資源存儲的開銷:
- 第一部分(元數據字符串匹配)能減少50%的數據量;
- 第二部分(平衡數據分布)能減少77%的數據量。
算法可輕松接入已有數據流水線,降低處理低質量數據的開銷
下圖展示了平衡數據分布的效果:橫坐標將元數據里每個視覺概念的匹配數量從低到高排列,縱坐標累計匹配。
表格中展示了不同頻率區段視覺概念的匹配數量:
平衡數據分布使得1.6B的原始數據被下采樣成400M的訓練數據。
我們可以看到MetaCLIP數據算法對頭部分布進行了高度下采樣,這將降低頭部分布的冗余無效信息和頭部數據的噪聲(比如untitled photo),所有長尾分布的視覺概念全部保留。
實驗結果
我們設計了兩個數據池來運行數據算法。
- 第一個池的目標是獲得400M訓練數據來和CLIP進行比較;
- 第二個池的目標是所有CommonCrawl數據。
我們進一步對第二個數據池運行了兩次數據算法,一次設定頭尾分布的閾值(t=20k)與400M一致(最終獲得1B數據),一次設定尾部分布的比例與400M尾部的比例一致(t=170k,最終獲得2.5B數據)。
MetaCLIP在DataComp的38個任務上的實驗結果如下:
我們可以看到MetaCLIP在400M上略好于OpenAI CLIP或者OpenCLIP。在第二個池上性能進一步超越400M。更多的數據在更大的模型ViT-bigG上產生更好的效果。而這些性能的提升完全來自數據而非模型結構改進或者訓練技巧本身。
在CLIP/SLIP每個分類任務上的詳細實驗結果請參考原文。
實驗結論
本文提出了CLIP的數據算法來產生高質量訓練數據:算法可在所有CommonCrawl 的300+B 級圖片樣本對上并行運行。
實驗表明元數據字符串匹配和平衡分布都對結果有重大貢獻,算法無需使用CLIP模型過濾或者提高訓練開銷來提升性能,并且使得訓練數據分布更加透明。
本文轉自 機器之心 ,作者:機器之心
