創作內容

4 GP

【心得】Masked Autoencoding:對視覺模型簡單有效的預訓練方法

作者:無鹽粄條│2022-07-16 15:28:38│巴幣:16│人氣:564

  這篇論文證明了「直接復原被遮蔽的像素」這種預訓練方法,對於視覺資料也是十分有效的。



  這是一篇對以下論文的小小心得。

論文標題:Masked Autoencoders Are Scalable Vision Learners



  現在的模型,已經有可以 overfit 一百萬 dataset 的能力。如果要訓練更強大的模型,勢必要收集相當龐大的資料。但龐大的 labeled data 恐怕只有那些大公司才做得到。

  早前就有研究在不使用 label 的情況下,能否從資料本身得到有用的資訊,藉此來訓練模型。這也是自監督式 (self-supervised) 學習的初衷之一。

  近年 NLP 在這部分算是做得很成功。你可以在沒有標記的大資料集上預訓練一個模型 (例如 transformer),之後再根據自己的目的,讓模型在 (可能有標記的) 小資料集上微調,達成各種下游任務 (例如文本分類)。最有名的例子大概就是 BERT。

  但相對地,電腦視覺界的狀況跟 NLP 尚有一些差別。

  上述 BERT 的其中一種訓練方式,跟本文提出的方法息息相關。這裡借用李宏毅老師的投影片來講解 (出處):

  大意是:把一段句子的某些單字遮擋住,再讓模型預測被遮住的單字是什麼,藉此訓練它學習可以運用於各種任務的通用特徵、也不需要標記任何資料。



  但在把 BERT 的方法直接應用在視覺模型上之前,作者仔細分析了語言跟影像的本質差異,並總結出了三大點,也是本篇論文的精華:

  第一是模型架構的差異。這點在 ViT 提出後,已經得到很大程度的進展。至少我們可以直接把 BERT 中 mask tokens 以及 positional embeddings 的想法引用到 ViT 中。

  第二是資訊的密度。
  語言是人造的,每一個單字本身就富有語義的資訊,所以遮住一小部分的單字 (例如15%) 可能就足夠來訓練模型了。
  但圖片不一樣,單單幾個像素並不會有太多語義資訊。若是只遮住圖片的一小塊,模型可能會直接從周圍的像素插值過來,也就不會去學什麼圖片整體的結構。
  而作者的應對也很直覺,就是採用極高比例 (75%)、且隨機遮擋圖片中任何位置。這樣也可以提供有足夠挑戰性的任務,「強迫」模型來學習。

  第三點是關於 decoder 架構的討論。跟第二點很像,在預訓練時模型預測的是像素級別的內容,但在下游任務,例如影像分類,我們需要的是一種高層級的、概括性質的特徵。因此為了使這兩個部分可以很好地分工,預訓練時需要的 decoder 要有一定的複雜度,而非像 BERT 那樣只使用多層感知器 (MLP)。



  於是這篇論文提出的 masked autoencoder (MAE) ,是希望藉由直接復原被高比率遮擋的圖片,來讓模型學會影像任務需要的特徵。

  雖然 autoencoder 的想法早在好幾年前被提出,它試圖要重建整張輸入圖片,來讓 encoder 學習特徵、或達到資料壓縮的效果。

  但有段時間,電腦視覺的研究主要在監督式的學習,近幾年自監督學習的概念才再次抬頭,相比 NLP 在無監督式學習的輝煌成果,相對來說是慢了幾拍。



  上面那一大部分,講了這篇論文的研究動機與背景,接下來是論文中對於整個架構的總覽圖:

  這張圖很簡要地把這塊方法的重點講出來了。

  這裡可能要先講一下 transformer 被應用在圖片時,也就是 ViT 做了哪些處理。

  Transformer 原本是用來處理文字這種序列資料,但要怎麼把圖片輸入給這種模型呢?ViT使用的方法是把一張圖片切成好幾塊,每一小塊圖片就像是 NLP 中句子裡的一個單字一樣,這也是 ViT 論文標題的由來 “An Image is Worth 16x16 Words”。

  我們知道 ViT 將圖片切成很多塊,也就是很多 patch,MAE 遮擋圖片的方式就是隨機取樣一些 patch,把它們用一個特別的 token 取代 (mask token),這個想法就已經很接近 BERT 的方法了。

  但 MAE 的一大特色就是非對稱的 encoder 與 decoder。也就是它的 encoder 只會得到沒被遮擋的 patch 當輸入,這樣一來輸入的長度就被大幅縮短。因此可以大幅加快訓練速度、可以把節省的空間拿來加大模型,另一個好處是我們在下游任務只會給 encoder 真實圖片的 patch,這麼做也可以讓 encoder 更適應那些下游任務。

  也許有人會問,這樣模型怎麼區分哪個 mask token 是哪個,所以這邊用了 positional embeddings 的技巧,就是告訴模型每個 token 的位置資訊。

  所以整個流程是:首先把圖片依照 ViT 的方法切成許多 patch,以隨機的方式決定哪些 patch 要被遮蔽,再進行第一步的 projection 與 positional embeddings。這一步會只留下四分之一的 patch。

  接著把沒被遮蔽的 patch 輸入給 encoder (transformer 架構),為每個 patch 給出一個特徵。

  接著 mask tokens 與被 encoder 處理過的 tokens,會經過 positional embeddings 的方式被賦予位置的資訊,讓 decoder (也是 transformer 架構) 預測每個 patch 的所有像素。

  為了更新模型參數,他們針對被遮擋的區域計算 mean squared error,再做反向傳遞。只計算遮蔽區域的 loss 的部分跟 BERT 一樣。至於為什麼不在所有的 patch 計算 loss,則是單純因為實驗的結果比較好。



  訓練的效果真的滿驚人的。可以看到即使訓練時只有75%的圖片被遮蔽,在測試時我們可以輸入被遮蔽了75%、85%甚至是95%的圖片,而模型可以依據剩餘的資訊量生成不同但合理的圖片:

  這也顯示模型不是把圖片死記下來,也看得出來它有學到圖片內物體的整體結構。

  雖然仔細看圖片有些模糊,但生成畢竟不是這篇方法的最終目標,這樣的結果已經很驚人了:想想,用人眼看到輸入甚至可能無法腦補成這樣XD



  看完整個流程後,也可能有人會問,75%的遮蔽率真的不會太高嗎?這邊作者也做了實驗:

  可以看到用75%的遮蔽率效果真的是最好的。

  為了驗證模型的效果,作者用了兩種方式:“ fine-tuning” 跟 “linear probing”。

  以影像辨識這個下游任務來說,我們會把無監督式預訓練好的 encoder 拿來,後面接上一個分類器,“fine-tuning” 就是用圖片跟對應的 label 直接訓練整個模型;“linear probing” 則是不動 encoder ,只訓練分類器。這篇論文更強調的是 “fine-tuning” 的效果。

  可以看出兩種方法對於遮蔽率的反應不太一樣、能達到的準確率也不同。其實這兩個方法被 decoder 架構影響的程度也不太一樣,作者也做了很多相關實驗,細節可以到原文看看。



  至於預訓練的效果,它只用 ImageNet-1K 資料集預訓練 ViT-H,再以監督式的方法 fune tune 後 (fine tune 的 epoch 數不用太大),準確度可以達到86.9%,同時如果是從頭監督式訓練 ViT-H,只有83.1%準確度 (使用同樣大小圖片的前提下)。跟其他自監督方法比,MAE 效果也都好一些:

  若是增加圖片大小以及一些技巧,MAE 則可以達到87.8%準確度。



  同時這種非監督的方法也有一種傾向,當模型加大後,效果也會繼續成長:

  這點也是很好的特性,代表這種方法不會很容易 overfitting。



  作者也做了不同任務,例如 object detection、 segmentation 跟不同分類資料集上 transfer learning 的實驗,詳細可以到原文看看。



  在電腦視覺,自監督式學習的還有一個分支是 contrastive learning。

  這個方法簡單說,訓練目標是讓正樣本 (positive) 之間在特徵空間 (latent space) 的相似度提高,對負樣本則反之。至於正樣本與負樣本有各種定義方式,這也是各家巧妙之處。

  Contrastive learning 除了自監督學習外,還有許多種應用,像是輔助影像轉換 (image-to-image translation) [1],或是用來當作訓練 GAN 的 loss function [2]。

  近年在電腦視覺領域中,contrastive learning 在自監督學習的效果,比起 masked autoencoding 這種 generative 的方法更受矚目一點 [3] ,但現在 MAE 證明其實重建像素也是很有效的預訓練方法 (這部分可能需要更清楚發展脈絡的大佬幫忙補充或指正)。



  不過可能有人會問,這個方法概念上不難,用到的 loss function 也只是 MSE (mean squared error),為什麼到了去年年底這方法才被提出來呢?至少我是這麼想的 0.0

  其實類似的方法也有不少的研究,但直接「復原輸入圖片的像素」這種作法,效果似乎不是最好的。所以像 BEiT 就想到了 tokenizer 的作法,讓模型預測 tokens。其實 BEiT 基本的思想還是跟 BERT 參考的,就知道 BERT 的影響力到底有多大。

  BERT……我的超人……

  但 MAE 就展示了不用 tokenizer ,直接復原像素也能達到接近的效果。

  還有大佬整理了不同方法的重點:如何看待何恺明最新一作论文Masked Autoencoders?

  有興趣的話可以看看。



  這篇論文不只提出的方法簡單有效,寫作的技巧也很高,尤其那三點對 NLP 與 CV 差異的分析真的令人印象深刻。

  這篇論文出來已經過了大半年了,網路上隨便搜都有一堆講解跟分析的文章,還都是中文的。但我還是很不要臉地寫了自己的心得,希望大家能接受。

  我決定把這個系列叫「無鹽粄條加香菜」,算是我在學習過程中留下的一些心得吧。

  我也還在學習中,文章的編排也仍在調整,若內容上哪裡講得不太準確,或是有什麼想法跟建議,都歡迎留言指正或討論。

  感謝看到這裡的各位,期望還能與大家再會。


引用網址:https://home.gamer.com.tw/TrackBack.php?sn=5510734
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 1 篇留言

熾炎之翼
大佬…
等我能全部看懂再來留言好了QQ

07-16 22:46

無鹽粄條
不……不佬……
不過很感謝天來留言喔07-16 23:29
我要留言提醒:您尚未登入,請先登入再留言

4喜歡★ak821091 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:【心得】寫給 CNN 的... 後一篇:【心得】淺談 Image...

追蹤私訊切換新版閱覽

作品資料夾

xzp83502在線巴哈們
果果日記小屋更新中~ 歡迎進來參觀 謝謝^^看更多我要大聲說昨天23:46


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】