論文名稱:Masked Autoencoders Are Scalable Vision Learners
論文地址:https://arxiv.org/pdf/2111.06377.pdf
每一次讀kaiming大神的文章,都會發(fā)現文章算法很簡單,但是效果很好。經常會有一種感覺 “這竟然也行”,這次也不例外。
kaiming 的流量太大了,論文掛在Arxiv上沒幾天就登上知乎熱搜,大家可以去知乎這個問題下看看,有一群人覺得很厲害,有一部分同學也覺得一般。我等菜雞不敢評論,可以自行去看看。
本文提出一種Masked Autoencoders算法:mask輸入圖像的隨機patch,并重建移除的像素 。
兩個核心的設計思路是:
MAE能夠加快模型的訓練速度(3倍或更多)并提高精度。本文的方法可以學習泛化性良好的高容量模型:例如,在僅使用ImageNet-1K數據時,ViT-Huge模型的Top-1精確度為87.8%。 此外,在檢測、分割等計算機視覺下游任務中的遷移性能優(yōu)于有監(jiān)督的預訓練。
深度學習需要大量的標注數據來完成模型的訓練,但是NLP可以通過自監(jiān)督預訓練來避免大量標注數據的依賴。例如GPT的自回歸語言建模和BERT中的masked autoencoding的解決方案。這兩種方案通過刪除一部分數據,并且學習預測刪除的內容。
masked autoencoder是一種更為通用的去噪自動編碼器(denoising autoencoders),可以在視覺任務中使用。但是在視覺中autoencoder方法的研究進展相比NLP較少。那么**到底是什么讓masked autoencoder在視覺任務和語言任務之間有所不同呢?**作者提出了幾點看法:
此圖為MAE的模型架構:
MAE是一個非對稱的編碼器-解碼器結構,從輸入圖像中隨機mask部分patch,利用解碼器在像素空間中重構丟失的patch。編碼器僅僅對可見的patch進行計算,解碼器是一個輕量化的網絡,在解碼器中才會使用mask token與編碼器的輸出一同重構像素,這樣計算量大大減小。此時非常高的mask率(例如75%)可以在優(yōu)化精度的同時,使得總體的預訓練時間減少3倍或者更多,同時較少顯存消耗,使得MAE可以輕松擴展到大模型。
編碼器采用ViT,僅僅用于可見的patch來進行計算。與標準ViT不同的是本文的編碼器只需要在整個集合的一小部分(可見的patch,例如25%)上運行 。因此能夠訓練非常大的編碼器。
解碼器的輸入信息由編碼器輸出的編碼向量和mask token組成。每個mask token都是一個共享的、可學習的向量,表示要預測的缺失patch。作者給所有token添加positional embedding;如果不加入這一點,mask token將沒有相應patch的位置信息。
MAE解碼器在預訓練期間用于執(zhí)行圖像重建任務(只有編碼器生成用于識別的圖像表示)。因此,解碼器架構可以以獨立于編碼器設計。作者用輕量化的解碼器進行實驗。例如,解碼器處理每個token的計算量不到編碼器的10%。通過這種非對稱設計,所有token僅由輕量級解碼器處理,這大大減少了預訓練時間。
MAE通過預測每個mask patch的像素值來重建輸入。解碼器輸出中的每個元素都是代表一個patch的像素值向量。解碼器的最后一層是一個線性投影,其輸出的通道數等于一個patch中像素值的數量。解碼器的輸出reshape以后形成重構圖像。計算重建圖像和原始圖像之間的均方差損失(MSE) 。其中僅僅計算masked patch上的損失,類似于BERT。