搞懂Transformer系列:關於視覺Transformer應該知道的3件事


MLNLP 

機器學習演算法與自然語言處理 

)社群是國內外知名自然語言處理社群,受眾覆蓋國內外NLP碩博生、高校老師以及企業研究人員。


社群的願景 是促進國內外自然語言處理,機器學習學術界、產業界和廣大愛好者之間的交流,特別是初學者同學們的進步。

本文轉載自 | 極市平臺
作者 | 科技猛獸
1
『概要』
Transformer 是 Google 的團隊在 2017 年提出的一種 NLP 經典模型,現在比較火熱的 Bert 也是基於 Transformer。Transformer 模型使用了 Self-Attention 機制,不採用 RNN 的順序結構,使得模型可以並行化訓練,而且能夠擁有全域性資訊。
雖然視覺 Transformer 已經在多種視覺任務上取得了相當大的進步,但對其架構設計和訓練過程最佳化的探索仍然十分有限。本文提供了3個關於訓練視覺 Transformer 的建議。
2
『關於視覺Transformer你應該知道的3件事』
論文名稱:Three things everyone should know about Vision Transformers
論文地址:
https://arxiv.org/pdf/2203.09795.pdf

論文解讀:

雖然視覺 Transformer 已經在多種視覺任務上取得了相當大的進步,但對其架構設計和訓練過程最佳化的探索仍然十分有限。本文提供了3個關於訓練視覺 Transformer 的建議。
建議1:透過並行的視覺 Transformer 實現更低的延時
更淺的網路架構容易實現更低的延時和更加容易的最佳化。用 MHSA 表示多頭自注意力塊,用 FFN 表示殘差前饋網路。如下圖1所示,作者重新以成對的形式組織模型的架構,這產生了更寬更淺的架構,每個並行的塊擁有相同的引數量和計算量。這種設計允許更多的並行處理,可以實現更低的延時和更加容易的最佳化。
圖1:透過並行的視覺 Transformer 實現更低的延時
建議2:只微調 Attention 即可實現良好的遷移效能
遷移學習的標準方法一般是先對模型做預訓練,再遷移到目標任務上面。這種情況適用於目標任務的資料集大小受限時,也適用於目標任務和預訓練任務的解析度不一樣時。一般來說,訓練的解析度要比推理時使用的解析度低。這不僅節省了資源,還減少了由於 Data Augmentation 所導致的訓練和測試影像之間的比例差異。作者在本文中表明,在大多數 ViT 的遷移學習情況下,僅 MHSA 層並凍結 FFN 層的引數就足夠了,這可以節省計算量並減少訓練期間的記憶體峰值 (memory peak),且不會影響精度。
建議3:改進 ViT 的 Patch 預處理層以更好地適配基於 MIM 的自監督學習
Transformer 的第1層一般感受野比較小。透過 Convolutional Stem 處理輸入圖片有利於訓練的穩定。然而,用卷積預處理影像與基於 MIM 的自監督學習方法 (如 BeiT[1],MAE[2] 等) 不相容。為了和 MIM 的自監督學習方法相適應,作者在本文中提出了一種 patch pre-processing 的做法。

實驗過程

首先作者跑了一些 Baseline 的實驗結果,如下圖2所示。解析度均為 224×224,LS 代表 Layer Scale。學習率設定為:ViT-Ti 和 ViT-S 為 4e-3,ViT-B 和 ViT-L 為 3e-3。
圖2:Baseline 實驗結果
實驗探索1:透過並行的視覺 Transformer 實現更低的延時
在 ViT 模型裡面,複雜性度量受到寬度和深度的影響。忽略一開始的影像分塊操作和最終的分類頭,因其對複雜性的影響可以忽略不計,則有:
  • ViT 模型的引數量和網路的深度成正比關係,和寬度成二次方關係。
  • ViT 模型的計算量和網路的深度成正比關係,和寬度成二次方關係。
  • ViT 推理時的視訊記憶體峰值不隨深度的改變而改變,但是和寬度成二次方關係。
  • 更寬的架構的延時在理論上更好,因為更加並行化,但實際的加速取決於實現和硬體。
作者首先做的實驗是把下式1所示的序列結構變為2式的並行結構:
下圖1是分支數對於 ViT 效能的影響。對於不論是 Small 模型還是 Base 模型,使用2個並行分支可以獲得最佳效能。ViT-S60 的 S20×3 和 S30×2 之間的效能相當。
圖1:分支數對於 ViT 效能的影響
下圖2是不同尺寸大小的模型採用順序結構和並行結構的效能對比。對於不論是 Small 模型還是 Base 模型,使用2個並行分支可以獲得最佳效能。ViT-S60 的 S20×3 和 S30×2 之間的效能相當。實驗的觀察與先前的發現一致:ViT 模型採用並行版本對於更難最佳化的更深和更高容量的模型有幫助,本文提出的的並行化方案使得深層 ViT 的訓練更加容易。
圖2:不同尺寸大小的模型採用順序結構和並行結構的效能對比
下圖3是不同尺寸大小的模型採用順序結構和並行結構的處理速度對比。在 V100 GPUs 上,作者觀察到單樣本處理的速度明顯加快,但是當 Batch Size 變得比較大時,處理的速度沒有提升。
圖3:不同尺寸大小的模型採用順序結構和並行結構的處理速度對比
實驗探索2:只微調 Attention 即可實現良好的遷移效能
本節中作者重點關注 ViT 模型的微調,以使模型適應更高的影像解析度,或者解決不同的下游分類任務。具體來說,考慮一種方法,其中僅微調 MHSA 層的權重,如下圖4所示。作者從預測的準確性,峰值記憶體的使用和引數量方面分析了這麼做帶來的影響。
如下圖4所示是作者在 384×384 解析度下微調了在 224×224 解析度下預訓練ViT-S、ViT-B 和 ViT-L 模型的結果。可以看到無論是在 ImageNet-val 還是 ImageNet-V2 上,單獨微調 MHSA 層權重的結果和微調全部權重的結果相差很小。但是隻微調 FFN 層時,結果相差較大。
圖4:在 384×384 解析度下微調了在 224×224 解析度下預訓練ViT-S、ViT-B 和 ViT-L 模型的結果
與微調所有引數相比,在高解析度下微調 MHSA 引數的優勢是:可以在引數,延遲和峰值記憶體使用方面獲得大量的節約,如下圖5所示。微調 MHSA 在 GPU 上可以節約 10% 的記憶體,這在高解析度微調需要更多記憶體的情況中特別有用。此外訓練速度也提高了 10%,因為計算的梯度更少了。最後,MHSA 的權重大約相當於權重的三分之一。因此,如果想要使用針對不同輸入解析度進行微調的多個模型,我們可以為每個額外的模型節省 66% 的儲存空間。
圖5:與微調所有引數相比,在高解析度下微調 MHSA 引數的優勢
實驗探索3:改進 ViT 的 Patch 預處理層以更好地適配基於 MIM 的自監督學習
傳統的 ViT 模型透過卷積頭進行輸入圖片的預處理 (分塊) 操作,通常稱之為 Convolutional Stem。雖然這些預處理設計能夠提高準確性或穩定性,但是仍然存在一些問題。比如,Patch 預處理層如何去更好地適配基於 MIM 的自監督學習,比如 BEiT 的正規化。
在這部分中,作者設計了一種 hierarchical MLP (hMLP) stem,即分層 MLP 預處理正規化,如下圖6所示。第一次把圖片分成 4×4 大小的 Patch,再經過兩次合併 2×2 的區域,最終把 224×224 大小的圖片變換成 14×14 的特徵。可以看到每個 16×16 大小的影像 Patch 是獨立處理的
圖6:分層 MLP 預處理正規化
hMLP 的具體實現如下圖7所示。Linear 操作具體都是使用卷積來實現,三個卷積的引數分別是:。
圖7:hMLP 的 PyTorch 實現
hMLP 的一個好處是:這樣的方式處理圖片的話,圖片的各個 Patch 之間是互不關聯的。換言之,不同的 Patch 之間就存在資訊互動,也就和原來的 ViT 不是完全等價。而且,hMLP 的設計沒有顯著增加計算需求。比如,ViT-B 需要的 FLOPs 僅僅為 17.73 GFLOPs。與使用通常的線性投影相比,只增加了不到 1% 的計算量。
作者在下圖8中比較了幾種 Stem 在有監督學習任務和 BEiT 的自監督式學習任務上的效能。hMLP 也都實現了更好的精度-計算量均衡。
圖8:幾種 Stem 在有監督學習任務和 BEiT 的自監督式學習任務上的效能
3
『總結』
本文介紹了 ViT 的3個不同主題。首先是一種簡單而有效的並行化方法,能夠節約推理延時。其二是在做遷移學習任務時,僅僅微調 MHSA 的引數就能獲得不錯的效能,同時節約訓練的記憶體佔用。最後是一種圖片分塊的方式:hMLP,它可以很好地適配於基於 MIM 的自監督學習方法,使得不同的 Patch 之間資訊不相互關聯。
參考
  1. BEiT: BERT pre-training of image transformers
  2. Masked autoencoders are scalable vision learners
技術交流群邀請函
△長按新增小助手
掃描二維碼新增小助手微信
請備註:姓名-學校/公司-研究方向
(如:小張-哈工大-對話系統)
即可申請加入自然語言處理/Pytorch等技術交流群

關於我們

MLNLP社群  機器學習演算法與自然語言處理 ) 是由國內外自然語言處理學者聯合構建的民間學術社群,目前已經發展為國內外知名自然語言處理社群,旗下包括  萬人頂會交流群、AI臻選匯、AI英才匯  以及  AI學術匯  等知名品牌,旨在促進機器學習,自然語言處理學術界、產業界和廣大愛好者之間的進步。
社群可以為相關從業者的深造、就業及研究等方面提供開放交流平臺。歡迎大家關注和加入我們。

相關文章