【何愷明新作速讀】Masked Autoencoders Are Scalable Vision Learners
作者?| ?胖虎?
原文 | https://zhuanlan.zhihu.com/p/434345170
本文經(jīng)過作者同意轉(zhuǎn)載。
最近這篇文章大火了,畢竟是FAIR的文章,而且一作還是Kaiming大佬。粗略地讀了一下,概括性地寫了本篇筆記。
Autoencoders在NLP應(yīng)用的比CV多,這是為什么呢?
1、CV界基本是卷積稱霸的現(xiàn)狀(盡管transformer逐漸興起)。要把例如mask tokens或者位置編碼融入到卷積操作中很難。而ViT一定程度上解決了這個(gè)問題。
2、信息密度問題。語(yǔ)言是人類創(chuàng)造的,所以基本都是信息密集的。而圖片可能存在很多信息冗余。這造成了什么問題呢?一句話如果我mask掉一兩個(gè)單詞,模型若想要補(bǔ)全這句話,需要非常high-level的理解,也就是真正理解這句話(想想高中英語(yǔ)的完形填空)。但是圖片如果我mask掉十幾個(gè)像素點(diǎn),我根本不需要理解這張圖片是什么,就算用個(gè)二插值我都能補(bǔ)全個(gè)七七八八。為了解決這個(gè)問題,本文mask掉大量的像素(例如75%)。這樣,模型就不得不去理解high-level的信息,才能夠補(bǔ)全出來(lái)一張圖了。
3、autoencoder中的decoder,在NLP和CV中是不同的。CV中解碼出來(lái)的是pixel,是low-level的語(yǔ)義信息。NLP中解碼出來(lái)的是單詞,語(yǔ)義信息豐富的多。同時(shí),NLP中,例如BERT,他的decoder就是MLP,但是CV中,decoder決定了latent representation的語(yǔ)義級(jí)別。
于是本文提出了非對(duì)稱masked autoencoders(MAE)。整體結(jié)構(gòu)如下,先遮,然后把可見的patch輸入encoder,然后把masked tokens合并進(jìn)去,接著一頓操作猛如虎,解碼后補(bǔ)全圖片。

Approach
1、Mask:與ViT類似,把圖片切分成一個(gè)個(gè)小patch,然后根據(jù)uniform distribution隨機(jī)mask掉一定比例的patch。
2、Encoder:直接用ViT,但是輸入的是未mask的patch。這使得整張圖片只有一小部分(未mask的部分)會(huì)被ViT處理,大大提高了效率。而mask的部分,會(huì)交給更輕量級(jí)的decoder來(lái)處理。
3、Decoder:解碼過程加入了masked patch,同時(shí)加入了位置編碼。decoder只在預(yù)訓(xùn)練的時(shí)候使用。所以decoder完全可以和encoder獨(dú)立。本文的默認(rèn)設(shè)置中就用了一個(gè)很小的decoder,平均每一個(gè)patch的計(jì)算量比encoder少了90%以上。
4、Reconstruction Target:本文做了兩種實(shí)驗(yàn),第一種是直接產(chǎn)出pixel,然后計(jì)算MSE。第二種是對(duì)每一個(gè)patch計(jì)算均值方差,然后歸一化。實(shí)驗(yàn)發(fā)現(xiàn),歸一化處理后representation的質(zhì)量有提升。
5、Simple Implementation:整個(gè)模型實(shí)現(xiàn)起來(lái)很簡(jiǎn)單。
ImageNet Experiment
往常這一部分我都會(huì)簡(jiǎn)略,自己看原文比較快,無(wú)非是demonstrate自己的模型有多牛逼,多好。但是這篇文章的實(shí)驗(yàn)部分挺有意思。簡(jiǎn)單地來(lái)寫一下。
實(shí)驗(yàn)結(jié)果中,很神奇的一點(diǎn)就是,當(dāng)mask比例在75%上下的時(shí)候,準(zhǔn)確率非常好。反而當(dāng)mask比例比較小的時(shí)候,效果不好。這點(diǎn)比較反直覺。個(gè)人推測(cè)可能的原因是,當(dāng)mask比例太小的時(shí)候,模型無(wú)法學(xué)習(xí)到很多high-level的語(yǔ)義信息,導(dǎo)致其無(wú)法真正“理解”圖片。而支持我這一猜想的證據(jù)是,該模型所做的圖片補(bǔ)全看起來(lái)并不是簡(jiǎn)單的延長(zhǎng)一下線條或者色塊,而是對(duì)整幅圖有深刻的理解,才能補(bǔ)全出來(lái)的。

Decoder Design
Decoder的部分也很有趣,并不是越大、越深,就越好,反而是合適的深度和寬度更能發(fā)揮作用。

主要的差別通過linear probing可以體現(xiàn)。Decoder需要有一定深度,因?yàn)閍utoencoder的最后幾層應(yīng)當(dāng)是專注于重建,而不是識(shí)別。一個(gè)合理深度的decoder可以專注于重建工作,使得latent representations停留在一個(gè)更抽象的層面上。
Mask Token
上面提到,編碼的時(shí)候,mask token不參與。實(shí)驗(yàn)中,如果讓mask token也參與,不僅變慢了,準(zhǔn)確率還下降了。這是因?yàn)轭A(yù)訓(xùn)練和部署之間存在了一個(gè)差異:預(yù)訓(xùn)練的時(shí)候給了他很多mask tokens,但是這些tokens并不存在于未被污染的圖片中。
Conclusion
這篇文章提出了MAE這個(gè)架構(gòu),算是又一個(gè)NLP領(lǐng)域到CV領(lǐng)域的重要遷移。NLP之前有BERT和GPT大紅大紫過,而現(xiàn)在這種mask的方法遷移到了CV任務(wù)上。全文看下來(lái)一個(gè)大公式都沒有(這點(diǎn)挺神奇的,以往的論文基本都至少有兩三個(gè)大公式)。雖然文章強(qiáng)調(diào)了自己的模型lightweight,但是ViT-Large有多大懂的都懂。希望未來(lái)能夠找到一個(gè)更加輕量級(jí)的backbone。另外,文章對(duì)于具體訓(xùn)練的流程說(shuō)的比較簡(jiǎn)略,大部分都在介紹模型的架構(gòu)本身。比如如何pretrian,finetune,以及如何做linear probing的等等。但是拋開這些,從科研的角度來(lái)說(shuō),這是一個(gè)頗有價(jià)值的新突破。
——The ?End——
推薦閱讀
Yann LeCun主講,紐約大學(xué)《深度學(xué)習(xí)》2021春季課程放出,免費(fèi)可看
如何看待何愷明最新一作論文Masked Autoencoders Are Scalable Vision Learners?
為了方便大家學(xué)習(xí)交流,我們建立了微信群,歡迎大家進(jìn)群討論。
你可以加我的微信邀請(qǐng)你進(jìn)群,微商和廣告無(wú)關(guān)人員請(qǐng)繞道,謝謝合作!


