--- title: 'Masked Autoencoders Are Scalable Vision Learners' tags: 'AI' --- # Masked Autoencoders Are Scalable Vision Learners(2021) [<font color=red>**原論文網址**</font>](https://arxiv.org/abs/2111.06377) [<font color=red>**回到目錄**</font>](https://jacksonchen890301.github.io/Jackson-Domain/) 撰寫日期: 2022/4/20 ## 概述 <font size=3>Masked Autoencoder(MAE)是以Vision Transformer為基礎所設計的Self-Supervised模型。由非對稱的encoder-decoder架構組成,encoder負責處理沒被刪去的patches之訊息,decoder則負責從latent space的特徵重建回原圖。另外,作者經由實驗發現,遮蓋75%的patches能讓MAE的學習效果最佳化,並且同時可以將計算速度加快約3倍(因為資料量被遮蓋的過程所減少了)。以此方法訓練的ViT-H模型,在不使用額外資料集的條件下,於ImageNet1K上取得了87.8%的最高準確率。</font> <center><font size=3>下圖是模型的大致結構</font></center> <center><img src="https://i.imgur.com/mhqXDzM.png" width="70%" alt="img01"/></center> ## Intriduction <font size=3>Masked Autoencoding是透過遮蓋部分訊息,讓模型學習生成這些被刪除的資訊。此方法在NLP領域的模型上成效斐然,然而,在vision相關任務上卻沒有甚麼成果。主要原因可能是因為:(1)在CV上,CNN在近幾年有著主宰地位,但CNN顯然在結構上跟NLP的主流模型*Transformer*,有著非常大的差距。因為CNN沒有辦法套用Masked Token這種Indicator,以及Position Embedding這種封裝位置資訊的方法。不過,在ViT問世後,這些結構上的問題都可以被迎刃而解。(2)語言的資訊密度顯然比圖像高出許多,因此,預測一段語句中缺失的單詞是需要對語言有充足的了解。但是,若是要升成一個圖像中缺失的patch,只要一點點對於物件跟場景的理解,就能從鄰近的patch判斷出缺失的部份。所以在實作上,必須隨機遮蓋住大面積的圖像,才能讓這個生成任務足夠困難,讓模型學到足夠整體性的圖像資訊才能成功還原缺失的patch。</font> ## Approach <font size=3>MAE模型的任務是從片段的資訊,還原回原始的圖像。跟普通的Autoencoder一樣,encoder將輸入映射到潛在特徵空間(latent representation),而decoder能夠將這些潛在特徵重建回原本的輸入。為了能夠讓模型只讀到部分的圖像資訊,MAE的設計使用了非對稱的結構。</font> * <font size=3>Masking:使用了uniform distribution來遮蓋大比例圖像面積,一方便避免被遮蓋區域不夠平均,另一方面則是讓這個圖像生成任務有足夠的困難性,不會簡單的被外推(extrapolation)或內插(interpolation)出來。</font> <center><img src="https://i.imgur.com/CGvSmva.png" width="70%" alt="img01"/></center><br> * <font size=3>MAE encoder:encoder輸入的patches會先經由linear projection再加上position embedding。之後,隨機遮蓋掉75%的patches,因此在encoder運算時只需要處理25%的剩餘資訊,可有效加速訓練時間。</font> * <font size=3>MAE decoder:decoder的輸入包含了被encode的visible patches還有mask tokens,並且都會加上position embedding。每個mask token都是共享權重,而且是在訓練過程中學習出來的vector,所以對decoder來說,讀到mask token就代表這個位置是被遮蓋的。decoder只會在self-supervised learning的訓練中使用到,而且經由實驗,decoder的設計對於後續encoder在downstream task的表現影響甚微,所以論文中是把decoder盡量設計的輕量化,以加速訓練流程。</font> * <font size=3>Reconstruction target:每個decoder輸出的token各代表一個patch,最後透過linear projection將token的channel數映射成跟原始圖像pixel values相等,就完成了圖像的還原。誤差的計算則是使用mean square error(MSE),將原始的patch與重建出來的patch做比較。</font> ## ImageNet Experiments <font size=3>使用ImageNet-1K(IN1K)在ViT Large模型上做self-supervised pre-training,並且以(1)end-to-end fine-tuning 或(2)linear probing去評估模型的性能。下圖為3種不同訓練方式的比較,可見MAE效果較佳。</font> <center><img src="https://i.imgur.com/IeMLe26.png" width="70%" alt="img01"/></center><br> <font size=3>以下是對MAE進行的一系列實驗</font> * <font size=3>Masking ratio:一般來說,在NLP上masking的比例只有約15%,在linear probing實驗中,可以看到模型的性能隨著masking ratio逐漸上升,直到75%的ratio才停止。雖然在finetune上,ratio與性能的變化較不明顯,但都可以大致得出75%是一個相當合適的比例。而且,不管ratio如何變動,結果都比train from scratch(82.5% accuracy)來的好。</font> <center><img src="https://i.imgur.com/Kdju3w1.png" width="70%" alt="img01"/></center><br> * <font size=3>Decoder design:雖然在linear probing時,較深的decoder表現較佳(可以理解為,夠深的decoder可以把reconstruction任務與encoder找特徵的任務分開),然而只要進行finetune,權重少的decoder訓練出來的模型也能有著很高的accuracy。所以,考慮到計算速度,使用比較輕量的decoder會是比較好的選擇。</font> <center><img src="https://i.imgur.com/PtCw0EM.png" width="90%" alt="img01"/></center><br> * <font size=3>Mask token:若將encoder的輸入以mask代替,而不是直接移除的話,會發現反而模型性能變差。可能是因為如果使用mask取代被移除的patches,會讓encoder看到一些根本不屬於圖像的資訊(而且是有75%的資訊都是被mask取代),因此造成encoder無法歸納出圖像的特徵。所以綜合上述,把不使用mask不但可以增進模型的表現,還能夠同時減少資算量,可以算是一舉兩得。</font> <center><img src="https://i.imgur.com/t5ePlHK.png" width="50%" alt="img01"/></center><br> * <font size=3>Reconstruction target:如果分別對每個patch做normalization,會有比較好的訓練效果。估計是因為對每個patch做norm.可以增加對比度,讓模型更容易學習。另外,也嘗試了讓模型去重建出降維過後的圖像(基本上就是壓縮後的圖),反而效果變差還增加了不必要的計算開銷(壓縮也需要計算量)。</font> <center><img src="https://i.imgur.com/ObOfuhQ.png" width="50%" alt="img01"/></center><br> * <font size=3>Data augmentation:發現pretain時若增加augmentation反而降低模型性能。與其相反的,contrasitive learning其實相當吃重這些augmentation手段(ex.SimCLR, BYOL)這邊論文歸納出的原因是,隨機masking本身就是一種augmentation手段,讓每次iteration的圖像都有所差距,而且MAE主要是透過這些隨機遮蓋去做學習,而不是透過那些augmentation的差異性。</font> <center><img src="https://i.imgur.com/wG6ddns.png" width="50%" alt="img01"/></center><br> * <font size=3>Mask sampling strategy:這邊使用了三種方式做masking,分別是隨機(random)、連續區塊(block)、以及網格(grid)。很直覺的,隨機的做法比較好,因為block的難度太高,像是下圖,中央區域被全部挖空,根本沒有足夠的資訊量模型腦補出中間的圖案。而grid則是太過簡單,沒有隨機性幫助模型學到更多不同的狀況。</font> <center><img src="https://i.imgur.com/acIQCtc.png" width="70%" alt="img01"/></center><br> <center><img src="https://i.imgur.com/nIRAUy9.png" width="50%" alt="img01"/></center><br> * <font size=3>Training schedule:發現pretrain的epoch越長,downstream task的表現越好,甚至到1600個epoch都還沒有飽和(saturate)的現象。</font> <center><img src="https://i.imgur.com/DoNGZ1m.png" width="80%" alt="img01"/></center><br> ## Comparisons with self-supervised methods <font size=3>可以發現,相較於先前的其他ViT self-supervised learning方法,MAE不但表現的更好,而且隨著模型的規模越大,與其他方法的差距也跟著放大。因此,MAE會是一種能夠有效訓練高參數模型的做法,而且在執行效率以及方法設計上都比較簡單能夠實作。</font> <center><img src="https://i.imgur.com/tbGuW4e.png" width="80%" alt="img01"/></center><br> ## Comparisons with supervised pre-training <font size=3>根據ViT原論文,使用IN1K訓練出來的ViT模型,在參數量過大時反而性能會下降,必須使用更大規模的資料集(JFT-300M),才能訓練好高參數量的ViT-L。而本文使用的MAE方法,用較小規模的IN1K資料集,就能夠有效使高參數模型之性能能夠提升(下圖可見MAE訓練出的模型和JFT-300M這種超大資料集pretrain出來的模型,同樣能夠受益於參數量的提升),且明顯比supervised的訓練方式來的好。</font> <center><img src="https://i.imgur.com/Qr3xo2Q.png" width="80%" alt="img01"/></center><br>
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.