NLP/CV模型跨界,視覺Transformer趕超CNN?
在計算機視覺領域中,卷積神經網絡(CNN)一直占據主流地位。不過,不斷有研究者嘗試將 NLP 領域的 Transformer 進行跨界研究,有的還實現了相當不錯的結果。近日,一篇匿名的 ICLR 2021 投稿論文將標準 Transformer 直接應用于圖像,提出了一個新的 Vision Transformer 模型,并在多個圖像識別基準上實現了接近甚至優于當前 SOTA 方法的性能。
10 月 2 日,深度學習領域頂級會議 ICLR 2021 論文投稿結束,一篇將 Transformer 應用于圖像識別的論文引起了廣泛關注。
特斯拉 AI 負責人 Andrej Karpathy 轉發了該論文,并表示「樂見計算機視覺和 NLP 領域日益融合」。

前有 Facebook將 Transformer 應用于目標檢測任務、OpenAI 用 GPT-2 做圖像分類的嘗試,這篇「跨界」論文又有哪些新嘗試呢?
Transformer 架構早已在自然語言處理任務中得到廣泛應用,但在計算機視覺領域中仍然受到限制。在計算機視覺領域,注意力要么與卷積網絡結合使用,要么用來代替卷積網絡的某些組件,同時保持其整體架構不變。
該研究表明,對 CNN 的依賴不是必需的,當直接應用于圖像塊序列時,transformer 也能很好地執行圖像分類任務。該研究基于大量數據進行模型預訓練,并遷移至多個圖像識別基準數據集(ImageNet、CIFAR-100、VTAB 等),結果表明 Vision Transformer(ViT)模型可以獲得與當前最優卷積網絡相媲美的結果,而其訓練所需的計算資源大大減少。
NLP 領域中的 Transformer VS 計算機視覺領域中的 CNN
基于自注意力的架構,尤其 Transformer,已經成為 NLP 領域的首選模型。該主流方法基于大型文本語料庫進行預訓練,然后針對較小的任務特定數據集進行微調。由于 Transformer 的計算效率和可擴展性,基于它甚至可以訓練出參數超過 100B 的模型。隨著模型和數據集的增長,性能仍然沒有飽和的跡象。
然而,在計算機視覺中,卷積架構仍然占主導地位。受 NLP 成功的啟發,多項計算機視覺研究嘗試將類 CNN 架構與自注意力相結合,有的甚至完全代替了卷積。后者雖然在理論上有效,但由于其使用了專門的注意力模式,因此尚未在現代硬件加速器上有效地擴展。因此,在大規模圖像識別任務中,經典的類 ResNet 架構仍然是最先進的。
Transformer 向視覺領域的跨界融合
受到 NLP 領域中 Transformer 縮放成功的啟發,這項研究嘗試將標準 Transformer 直接應用于圖像,并盡可能減少修改。為此,該研究將圖像分割成多個圖像塊(patch),并將這些圖像塊的線性嵌入序列作為 Transformer 的輸入。然后用 NLP 領域中處理 token 的方式處理圖像塊,并以監督的方式訓練圖像分類模型。
在中等規模的數據集(如 ImageNet)上訓練時,這樣的模型產生的結果并不理想,準確率比同等大小的 ResNet 低幾個百分點。這個看似令人沮喪的結果是可以預料的:Transformer 缺少一些 CNN 固有的歸納偏置,例如平移同變性和局部性,因此在數據量不足的情況下進行訓練后,Transformer 不能很好地泛化。
但是,如果在大型數據集(14M-300M 張圖像)上訓練模型,則情況大為不同。該研究發現大規模訓練勝過歸納偏置。在足夠大的數據規模上進行預訓練并遷移到數據點較少的任務時,Transformer 可以獲得出色的結果。
該研究提出的 Vision Transformer 在 JFT-300M 數據集上進行預訓練,在多個圖像識別基準上接近或超過了 SOTA 水平,在 ImageNet 上達到了 88.36% 的準確率,在 ImageNet ReaL 上達到了 90.77% 的準確率,在 CIFAR-100 上達到了 94.55% 的準確率,在 VTAB 基準 19 個任務中達到了 77.16% 的準確率。
模型和方法
研究者盡可能地遵循原始 Transformer 的設計。這種故意為之的簡單設置具有以下優勢,即可擴展 NLP Transformer 架構和相應的高效實現幾乎可以實現開箱即用。研究者想要證明,當進行適當地擴展時,該方法足以超越當前最優的卷積神經網絡。
Vision Transformer(ViT)
該研究提出的 Vision Transformer 架構遵循原版 Transformer 架構。下圖 1 為模型架構圖。
標準 Transformer 接收 1D 序列的 token 嵌入為輸入。為了處理 2D 圖像,研究者將圖像 x ∈ R^H×W×C 變形為一系列的扁平化 2D patch x_p ∈ R^N×(P^2 ·C),其中 (H, W) 表示原始圖像的分辨率,(P, P) 表示每個圖像 patch 的分辨率。然后,N = HW/P^2 成為 Vision Transformer 的有效序列長度。
Vision Transformer 在所有層使用相同的寬度,所以一個可訓練的線性投影將每個向量化 patch 映射到模型維度 D 上(公式 1),相應的輸出被稱為 patch 嵌入。

與 BERT 的 [class] token 類似,研究者在一系列嵌入 patch (z_0^0 = x_class)之前預先添加了一個可學習嵌入,它在 Transformer 編碼器(z_0^L )輸出中的狀態可以作為圖像表示 y(公式 4)。在預訓練和微調階段,分類頭(head)依附于 z_L^0。
位置嵌入被添加到 patch 嵌入中以保留位置信息。研究者嘗試了位置嵌入的不同 2D 感知變體,但與標準 1D 位置嵌入相比并沒有顯著的增益。所以,編碼器以聯合嵌入為輸入。
Transformer 編碼器由多個交互層的多頭自注意力(MSA)和 MLP 塊組成(公式 2、3)。每個塊之前應用 Layernorm(LN),而殘差連接在每個塊之后應用。MLP 包含兩個呈現 GELU 非線性的層。

作為將圖像分割成 patch 的一種替代方案,輸出序列可以通過 ResNet 的中間特征圖來形成。在這個混合模型中,patch 嵌入投影(公式 1)被早期階段的 ResNet 取代。ResNet 的其中一個中間 2D 特征圖被扁平化處理成一個序列,映射到 Transformer 維度,然后饋入并作為 Transformer 的輸入序列。最后,如上文所述,將分類輸入嵌入和位置嵌入添加到 Transformer 輸入中。
微調和更高分辨率
研究者在大型數據集上預訓練 ViT 模型,并針對更小規模的下游任務對模型進行微調。為此,研究者移除了預訓練預測頭,并添加了一個零初始化的 D × K 前饋層,其中 K 表示下游類的數量。與預訓練相比,在更高分辨率時進行微調通常更有益處。當饋入更高分辨率的圖像時,研究者保持 patch 大小不變,從而得到更大的有效序列長度。
ViT 模型可以處理任意序列長度(取決于內存約束),但預訓練位置嵌入或許不再具有意義。所以,研究者根據預訓練位置嵌入在原始圖像中的位置,對它們進行 2D 插值操作。需要注意的是,只有在分辨率調整和 patch 提取中,才能將 2D 圖像的歸納偏置手動注入到 ViT 模型中。
實驗
該研究進行了大量實驗,并使用了多個 ViT 模型變體,參見下表 1:

與 SOTA 模型的性能對比
研究者首先將最大的 ViT 模型(在 JFT-300M 數據集上預訓練的 ViT-H/14 和 ViT-L/16)與 SOTA CNN 模型進行對比,結果參見下表 2。

表 2:ViT 模型與 SOTA 模型在流行圖像分類基準數據集上的性能對比。
從上表中可以看出,規模較小的 ViT-L/16 模型在所有數據集上的性能堪比或者超過 BiT-L,同時它需要的算力也少得多。較大的 ViTH-14 模型進一步提升了性能,尤其在更具挑戰性的數據集上,如 ImageNet、CIFAR-100 和 VTAB。ViTH-14 模型在所有數據集上的性能匹配或超過 SOTA,甚至在某些情況下大幅超過 SOTA 模型(如在 CIFAR-100 數據集上的性能高出 1%)。在 ImageNet 數據集上,ViT 模型的性能比 Noisy Student 低了大約 0.1%,不過在具備更干凈 ReaL 標簽的 ImageNet 數據集上,ViT 的性能超過 SOTA 模型。
下圖 2 將 VTAB 任務分解為多個組,并對比了 ViT 與 SOTA 方法的性能,這些方法包括 BiT、VIVI 和 S4L。
在 Natural 任務中,ViT-H/14 的性能略低于 BiT-R152x4;在 Specialized 任務中,ViT 的性能超過 BiT 等方法;而在 Structured 任務中,ViT 顯著優于其他方法。

預訓練數據要求
Vision Transformer 在大型 JFT-300M 數據集上進行預訓練后表現出了優秀的性能。在 ViT 的歸納偏置少于 ResNet 的情況下,數據集規模的重要性幾何呢?該研究進行了一些實驗。
首先,在規模逐漸增加的數據集(ImageNet、ImageNet-21k 和 JFT300M)上預訓練 ViT 模型。下圖 3 展示了模型在 ImageNet 數據集上的性能:

下表 3 展示了模型在 ImageNet、ImageNet-21k 和 JFT300M 數據集上的性能對比情況。在前兩個規模較小的數據集上,ViT-Large 模型的性能不如 ViT-Base,但在規模較大的 JFT300M 數據集上,大模型展現出了優勢。這說明,隨著數據集規模的增大,較大的 ViT 模型變體優于較小的模型。

其次,研究者在 JFT300M 數據集的 9M、30M 和 90M 隨機子集以及完整數據集上進行了模型訓練。結果參見下圖 4:

從圖中可以看到,在較小的數據集和相同的計算成本下,Vision Transformer 比 ResNet 更加過擬合。該結果強化了這一認知:卷積歸納偏置對于規模較小的數據集較為有用,但對于較大的數據集而言,學習相關模式就足夠了,甚至更加有效。
可擴展性研究
研究人員對不同模型執行了受控可擴展性研究(scaling study)。下圖 5 展示了模型在不同預訓練計算成本情況下的遷移性能:

實驗結果表明:
Vision Transformer 在性能 / 算力權衡中顯著優于 ResNet。
混合模型在較小計算成本的情況下略優于 ViT,但在計算成本較高時,這一現象消失。該結果令人吃驚。
Vision Transformer 在實驗嘗試的算力范圍內似乎并未飽和,未來可以進行更多可擴展性研究。
ViT 如何處理圖像數據?
為了了解 ViT 處理圖像數據的過程,研究者分析了其內部表示。
ViT 的第一層將扁平化后的圖像塊線性投影至低維空間(公式 1),下圖(左)展示了學得嵌入濾波器的主要組件。投影后,將學得的位置嵌入添加至圖像塊表示。下圖(中)展示了模型學習編碼圖像內的距離,表明距離越近的圖像塊更有可能具備更相似的位置嵌入。自注意力允許 ViT 集成整個圖像的信息,即使最低層也不例外。研究者調查了 ViT 網絡利用這一能力的程度。具體而言,該研究計算圖像空間中的平均距離(基于注意力權重)參見下圖右。「注意力距離」類似于 CNN 中的感受野大小。

ViT 模型關注與分類具備語義相關性的圖像區域,參見圖 6:

在知乎問題「ICLR 2021 有什么值得關注的投稿?」下,多個回答提及了這篇論文,有解讀也有吐槽。更有網友表示:「我們正站在模型大變革的前夜,神經網絡的潛力還遠遠沒到盡頭。一種嶄新的強大的,足以顛覆整個 CV 和 AI 界的新模型才露出冰山一角,即將全面來襲。」

參考鏈接:
https://openreview.net/pdf?id=YicbFdNTTy
https://www.zhihu.com/question/423975807
如何根據任務需求搭配恰當類型的數據庫?
在AWS推出的白皮書《進入專用數據庫時代》中,介紹了8種數據庫類型:關系、鍵值、文檔、內存中、關系圖、時間序列、分類賬、領域寬列,并逐一分析了每種類型的優勢、挑戰與主要使用案例。