跳至主要内容

[19.08] ViLBERT

序幕中的交織

ViLBERT: Pretraining Task-Agnostic Visiolinguistic Representations for Vision-and-Language Tasks


本篇文章要介紹的 ViLBERT 和上一篇的 VisualBERT 是同一個時期的作品。

學術界的每一年都會發生很多事情,而 2019 年特別多,事情遠遠還沒到結束的時候。

我們都知道,要讓機器真正「看懂」一張圖片,並用語言描述出來,這絕非易事。過去,大多數的研究方法是將圖片理解和語言處理分開來進行。但這樣的做法,當人們嘗試將這兩者結合時,結果往往不盡人意。就好像機器能辨識出圖片中是一隻柴犬,但當你問它「這是什麼品種的狗?」,它可能束手無策。

於是,本論文提出了一個新的方法:ViLBERT。不同於傳統的學習方式,ViLBERT 希望從一開始就讓機器同時學習圖片和語言。例如:當給機器一張紅色的蘋果照片和文字「這是紅色的蘋果」,ViLBERT 會努力讓機器明白「紅色」這個描述與蘋果的顏色之間的關聯。

根據初步的研究,ViLBERT 在多項測試中都展現出色的表現,遠超過其他方法。特別是在問答遊戲中,ViLBERT 不僅能「看懂」圖片,還能給出更精準的回答。

接著,我們來看一下在本論文中,作者如何定義問題,並且提供了什麼解決方式。

定義問題

視覺與語言的結合

雖然這兩個領域在各自的範疇中都取得了不少進展,但要結合起來仍然具有挑戰性。目前的方法多半是「分開訓練視覺和語言模型」,然後再試圖結合它們。這樣的方式往往導致不理想的結果,因為當視覺和語言資料有限或有偏差時,模型的泛化能力較差。

有效的視覺基礎

儘管電腦可以辨識圖片中的物體或理解語言,但如何讓這兩者關聯起來仍是一大問題。例如:電腦可能可以辨識出圖片中的一隻狗,但可能無法與「柴犬」或「牧羊犬」這樣的語言概念聯繫起來。

解決問題

ViLBERT 模型設計

ViLBERT 模型架構

在設計 ViLBERT 模型時,作者的主要目的是糅合視覺和語言,從而得到一個可以從圖像和對應描述中學習的模型。被 BERT 在語言建模上的成功所啟發,作者希望開發一個可以從配對資料中學習語言和視覺內容聯合表示的類似模型。

  1. 基本概念

    • 作者提到一種直觀的設計方法,即將視覺輸入轉化為「Token」並像處理文本輸入一樣對待它。然而,這種方法有其限制,因為它可能會遺失視覺細節且不考慮兩種模態可能需要的不同處理層級。
  2. 雙流架構

    • 作者提出了一個雙流架構,其中一流專為視覺設計,另一流專為語言設計。
    • 這兩個流透過共同注意 Transformer layer 進行互動,允許兩種模態的網路深度可變且能在不同深度實現跨模態連接。
  3. 共同注意 Transformer layer

    • 這是作者介紹的核心機制,它允許模型在每個模態的鍵和值之間交換訊息。
    • 這種設計使得在一個模態中的特徵能夠融合到另一個模態的表示中。
  4. 圖像表示

    • 作者選擇了從預先訓練的物件偵測網路中提取邊界框和相對應的視覺特徵。
    • 由於圖像區域並不具有固定的序列,作者選擇根據區域位置編碼空間位置,再將其與視覺特徵結合。
  5. 訓練任務與目標

    • 作者提出了兩種主要的預訓練任務:分別為 MLM 多模態建模和多模態對齊預測。
    • MLM 多模態建模任務的目的是讓模型能夠重建被掩蓋的輸入。
    • 多模態對齊預測則要求模型判定圖像和文字是否對齊,即文字是否描述圖像。

預訓練機制

  1. 訓練 ViLBERT

    • 資料集

      • 作者使用概念字幕資料集(Conceptual Captions)進行訓練,該資料集是由 330 萬個圖像字幕對組成,這些對子是從網路圖像中自動擷取的。
      • 儘管這個資料集包含了某些噪音和不完整的字幕,它仍然提供了非常多樣化的視覺內容。
    • 實施細節

      • 語言流使用 BERT-BASE 模型初始化,這個模型在 BookCorpus 和英語維基百科上事先訓練過。
      • 視覺特徵是使用在視覺基因組資料集上預先訓練的 Faster R-CNN 提取的。
      • Transformer 和共同注意力 Transformer 區塊在視覺流中都有 1024 個神經元和 8 個注意力頭。
      • 整個模型在 8 個 TitanX GPU 上進行了 10 個 epoch 的訓練。
  2. 視覺和語言任務的微調

    作者將預訓練的 ViLBERT 模型應用到一組視覺和語言任務上,並對其進行了微調。 以下是對各個任務的詳細概述:

    • Visual Question Answering (VQA)

      • 資料集: 在包含 110 萬個與 COCO 影像相關問題的 VQA 2.0 資料集上進行訓練和評估。
      • 微調方法: 使用圖像和文字的元素乘積上方的兩層 MLP 進行微調,並將該表示映射到 3,129 個可能答案中。進行多標籤分類,並使用二元交叉熵損失進行訓練。
    • Visual Commonsense Reasoning (VCR)

      • 資料集: VCR 資料集,源於 11 萬個電影場景的多項選擇 QA 問題。
      • 微調方法: 以每個可能答案和問題組合為四個不同的文字輸入,然後將每個文字輸入與圖像一起進行微調。最後預測每組配對的分數。
    • Grounding Referring Expressions

      • 資料集: RefCOCO+ 資料集。
      • 微調方法: 使用由 Mask R-CNN 產生的提議邊界框,對每一組圖像區域提議進行重新排序,並利用二元交叉熵損失來進行訓練。
    • Caption-Based Image Retrieval

      • 資料集: 該資料集包含來自 Flickr 的 31,000 張圖片,每張圖片都有 5 個獨特的標題。
      • 微調方法: 作者在多項選擇設定中進行訓練。對於每一對圖像和標題,隨機選取三個干擾項:替換一個隨機的標題、一個隨機的圖像或從目標圖像的 100 個最近鄰居中選擇一個困難的負樣本。使用對齊預測的方法來計算每一對的相似度分數,並應用 softmax 函數來確定最可能的匹配。
    • Zero-shot Caption-Based Image Retrieval

      • 資料集: 使用 Flickr30k 資料集進行零樣本圖像檢索。
      • 方法: 本任務的目的是證明 ViLBERT 模型在概念字幕資料集上的預訓練已經獲得了基於文字的定位能力,且這種能力可以在沒有特定任務微調的情況下,泛化到視覺和語言的變化。在這裡,作者沒有進行任何微調,而是直接使用預訓練的 ViLBERT 模型,並利用對齊預測目標作為得分函數,以評估圖像與標題之間的對齊。

討論

ViLBERT 效果如何?

table1

參考表 1,ViLBERT 模型在多種視覺語言任務上展現了出色的效能:

  • 與基線的比較

    ViLBERT 不僅在預訓練的情境下(與單流模型及 ViLBERT 的比較)表現出色,而且在非預訓練的情境(與單流†及 ViLBERT†比較)也有優越的效能。特別是在 VQA 和 RefCOCO+ 上,ViLBERT 都獲得了最為顯著的效益。

  • 預訓練任務的效益

    通過在預訓練任務上使用 ViLBERT 模型,其效能在不同任務上提高了 2%至 13%(比較 ViLBERT 與 ViLBERT† )。這表明,不僅 ViLBERT 模型可以受益於預訓練,單流模型也可以通過這些預訓練任務得到改善。

  • 與特定任務基準的比較

    使用 ViLBERT 的微調策略在所有四個已確立的任務上都超越了最先進的特定任務模型。特別是在 VCR、RefCOCO+ 和影像擷取上,ViLBERT 設定了新的技術水準,其效益提高了 7-10 個百分點。另外,對這些任務的擴展相對簡單,只需為每個任務添加一個分類器就行了。

ViLBERT 的視覺深度對效能的影響?

table2

從表 2 可以看出,ViLBERT 模型的視覺流深度確實對其在多種任務上的效能有所影響:

  • VQA 和影像檢索

    這兩種任務都從更深的 ViLBERT 模型中獲益,效能隨著層深度的增加而單調增加。特別是當層深度為 6 時,效能達到了峰值。

  • 零樣本影像檢索

    對於這項任務,隨著模型的深度增加,效益也顯著地提高,這顯示在這項任務上,深層模型可能更為適合。

  • VCR 和 RefCOCO+

    與上述任務相反,這兩種任務似乎更傾向於使用淺層的模型,這可能表明不同的任務可能需要不同的模型深度以達到最佳效能。

提示

不過就我們現在動輒 100 層(對,GPT4 就是在講你!)的模型架構的角度來看,不管是 2 層還是 8 層,都是小模型的尺度而已。

預訓練資料集的影響?

table3

從作者的實驗中可以清楚地看到,預訓練資料集的大小對 ViLBERT 模型的效能有顯著的影響。

概念字幕資料集中隨機抽取 25% 和 50% 的子集進行預訓練時,隨著使用資料的增多,模型的準確度也單調地增加。

這一發現確認了在深度學習領域中一個常見的觀念:有更多的訓練資料可以提供更好的性能,因為模型有更多的機會學習並從大量的樣本中提取特徵和模式。

此外,這也表明 ViLBERT 模型在進行預訓練時有潛力受益於更大的資料集,這可能是未來研究和應用中的一個方向,以進一步優化和提高模型的效能。

ViLBERT 學到什麼?

在預訓練期間,ViLBERT 通過概念字幕資料集學習了視覺和語言之間語義上有意義的對齊。這一點可以從其在零樣本字幕的圖像檢索中的表現得以觀察:儘管其零樣本效果明顯低於經過微調的模型,但在未曾接觸 Flickr30k 圖像或標題的情境下,其表現已經相當出色。這證明了 ViLBERT 在預訓練期間已成功學習和掌握了視覺和語言的對齊技巧。

此外,通過輸入圖像並針對這些圖像生成條件性的文字描述(基本上是圖像字幕),可以進一步定性地探查 ViLBERT 在預訓練期間究竟學到了什麼。儘管在沒有使用乾淨、人工註釋的字幕資料進行微調的情況下,生成的描述不可能是高品質的,但這些描述仍然可以讓我們理解預訓練模型的學習成果。

然而,有一點需要注意,那就是從 BERT 風格的模型生成文字仍然是一個尚未解決的挑戰。在 ViLBERT 的例子中,生成的「標題」經常可以描述圖像的主要內容,但由於概念標題是從網頁圖像的替代文字中收集的,有時生成的標題會經過編輯或引用一些非視覺概念,這可能會導致某些描述與實際圖像內容之間存在差異。

結論

在這篇文章中,研究者深入探討了自我監督學習在視覺和語言領域的應用。ViLBERT 的提出,可說是這領域的一個里程碑,它試圖深入結合圖像內容與文字,將二者緊密地結合在一起。這可以被視為一台電腦同時閱讀圖片和文字,試著理解它們之間的關聯。

對比早先的 VisualBERT,ViLBERT 的雙流架構顯得更為特別,提供了一個更為細緻的視角,觀察和學習圖像和文字之間的細微關聯。例如:當描述一個烹飪過程時,ViLBERT 能更精確地對應文字描述和視覺內容,而不只是簡單地識別關鍵物件或動作。

ViLBERT 雖然在某些應用上的性能已經超越了一些先前的技術,但仍有待在更多場景和任務中進一步的驗證和優化。對比早期的 VisualBERT,ViLBERT 展示了更多的可能性和深度,但每種方法都有其獨特之處,值得進一步的研究和比較。