《Learning Transferable Visual Models From Natural Language Supervision》論文學習

一、Abstract

最先進的計算機視覺系統被訓練用以預測一組預定的固定目標類別。這種受限的監督方式限制了它們的通用性和可用性,因爲需要額外的標記數據來指定任何新的視覺概念。因此,直接從關於圖像的原始描述文本中學習是一個有希望的替代方法,它利用了更廣泛的因特網監督來源。

我們證明了預測哪個標題與哪張圖片匹配的簡單預訓練任務是一種有效且可擴展的方式,它能夠從零開始學習SOTA圖像表示,在從互聯網收集的4億(圖像,文本)對數據集上進行學習。預訓練之後,自然語言被用來引用已經學習到的視覺概念(或描述新的概念),從而實現了模型對下游任務的零樣本遷移。

我們通過在超過30種不同的現有計算機視覺數據集上進行基準測試來研究這種方法的性能,這些任務包括OCR、視頻中的動作識別、地理定位和許多類型的細粒度對象分類。該模型在大多數任務上都能有不錯的遷移性能,並且通常能與完全監督的基線模型競爭,而不需要任何特定數據集的針對性訓練。例如,我們在ImageNet上實現了與原始的ResNet-50相同的準確性,而且不需要使用任何它所訓練的128萬訓練樣本。

參考鏈接:

https://arxiv.org/pdf/2103.00020.pdf

 

二、Introduction and Motivating Work

近幾年來,直接從原始文本學習的預訓練方法已經徹底改變了自然語言處理(NLP)領域。像自迴歸(autoregressive)和掩碼語言建模(masked language modeling)這種任務無關(Task-agnostic objectives)的技術,在計算量、模型容量和數據量上已經擴展了許多個數量級,能力也在穩步提升。

將“文本到文本”作爲一個標準的輸入輸出接口的發展,使得與任務無關的架構能夠零樣本遷移(zero-shot transfer)到下游數據集,省去了專用輸出頭或數據集特定定製的需求。像GPT-3這樣的系統現在在許多任務中都能與定製模型競爭,同時幾乎不需要特定數據集的訓練數據。

這些結果表明,現代預訓練方法在網絡規模的文本集合中獲得的自監督數據集,超過了高質量衆包標註的NLP數據集。然而,在計算機視覺等其他領域,預訓練模型仍然標準做法是使用衆包標註的數據集,例如ImageNet。那麼,直接從網絡文本學習的可擴展預訓練方法是否能在計算機視覺中帶來類似的突破呢?先前的研究是令人鼓舞的。

  • 20多年前,Mori等人探索了通過訓練模型來預測與圖像配對的文本文檔中的名詞和形容詞,以改進基於內容的圖像檢索。
  • Quattoni等人證明了通過在分類器的權重空間中進行流形學習,可以學習更數據高效的圖像表示,這些分類器被訓練用以預測與圖像相關的標題中的單詞。
  • Srivastava和Salakhutdinov探討了通過訓練多模態深度玻爾茲曼機器在低級圖像和文本標籤特徵之上進行深度表示學習。
  • Joulin等人對這一系列工作進行了現代化改進,並證明了訓練CNN預測圖像標題中的單詞可以學到有用的圖像表示。他們將YFCC100M數據集中圖像的標題、描述和哈希標籤元數據轉換成了一個詞袋多標籤分類任務,並表明預訓練AlexNet來預測這些標籤所學到的表示,在遷移任務上的表現類似於基於ImageNet的預訓練。
  • Li等人隨後將這種方法擴展到預測短語n-grams以及單個單詞,並展示了他們的系統通過基於所學到的視覺n-grams字典對目標類別進行評分並預測得分最高者來進行零樣本遷移到其它圖像分類數據集的能力。
  • 採用更爲新穎的架構和預訓練方法,VirTex、ICMLM和ConVIRT最近展示了基於變換器(transformer)的語言建模、掩碼語言建模和對比目標來從文本學習圖像表示的潛力。

儘管這些作爲概念證明的研究成果令人興奮,但使用自然語言監督進行圖像表示學習仍然不常見。這可能是因爲在常見基準測試上展示的性能遠低於其他方法。例如,Li等人在零樣本設置下在ImageNet上的準確率僅爲11.5%,這遠低於當前最先進水平的88.4%準確率。它甚至低於經典計算機視覺方法的50%準確率。相反,更狹窄範圍但目標明確的弱監督使用提高了性能。Mahajan等人顯示出預測Instagram圖片中與ImageNet相關的標籤是一個有效的預訓練任務。在調整到ImageNet後,這些預訓練模型提高了超過5%的準確率,並提升了當時的整體最先進水平。Kolesnikov等人和Dosovitskiy等人也通過預訓練模型來預測噪聲標籤的JFT-300M數據集的類別,在更廣泛的遷移基準上展示了大幅度的提升。

 

三、Approach

0x1:Natural Language Supervision

我們方法的核心思想是從自然語言中包含的監督信息中學習感知。正如在引言中討論的那樣,這並不是一個新想法,然而用來描述這一領域工作的術語是多種多樣的,甚至看起來相互矛盾,而且所陳述的動機也是多種多樣的。

張等人(2020年),戈麥斯等人(2017年),朱林等人(2016年),以及德賽與約翰遜(2020年)都介紹了一些從文本與圖像配對中學習視覺表徵的方法,但他們分別將自己的方法描述爲無監督、自監督、弱監督和監督。我們強調,在這一系列工作中共同的不是使用的具體方法的任何細節,而是對自然語言作爲訓練信號的重視。所有這些方法都是從自然語言監督中學習的。儘管早期工作在使用主題模型和n-gram表徵時與自然語言的複雜性作鬥爭,但在深層次上下文表徵學習方面的進步表明,我們現在已經有了有效利用這一豐富監督資源的工具。

與其他訓練方法相比,從自然語言中學習具有幾個潛在的優勢。

  • 與標準的衆包標註進行圖像分類相比,擴展自然語言監督要容易得多,因爲它不需要註釋是經典的“機器學習兼容格式”,例如典型的1-of-N多數投票“標籤”。相反,可以處理自然語言的方法可以從互聯網上大量文本中包含的監督信息中被動學習。
  • 從自然語言中學習相對於大多數無監督或自監督學習方法還有一個重要的優勢,因爲它不僅僅是學習了一種表徵,而且還將該表徵與語言連接起來,這使得它能夠靈活地進行零樣本遷移。

0x2:Creating a Sufficiently Large Dataset

現有工作主要使用了三個數據集:

  • MS-COCO(林等人,2014年)
  • Visual Genome(克里希納等人,2017年)
  • YFCC100M(託梅等人,2016年)

MS-COCO和Visual Genome是高質量的衆包標註數據集,但按照現代標準,它們的規模都很小,每個大約有100,000張訓練照片。相比之下,其他計算機視覺系統則是在多達35億張Instagram照片上訓練的(馬哈詹等人,2018年)。YFCC100M有1億張照片,可能是一個替代選擇,但每張圖片的元數據稀疏且質量參差不齊。許多圖片使用自動生成的文件名,如20160716_113957.JPG,作爲“標題”,或包含有關相機曝光設置的“描述”。在過濾後,僅保留那些有自然語言標題和/或英文描述的圖片,數據集縮小了6倍,只剩下1500萬張照片。這個數量大約與ImageNet相當。

自然語言監督的一個主要動機是互聯網上公開可獲得的大量此類形式的數據。由於現有數據集並沒有充分反映這種可能性,僅考慮在它們上面的結果會低估這一研究方向的潛力。爲了解決這個問題,我們構建了一個新的包含4億個(圖片,文本)對的數據集,這些數據從互聯網上多個公開可用的來源收集而來。爲了儘可能廣泛地覆蓋視覺概念,我們在構建過程中搜索包含了一組500,000個查詢的(圖片,文本)對。1我們通過每個查詢最多包括20,000個(圖片,文本)對來大致平衡結果。最終的數據集總詞數與用來訓練GPT-2的WebText數據集相似。我們將這個數據集稱爲WIT,即WebImageText。

0x3:Selecting an Efficient Pre-Training Method

先進的計算機視覺系統使用了非常大量的計算資源。馬哈詹等人(2018年)訓練他們的ResNeXt101-32x48d需要19個GPU年,而謝等人(2020年)訓練他們的Noisy Student EfficientNet-L2需要33個TPUv3核年。考慮到這兩個系統都是訓練來預測僅1000個ImageNet類別,從自然語言中學習一個開放集合的視覺概念的任務看起來是艱鉅的。在我們的努力過程中,我們發現訓練效率是成功擴展自然語言監督的關鍵,我們根據這個指標選擇了我們最終的預訓練方法。

我們的初步方法,類似於VirTex,聯合訓練了一個圖像CNN,以及一個從零開始的text transformer,用以預測圖像的標題。然而,我們遇到了有效擴展這種方法的困難。在下圖中,我們展示了一個6300萬參數的transformer語言模型,它已經使用了其ResNet-50圖像編碼器兩倍的計算量,但學習識別ImageNet類別的速度比一個更簡單的基線(預測得到bag-of-words)慢三倍。

這兩種方法都有一個關鍵的相似之處。他們試圖預測伴隨每張圖片的文本的確切單詞。

由於與圖像共存的描述、評論和相關文本的多樣性,這是一項困難的任務。最近在圖像的對比表示學習(contrastive representation learning)方面的研究發現,對比目標可以學到比相應的預測目標更好的表示。另外的研究發現,雖然圖像的生成模型可以學習高質量的圖像表示,但它們比具有相同性能的對比模型需要多一個數量級的計算。

基於這些發現,我們探索了訓練一個系統來解決潛在更容易的代理任務,即僅預測哪個文本作與哪個圖像配對,而不是預測那個文本的確切單詞。

從相同的詞袋編碼基線開始,我們在上圖中將預測目標換成對比目標,並觀察到零樣本遷移到ImageNet的速度進一步提高了4倍。

給定一個包含N個(圖像,文本)對的樣本batch,CLIP被訓練來預測在N×N個可能的(圖像,文本)配對中正確的N個配對。爲此,CLIP的損失函數是一個包含了image encoder和text encoder多模態嵌入空間的聯合函數,並通過最小化image embedding和text embedding和聯合概率分佈在正確N個配對和N2-N錯誤配對上的cosine相似度來優化網絡權重。我們使用互信息熵來歸一化cosine相似度損失。

在下圖中,我們包含了CLIP實現核心的僞代碼。

由於我們的預訓練數據集規模龐大,過擬合併不是主要的擔憂。我們從零開始訓練CLIP,既不使用ImageNet權重初始化圖像編碼器,也不使用預訓練權重初始化文本編碼器。我們僅使用線性投影將每個編碼器的表示映射到多模態嵌入空間。

我們還移除了張等人(2020)的文本轉換函數tu,該函數從文本中均勻抽樣單個句子,因爲CLIP的預訓練數據集中的許多(圖像,文本)對只有單個句子。我們還簡化了圖像轉換函數tv。訓練期間使用的唯一數據增強是從調整大小的圖像中隨機裁剪正方形。最後,控制softmax中logits範圍的溫度參數τ是作爲一個對數參數化的乘法標量在訓練期間直接優化的,以避免將其作爲一個超參數進行調整。

0x4:Choosing and Scaling a Model

我們考慮了兩種不同的圖像編碼器架構。

  • 對於第一種,我們由於其廣泛的採用和經過驗證的性能,使用ResNet-50作爲圖像編碼器的基礎架構。我們對原始版本進行了幾處修改,使用了何等人(2019年)提出的ResNetD改進以及張(2019年)提出的抗鋸齒矩形-2模糊池化。我們還用一種注意力池化機制替換了全局平均池化層。注意力池化是作爲單層“transformer-style”的多頭QKV注意力實現的,其中查詢條件是基於圖像的全局平均池化表示。
  • 對於第二種架構,我們嘗試了最近引入的Vision Transformer (ViT)(Dosovitskiy等人,2020年)。我們遵循了原始算法的基本實現,僅添加一個額外的正則化層,以此將patch和position embedding合併到Transformer結構前,並使用了一個略有不同的初始化方案。

文本編碼器是一個Transformer(Vaswani等人,2017年),其架構修改在Radford等人(2019年)中有描述。作爲基礎尺寸,我們使用一個具有63M參數的12層、寬度爲512的模型,以及8個注意力頭。Transformer建立在一個使用小寫字母的字節對編碼(BPE)表示的文本上,其詞彙量大小爲49,152(Sennrich等人,2015年)。

爲了計算效率考慮,最大序列長度被限制在76個。文本序列以[SOS]和[EOS]標記爲界,並且Transformer最高層在[EOS]標記處的激活被視爲文本的特徵表示,這在層正則化後線性投射進多模態嵌入空間。文本編碼器中使用了掩碼自注意力,爲了保存用預訓練語言模型初始化的能力,或者添加語言建模作爲一個輔助目標。

儘管以往的計算機視覺研究通常通過增加寬度(Mahajan等人,2018年)或深度(何等人,2016a)來單獨擴展模型,但對於ResNet圖像編碼器,我們採用了Tan & Le(2019年)的方法,他們發現在寬度、深度和分辨率上分配額外計算資源比只在模型的一個維度上分配要表現得更好。儘管Tan & Le(2019年)爲他們的EfficientNet架構調整了分配給每個維度計算資源的比例,我們使用了一個簡單的基線,即將額外的計算資源平等地分配給增加模型的寬度、深度和分辨率。

對於文本編碼器,我們僅將模型的寬度比例地擴大到等於ResNet寬度增加的計算,而根本不擴展深度,因爲我們發現CLIP的性能對文本編碼器的容量不那麼敏感。

0x5:Training

我們訓練了一系列5個ResNets和3個視覺變換器(Vision Transformers)。

  • 對於ResNets,我們訓練了一個ResNet-50、一個ResNet-101,然後是另外3個遵循EfficientNet風格模型縮放的網絡,並且分別使用大約4倍、16倍和64倍於ResNet-50的計算量。它們分別被表示爲RN50x4、RN50x16和RN50x64。
  • 對於視覺變換器,我們訓練了一個ViT-B/32、一個ViT-B/16和一個ViT-L/14。

我們訓練所有模型共32個epoch。

我們使用Adam優化器(Kingma & Ba, 2014),並配合解耦的權重衰減正則化(Loshchilov & Hutter, 2017)應用於所有非增益或偏置的權重,並使用餘弦調度(Loshchilov & Hutter, 2016)衰減學習率。

初始超參數是通過對訓練了1個epoch的基準ResNet-50模型進行網格搜索、隨機搜索和手動調整的組合來設置的。然後由於計算限制,超參數被啓發式地適應於更大的模型。

可學習的溫度參數τ被初始化爲等同於(Wu等人,2018)中的0.07,並且被限制住以防止對邏輯值的縮放超過100,我們發現這是防止訓練不穩定所必需的。

我們使用非常大的小批量尺寸爲32,768。混合精度(Micikevicius等人,2017)被用於加速訓練和節約內存。

爲了節省額外內存,我們使用了梯度檢查點(Griewank & Walther, 2000; Chen等人,2016)、半精度Adam統計(Dhariwal等人,2020)和半精度隨機舍入文本編碼器權重。

嵌入相似性的計算也被分片,每個GPU只計算對於它們本地嵌入批次所必需的成對相似性的子集。

最大的ResNet模型,RN50x64,在592個V100 GPU上訓練了18天,而最大的視覺變換器在256個V100 GPU上訓練了12天。對於ViT-L/14,我們還在更高的336像素分辨率上預訓練了一個額外的epoch,以提高性能,類似於FixRes(Touvron等人,2019)。我們將此模型表示爲ViT-L/14@336px。

四、Experiments 

from PIL import Image
import requests

from transformers import CLIPProcessor, CLIPModel

model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32")

url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)

inputs = processor(text=["a photo of a cat", "a photo of a dog"], images=image, return_tensors="pt", padding=True)

outputs = model(**inputs)
logits_per_image = outputs.logits_per_image  # this is the image-text similarity score
probs = logits_per_image.softmax(dim=1)  #

print(probs)

參考鏈接:

https://github.com/openai/CLIP
https://huggingface.co/docs/transformers/model_doc/clip

 

五、Limitations

CLIP仍然存在許多侷限性。

在有訓練分割的數據集上,零樣本CLIP的表現平均而言與在ResNet-50特徵上的簡單監督基線(線性分類器)相當。在大多數這些數據集上,這一基線的表現現在已遠低於整體的最新技術水平。CLIP在任務學習和遷移能力上仍然需要大量的改進工作。雖然迄今爲止規模擴大持續提升了性能,並表明了持續改進的可能路徑,但我們估計需要增加大約1000倍的計算量,零樣本CLIP才能達到整體最新技術水平的表現。用當前的硬件來訓練這是不可行的。因此,需要進一步研究如何提高CLIP在計算和數據效率上的表現。

另外我們發現,CLIP的零樣本表現在幾種特定任務上還是比特定任務的模型的效果差,例如區分汽車型號、花的品種和飛機的變型。CLIP還在更抽象和系統性的任務上遇到困難,如計算圖像中物體的數量。最後,對於那些不太可能包含在CLIP預訓練數據集中的新穎任務,例如分類照片中最近的汽車距離,CLIP的表現可能接近隨機。我們有信心,還有許多、許多任務存在,CLIP的零樣本表現接近偶然水平。

雖然零樣本CLIP在許多自然圖像分佈上泛化得很好,但我們觀察到零樣本CLIP對於對它而言真正超出分佈範圍的數據泛化性仍然很差。光學字符識別(OCR)任務中有一個很好的例子。CLIP學習到了一個高質量的語義OCR表示,該表示在數字渲染文本上表現良好,這在其預訓練數據集中很常見,Rendered SST2的表現證實了這一點。然而,CLIP在手寫數字MNIST數據集上僅達到了88%的準確率。一個簡單得令人尷尬的基線,即對原始像素進行邏輯迴歸,表現比零樣本CLIP更好。語義和幾乎重複的最近鄰檢索驗證了我們預訓練數據集中幾乎沒有類似MNIST數字的圖像。這表明CLIP對解決深度學習模型的脆弱泛化問題幾乎沒有幫助。相反,CLIP試圖規避問題,並希望通過在如此龐大和多樣的數據集上訓練,所有數據將有效地處於分佈內。正如MNIST所證明的,這是一個天真的假設,很容易被違反。

儘管CLIP可以靈活地爲各種任務和數據集生成零樣本分類器,但CLIP仍然只能從給定零樣本分類器中的概念中選擇。與像圖像字幕這樣真正靈活的方法相比,這是一個顯著的限制,圖像字幕可以生成新穎的輸出。不幸的是,我們發現圖像字幕基線的計算效率遠低於CLIP。一個值得嘗試的簡單想法是聯合訓練對比和生成目標,希望將CLIP的效率與字幕模型的靈活性結合起來。作爲另一種替代方案,可以在推理時對許多關於給定圖像的自然語言解釋進行搜索,類似於Andreas等人在2017年提出的“Learning with Latent Language”中的方法。

CLIP同樣沒有解決深度學習中的數據效率低下問題。相反,CLIP通過使用可以擴展到數億訓練樣本的監督來源進行補償。如果在訓練CLIP模型期間看到的每一張圖像以每秒一張的速率呈現,那麼要遍歷32個訓練週期中看到的128億張圖像需要405年的時間。將CLIP與自我監督(Henaff, 2020; Chen et al., 2020c)和自我訓練(Lee; Xie et al., 2020)方法結合起來是一個有前景的方向,因爲它們已經證明能夠提高數據效率,超越標準的監督學習。

我們的方法論有幾個重大的侷限性。儘管我們專注於零樣本遷移,但我們在開發CLIP的過程中反覆查詢完整驗證集上的性能。這些驗證集通常有數千個例子,對於真正的零樣本場景來說是不切實際的。在半監督學習領域也提出了類似的擔憂(Oliver et al., 2018)。另一個潛在問題是我們選擇的評估數據集。雖然我們報告了在Kornblith et al. (2019)的12個數據集評估套件上的結果作爲一個標準化的集合,但我們的主要結果使用的是一個有些雜亂無章地組裝的27個數據集集合,這無疑是與CLIP的發展和能力共同適應的。創建一個專門設計用來評估廣泛零樣本遷移能力的新任務基準,而不是重複使用現有的監督數據集,將有助於解決這些問題。

CLIP是在互聯網上與圖像配對的文本上訓練的。這些圖像-文本對是未經過濾和未經策劃的,導致CLIP模型學習了許多社會偏見。這一點之前已經在圖像字幕模型上得到證明(Bhargava & Forsyth, 2019)。

雖然我們在整個工作中強調通過自然語言指定圖像分類器是一個靈活和通用的接口,但它有自己的侷限性。許多複雜的任務和視覺概念僅通過文本是難以指定的。實際訓練樣本無疑是有用的,但CLIP並不直接針對少量樣本的表現進行優化。在我們的工作中,我們備選方案是在CLIP的特徵之上擬合線性分類器。這導致了一個違反直覺的現象:當從零樣本設置過渡到少量樣本設置時,性能會下降,這與人類的表現明顯不同,人類的表現在從零樣本到少量樣本的設置中有很大的提高。未來的工作需要開發方法,將CLIP強大的零樣本性能與高效的少樣本學習相結合。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章