Masked Autoencoders Are Scalable Vision Learners
https://arxiv.org/pdf/2111.06377.pdf
構建自編碼器,對mask的圖片進行重建
先看效果
左:mask的圖片
中:重建的圖片
右:ground truth
摘要
這篇文章展示masked autoencoder(MAE)是CV中可擴展的自監督學習器。
MAE的方法很簡單:隨機mask輸入圖片的一些塊,然后重建這些缺失像素。
基於兩個核心設計:
- 開發了一個非對稱encoder-decoder結構。encoder只對可見塊子集進行處理(不使用mask token),一個輕量級decoder使用隱表示和mask token對原圖片進行重建。
- 將圖片很大比例進行mask(例如75%),會變成一個有意義的自監督任務。
結合這兩個設計,可以高效且有效地訓練更大的模型:加速訓練(3x 或更多)並提升了准確性。
本可擴展方法可以學習大容量模型並能更好地泛化。下游任務的遷移性能優於有監督的預訓練,並顯示出非常好的擴展行為。
介紹
在NLP中,使用自監督預訓練模型取得了很多成功。例如使用自回歸的GPT和masked autoencoding的BERT。他們的思想都很簡單:移除一部分數據,然后學習去預測這部分被移除的內容。
作者認為需要考慮:視覺和語言中的masked autoencoding到底有什么區別。
嘗試從以下觀點進行考慮:
-
架構不同。視覺中,主要采用了卷積網絡,卷積通常在網格級處理,不包含mask token和位置編碼。這種架構隔閡,已經由Vision Transformers (ViT)解決,不再是阻礙。
-
視覺和語言的信息密度不同。語言是人類生成的信號,有很高的語義和信息密度。當訓練一個模型僅僅對每句話預測少量丟失單詞時,任務可以轉化成復雜的語言理解問題。相反,圖片是有着很多空間冗余的自然信號(一個缺失的塊可以由周圍的塊進行恢復,周圍的塊包含目標、場景等高級信息)。為了克服這種區別、鼓勵學習有用特征。作者展示了一個CV的簡單策略:隨機mask了很大比例的塊。這個策略很大程度上減少了冗余,為自監督任務提升了難度,超越了低級別圖像統計的理解范疇。
-
自編碼器的decoder,將隱表示映射回輸入,這在重建文本和圖像中有所不同。在視覺中,decoder重建像素,因此decoder的得到是一個相比於目標識別任務更低語義級別的輸出。這與語言不同,語言中預測的缺失單詞包含了豐富的語義特征。盡管在BERT中,decoder可以很簡單(一個MLP),但對於圖片,decoder在決定學習隱表示的語義級別時起關鍵作用。
方法
Masked autoencoder(MAE)是一種自編碼方法,給定原始信號的部分觀測,然后對原始信號進行重建。
和其他自編碼器方法類似,本文的方法中:一個encoder將一個觀測信號映射為隱表示,一個decoder使用隱表示對原始信號進行重建
與傳統自編碼器不同,采用了非對稱設計,允許encoder只處理部分、觀測到的信號,一個輕量級decoder以隱表示和mask token進行重建。如圖
Masking
參考 ViT,將圖像分成規則的非重疊塊。然后采樣得到塊的一個子集,然后mask掉剩下部分。
采樣策略比較直接:采用均勻分布,不放回隨機采樣。稱之為"隨機抽樣"
使用高mask率的隨機采樣大幅消滅冗余性。因此可以得到一個任務,在這里,不能輕易地通過從可見鄰塊進行推斷。
均勻分布防止了潛在的中心偏差(更多在中心附近的塊被mask)
最終,得到了高度稀疏的輸入,可以設計更有效的encoder
MAE encoder
encoder參考ViT,但是只應用於可見的、未被mask的塊。和標准ViT一樣,encoder使用線性投影和位置編碼得到patch的embedding。然后通過一系列Transformer block處理結果集合。
然后,encoder只對(25%左右)的小子集進行處理。masked塊被移除,沒有使用mask token。這幫助在訓練巨大encoder的時候只占用更小的計算量和內存。
MAE decoder
MAE decoder的輸入是token的整個集合,包含了:
- 編碼后的可見塊
- mask token
每個mask token是一個可學習的共享變量,表示預測缺失塊的存在性.
對全體集合的所有token添加位置編碼。如果沒有位置編碼,mask token就會缺失在圖片中的位置信息。
decoder也有另外一系列的Transformer block
MAE decoder只在用於圖像重建任務的預訓練時候使用。(Encoder用來在識別中提供圖像表示)
因此,decoder的結構在設計時可以與encoder進行獨立,並且可以靈活設計。
作者實驗了很小的decoder,比encoder更窄更淺。例如,與encoder相比,默認decoder在每個token上計算量小於10%。
使用這種非對稱設計,token的完整集合只由輕量decoder進行處理,減少了預訓練時間
重建目標
MAE通過對每個mask塊預測像素值,來重建輸入。
decoder輸出的每個元素是表示預測塊的像素值的向量。
decoder的最后一層是一個線性投影,輸出通道的數量等於塊像素值的數量。對decoder輸出進行reshape,得到一個重建圖片。
采用MSE作為損失函數,計算重建圖片和原始圖片在像素空間的誤差。
與BERT類似,只對mask的塊中計算loss。
作者還研究了一個變種方法:重建目標是對每個mask塊的normalized像素值。對每個塊,計算了所有像素的均值和方差,然后用來對塊進行normalize。實驗中,使用標准化像素作為重建目標提升了表示質量。
簡單實現
MAE預訓練可以有效進行實現,無需特別稀疏操作。
首先,對每個輸入塊生成一個token(使用線性投影加位置編碼)
然后隨機shuffle了token列表,根據mask率,移除了列表的后面部分。這與不放回抽樣等價,等到了所有token的一個小子集。
編碼后,在encoded塊列表后面添加mask token的列表,unshuffle這個完整列表,對齊所有token和目標
decoder應用這個完整列表(其中包含位置編碼)。
無需稀疏操作,其中的操作例如shuffle和unshuffle很快。
總結
個人認為,作者主要采用大力出奇跡的方法。認為圖像中存在大量的冗余信息,這樣可以只需要很小一部分就能提取出合適的語義。