Google AI提出MLP-Mixer:只需MLP就在ImageNet達(dá)到SOTA!
點(diǎn)藍(lán)色字關(guān)注“機(jī)器學(xué)習(xí)算法工程師”
設(shè)為星標(biāo),干貨直達(dá)!
近日,Google AI又發(fā)布了一篇與ViT一樣的重磅級(jí)論文:MLP-Mixer: An all-MLP Architecture for Vision。這篇論文提出的Mixer模型僅包含最簡單的MLP結(jié)構(gòu)就能在ImageNet上達(dá)到SOTA。那么MLP其實(shí)是兩層FC層,這不禁讓人感嘆:
FC is all you need, neither Conv nor Attention!
在數(shù)據(jù)和資源足夠的情況下,或許inductive bias的模型反而成了束縛,還不如最simple的模型來的直接。下面結(jié)果圖就可以說明一切:當(dāng)訓(xùn)練數(shù)據(jù)量較少時(shí),性能BiT>ViT>Mixer,但是隨著數(shù)據(jù)量的增加,三者性能基本相差無幾。

從網(wǎng)絡(luò)架構(gòu)來看,MLP-Mixer和ViT非常類似:
預(yù)處理都是將圖像分成patchs,通過linear projection得到一系列patch embeddings;
網(wǎng)絡(luò)主體都是isotropic design,即由N個(gè)連續(xù)且相同的layers來組成。

差別主要體現(xiàn)在layers的不同,ViT采用的是transformer layer,而MLP-Mixer采用的是mixer-layer,mixer-layer很簡單,只包括兩個(gè)MLP(還有skip connection):
(1)token-mixing MLP block:輸入的特征維度 為
,操作的維度是tokens,意味著對(duì)所有tokens的同一特征做MLP;
(2)channel-mixing MLP block:輸入的特征維度為
,操作的維度是channels,意味著對(duì)各個(gè)tokens的所有特征做MLP。

對(duì)于圖像,大部分的網(wǎng)絡(luò)無非是從兩個(gè)方面mix features:
(i) at a given spatial location,
(ii) between different spatial locations,
比如卷積其實(shí)是同時(shí)進(jìn)行(i)和(ii),特別地1x1卷積只完成(i),single-channel depth-wise conv 只完成(ii);而transformer layer比較復(fù)雜,projection layer實(shí)現(xiàn)的是(i),self-attention實(shí)現(xiàn)的是(ii)(實(shí)際上也會(huì)涉及(i)),F(xiàn)FN實(shí)現(xiàn)的是(i)。而對(duì)于mixer-layer,其實(shí)就完全分離兩個(gè)部分了,token-mixing MLP block實(shí)現(xiàn)的是(ii),channel-mixing MLP block實(shí)現(xiàn)的是(i),這也算是設(shè)計(jì)上的一個(gè)巧妙解釋吧。
由于channel mixing MLP是permutation-variant,對(duì)tokens的順序是敏感的,這和ViT不同,因?yàn)閟elf-attention是permutation-invariant的。因次Mixer不需要e position embedding。不過由于token-mixing MLP block的存在,這也意味著網(wǎng)絡(luò)只能接受固定size的圖像輸入,畢竟這里MLP的參數(shù)依賴于tokens的數(shù)量,這對(duì)于dense prediction任務(wù)來說,可能有點(diǎn)麻煩,因?yàn)闄z測和分割的基本都是變輸入。
Mixer的網(wǎng)絡(luò)參數(shù)設(shè)計(jì)和ViT較為類似,具體如下:

Mixer在不同的數(shù)據(jù)集上pre-training后遷移到其它任務(wù)時(shí),其性能與ViT等其它模型對(duì)比如下,可以看到Mixer均可以接近SOTA,而且模型inference time也基本類似。

但是這都是需要在比較大的數(shù)據(jù)集比如ImageNet-21K和JFT-300上進(jìn)行pre-training,當(dāng)Mixer訓(xùn)練數(shù)據(jù)不足時(shí),Mixer容易過擬合,其效果要差于CNN和ViT,下表是不同設(shè)置的Mixer與其他模型的對(duì)比,比如在ImageNet上訓(xùn)練的話,Mixer-B/16性能就低于ViT-B/16。

關(guān)于Mixer,有人覺得它其實(shí)是包含卷積的,比如LeCun大佬就發(fā)聲了:1st layer "Per-patch fully-connected" == "conv layer with 16x16 kernels and 16x16 stride" , other layers "MLP-Mixer" == "conv layer with 1x1 kernels"。其實(shí)這個(gè)是從實(shí)現(xiàn)的角度來看這個(gè)的,但是只有1x1的卷積層還能算的上是CNN嗎?其實(shí)論文也從另外一個(gè)角度說明了Mixer和CNN的聯(lián)系:channel mixing MLP等價(jià)于1x1卷積,token-mixing MLP 等價(jià)于一個(gè)kernel size為image size的single-channel depth-wise convolutions,但是這里parameter sharing for token mixing(這里就是, separable convolution,但是conv一般不同的channel會(huì)采用不同卷積核,而token-mixing MLP是所有channel的參數(shù)都是共享的)。
無獨(dú)有偶,隨后牛津大學(xué)也發(fā)布了一篇簡單的論文:Do You Even Need Attention? A Stack of Feed-Forward Layers Does Surprisingly Well on ImageNet,其提出的模型結(jié)構(gòu)其實(shí)是和Mixer一樣,只不過論文里用FFN,而不是MLP,而且實(shí)驗(yàn)沒有Google的充分:

論文里面也有一小段對(duì)這種網(wǎng)絡(luò)的描述,其實(shí)和我們上述所述基本一致:

不論是ViT,或者CNN-ResNet,還是這里的MLP-Mixer,其實(shí)最本質(zhì)的一點(diǎn),就是它們都是residual net,或許這才是最重要的。
最后不得不說,Google可能又開了一個(gè)新坑,可能滋養(yǎng)一大批paper,參考ViT。
推薦閱讀
DETR:基于 Transformers 的目標(biāo)檢測
"未來"的經(jīng)典之作ViT:transformer is all you need!
PVT:可用于密集任務(wù)backbone的金字塔視覺transformer!
漲點(diǎn)神器FixRes:兩次超越ImageNet數(shù)據(jù)集上的SOTA
不妨試試MoCo,來替換ImageNet上pretrain模型!
機(jī)器學(xué)習(xí)算法工程師
一個(gè)用心的公眾號(hào)

