Try   HackMD

[Transformer_CV] Vision Transformer(ViT)重點筆記

tags: Literature Reading Transformer ViT Vision Transformer

AI / ML領域相關學習筆記入口頁面


論文亮點

首度完全捨棄CNN,將transformer結構應用於CV領域的,後續ViT相關改進大抵基於這篇論文

原始論文:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

模型主架構

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

  • 圖1:模型概述。我們將圖像分割成固定大小的圖像塊(image patch/token),對每個圖像塊進行線性嵌入並添加位置資訊,並將得到的向量序列送入一個標準的Transformer編碼器。

    • *為了進行分類,論文中使用標準的方法,在序列中加入一個額外的可學習的"分類標記 "到序列中。Transormer Encoder的圖示靈感來自於Vaswani等人(2017)。
  • 相對於NLP領域的每個輸入單位使用的是Word Embedding,本篇論文提出了Patch Embedding作法,將影像切分為圖塊向量

ViT演算法

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

  • Embedding :

    • 在把影像資料送入encoder前,需要先將其轉換為類似nlp模型中、類似sequence的形式
    • Embedding
      • 形式如下:
        z0=[xclass;xp1E;xp2E;...;xpNE]+Epos
      • 圖塊
        xpNE
        • xRH×W×C
        • 把三維(H×W ×C)的圖塊,線性投影攤平為 N個(
          P2.c
          ) X
          D
          的2維向量
        • N=HW/P
      • 類別
        xclass=z00
        • Extra learnable [class] embedding
        • a learnable embedding to the sequence of embedded patches
        • 額外的可學習的類別嵌入,放置在序列最前端
        • 與序列(sequence)中所有的patch(token)做矩陣運算,獲得與所有patch的相關性資訊
      • 位置
        Epos
        • 共享、可學習的1D權重,與所有的Patch Embedding相加
        • standard learnable 1D position embeddings
  • Transormer Encoder

    • 包含兩個重要模組:多頭注意力(
      MSA
      )、全連接層(
      MLP
      )
    • Norm的位置與原版Transormer Encoder略有不同
    • 內含Layernorm (LN) + 殘差跳接residual connections
    • MLP: two layers with a GELU
  • 最後的

    LN(zL0)

    • 來自於最後一層的類別向量
      zL0
      (shape: batch,N)。cls_token
    • 亦即匯聚了所有PATCH資訊的類別編碼
    • 經過Layer Norm得到預測輸出
    • (Global Ave Pooling):CNN

卷積網路與ViT模型的歸納偏差 Inductive Biases

  • 什麼是Inductive Biases?

    • 歸納(Induction)指的是從觀察中尋找共同點、形成通用規則的過程;偏差(Bias)是指我們對模型的偏好
    • 因此歸納偏差可以理解為,從現實生活中觀察到的現像中歸納出一定的規則(heuristics),然後對模型做一定程度的前提假設
    • 在機器學習領域中,
      Image Not Showing Possible Reasons
      • The image file may be corrupted
      • The server hosting the image is unavailable
      • The image path is incorrect
      • The image format is not supported
      Learn More →
      對資料特性的假設,用於引導模型學習特定的模式或結構
  • 從機率角度來看

    • 在機率論中,Inductive biases可以被看作是先驗知識(prior knowledge)對學習過程的影響。比如,在貝葉斯統計(Bayesian statistics)中,通常會有一個先驗分佈(prior distribution),這代表了對某事發生的初始信念
    • 當新資料進來時,根據這些資料更新我們的信念,形成後驗分佈(posterior distribution)。Inductive biases就像這個先驗分佈,幫助模型在面對新資料時,能夠更有效地進行學習和預測
    • 在統計模型中,像經典的ANOVA(變異數分析),常常會做出某些假設,比如資料遵循常態分佈。這些假設實際上就是一種inductive biases
  • 在機器學習領域

    1. KNN(K-Nearest Neighbors)

      • 假設:資料的特徵空間中相鄰的樣本傾向於屬於同一類
      • 即在特徵空間中距離接近的點具有相似的屬性或類別
    2. SVM(Support Vector Machines)

      • 假設:資料可以被分類器最大化類別邊界距離
      • SVM傾向於找到一個最大化不同類別之間邊界的分類器
    3. CNN(Convolutional Neural Nkerneletworks)

      • 假設:圖像中相鄰的像素彼此相關,kernel參數共享則假設學習到的特徵在整個圖像中是通用的
      • locality和spatial invariance: 即空間相近的pixel有關聯而遠的沒有
    4. RNN(Recurrent Neural Networks)

      • 假設:文字序列前後文之間有關聯性
      • sequentiality和time invariance是RNN設計的關鍵,允許模型理解和預測序列數據中的時間關聯性
  • Inductive Biase的作用

    • 提升泛化能力:Inductive Biases
      Image Not Showing Possible Reasons
      • The image file may be corrupted
      • The server hosting the image is unavailable
      • The image path is incorrect
      • The image format is not supported
      Learn More →
      透過增加一定的偏差,幫助模型不僅適用於訓練時的數據集,還能適應其他不同的資料分佈。這種泛化(generalization)能力對於模型處理新場景和數據至關重
    • 防止過擬合:
      Image Not Showing Possible Reasons
      • The image file may be corrupted
      • The server hosting the image is unavailable
      • The image path is incorrect
      • The image format is not supported
      Learn More →
      透過引入合理的假設和限制,Inductive Biases減少了模型過度學習訓練數據中的雜訊,從而避免了過度擬合(overfitting)。這讓模型能更好地預測未知數據,而不僅僅是記住訓練
      • 例如下圖中有6個點,要如何用具有通則性的模型(曲線)去預測它的分布位置
      • 實線是加了一定約束條件的偏差才能使得曲線更為簡單、通用
        Image Not Showing Possible Reasons
        • The image file may be corrupted
        • The server hosting the image is unavailable
        • The image path is incorrect
        • The image format is not supported
        Learn More →
  • 參考資料

    • 如何理解Inductive bias?
      • 歸納(Induction)是自然科學中常用的兩大方法之一(歸納與演繹, induction and deduction),指的是從一些例子中尋找共性、泛化,形成一個比較通用的規則的過程;偏置(Bias)是指我們對模型的偏好。因此,歸納偏置可以理解為,從現實生活中觀察到的現像中歸納出一定的規則(heuristics),然後對模型做一定的約束,從而可以起到“模型選擇”的作用,即從假設空間中選擇出更符合現實規則的模型。其實,貝葉斯學習中的“先驗(Prior)”這個叫法,可能比“歸納偏置”更直觀一些。
      • 歸納偏置在機器學習中幾乎無處不可見。老生常談的“奧卡姆剃刀”原理,即希望學習到的模型複雜度更低,就是一種歸納偏置。另外,還可以看見一些更強的一些假設:KNN中假設特徵空間中相鄰的樣本傾向於屬於同一類;SVM中假設好的分類器應該最大化類別邊界距離;等等。
    • 归纳偏置和选择性偏差
      • Inductive bias是關於目標函數的必要假設。
      • 在機器學習中,很多學習算法經常會對學習的問題做一些假設,這些假設就稱為歸納偏置(Inductive Bias)。
      • 歸納偏置的作用是使得學習器具有了泛化的功能。
原論文中關於CNN與ViT在卷積的歸納偏差 Convolutional Inductive Biases
inductive bias 原論文中的討論
p.4

We note that Vision Transformer has much less image-specific inductive bias than CNNs. In CNNs, locality, two-dimensional neighborhood structure, and translation equivariance are baked into each layer throughout the whole model. In ViT, only MLP layers are local and translationally equivariant, while the self-attention layers are global.
The two-dimensional neighborhood structure is used very sparingly: in the beginning of the model by cutting the image into patches and at fine-tuning time for adjusting the position embeddings for images of different resolution (as described below).

Other than that, the position embeddings at initialization time carry no information about the 2D positions of the patches and all spatial relations between the patches have to be learned from scratch.

白話理解
  • 與CNN相比,ViT模型對於圖像的特定歸納偏差/前提假設要小的多
  • 在CNN的Inductive Biases可理解為locality(區域性)和spatial invariance(空間不變性)
    • locality
      • 即空間相近的像素關聯性相對遠距離的像素來的高,
    • spatial invariance
      • 空間不變性則可從kernel的權重共享來理解,在圖像中不同位置如果出現多個特徵,例如貓眼、鳥羽等,可以由同一個共享權重的kernal抓出
  • 在ViT則缺乏這些假設,亦即ViT模型的自由度高出CNN很多
    • 後來也有論文用數學推導,證實CNN的固定kernel可視為一種Transformer架構的特例( 參考來源待補)
    • ViT的self-attention矩陣運算可視為一種經由計算影像圖塊全局相關性後,由模型自行決定kernel尺寸的過程
關於CNN卷機操作的空間約束

ViT (vision transformer)幾個特點

具有良好拓展性與計算效率優良
  • 參數數量

    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →

  • Benchmark表現與計算效率

    • 首個以純transformer架構取得優於CNN模型的表現
    • 在表現相近/效能超越的情況下,佔用的計算資源(TPUv3 core days)大大減少
      • ResNet152x4,在相同的JFT-300M資料集上預訓練)

    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →

性能受數據集大小影響
  • 數據集大小對模型性能的影響。當預訓練數據集的大小較小時,ViT的表現並不好,當訓練數據充足時,它的表現優於以前的SOTA
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →
不同模型架構的效能與計算成本

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

  • 以上實驗表明:
    • 純Transformer架構(ViT)在大小和計算規模上都比傳統的CNNs (ResNet BiT)更具效率和可擴充套件性
    • 混合架構(CNNs + Transformer)在較小的模型尺寸下效能優於純Transformer,當模型尺寸較大時效能非常接近

ViT參考資料

ViT家族與近期進展

2101.01169 Transformers in Vision: A Survey

圖: 自注意力空間設計分類

卷積運算是計算機視覺中使用的傳統深度神經網絡的主力,它帶來了解決在例如高維度數據集ImageNet [52]上的複雜圖像識別任務 的突破。然而,卷積也有其缺點,例如,它在固定大小的窗口上運行,因此無法捕獲長距離依賴關係,例如給定視頻中空間和時間域中像素之間的任意關係。此外,卷積濾波器權重在訓練後保持固定,因此操作無法動態適應輸入的任何變化。在本節中,我們回顧了通過使用自註意力操作和 Transformer 網絡(一種特定形式的自注意力)來緩解傳統深度神經網絡中上述問題的方法。

2111.06091 A Survey of Visual Transformers

  • 中國科學院等發佈最新Transformer綜述

    Transformer 是如何打通語言和視覺的?

    因此,將 Transformer 用到視覺任務中的關鍵是建立圖像到矢量的轉換,並保持圖像的特點。例如,ViT[27]藉助強鬆弛條件將圖像轉換爲包含多個低水平信息的 patch 嵌入,Early Conv. [50] 和 CoAtNet [37] 利用卷積提取高級信息,同時降低 patch 的冗餘特徵。

    從卷積的角度來看,其歸納偏置主要表現爲局部性、平移不變性、權重共享和稀疏連接。這類簡單的卷積核可以有效地執行模板匹配,但由於歸納偏置強,其上界要低於 Transformer。

    從 Transformer 的角度來看,Dong 等人證明,當在沒有短連接或 FFN 的深層上訓練時,自注意力層表現出強大的「token uniformity」歸納偏置。結果表明,Transformer 由兩個關鍵部分組成:一個聚合 token 之間關係的自注意力層;一個提取輸入特徵的 position-wise FFN。雖然 Transformer 具有強大的全局建模能力,卷積可以有效地處理低級特徵[37],[50],增強 Transformer 的局部性[45],[70],並通過填充(padding)來附加位置特徵

    • Vision Transformer_架構分類

    • Vision Transformer_嵌入分類

      Transformer 模型利用可学习嵌入来执行不同的视觉任务。从监督任务的视角来看,这些嵌入可以被分为类 token、对象、查询和掩码嵌入。

學習資源

Deep Learning相關筆記

Self-supervised Learning

Object Detection

ViT與Transformer相關

Autoencoder相關