自監督學習(Self-Supervised Learning)多篇論文解讀(上)
前言
Supervised deep learning由於需要大量標注信息,同時之前大量的研究已經解決了許多問題。所以近期大家的研究關注點逐漸轉向了Unsupervised learning,許多頂會包括ICML, NeurIPS, CVPR, ICCV相繼出現一些不錯的paper和研究工作。
這里主要關注Unsupervised learning一類特定的方法:Self-supervised learning(自監督學習)。自監督學習的思想非常簡單,就是輸入的是一堆無監督的數據,但是通過數據本身的結構或者特性,人為構造標簽(pretext)出來。有了標簽之后,就可以類似監督學習一樣進行訓練。
今年(2020) Self Supervised Learning (SSL) 的研究來到了新的高峰。
不僅在AAAI 上 LeCun, Bengio 與 Hinton 都對這領域寄與厚望;最近發表的文章也顯示 SSL 得到的模型表現在 ImageNet dataset 上逐漸逼近了傳統 Supervised Learning 的表現了。
近年ResNet-50在 ImageNet 上的表現
比較知名的工作有兩個,一個是:Unsupervised Visual Representation Learning by Context Prediction (ICCV15),如圖一,人為構造圖片Patch相對位置預測任務,這篇論文可以看作是self-supervised這一系列方法的最早期paper之一;另一個是:Unsupervised Representation Learning by Predicting Image Rotations (ICLR18),如圖二,人為構造圖片旋轉角度預測任務,這篇論文因為想法極其簡單在投稿到ICLR之后受到了極大關注,最終因為實驗結果非常全面有效最終被錄用。
在實際應用中(例如業界中已經部署的模型), Self Supervised Learning 未必能直接有效的提升 Performance ,但閱讀這些文章還是能得到不少啟發。例如我們能對以下 Supervised Learning 問題有更多想法:
- 如果將 Deep Network 學習到有用的信息,人工標記 (Manual-Label) 是必要的嗎?
- 數據( Data) 本身帶有的信息是否比標記 (Label) 更加豐富?
- 我們能將每張圖視為一個類別(Class);甚至每一個 Pixel 都視為一個類別嗎?
以上問題可能有點天馬行空,如果在實際應用上我們能思考:
- 在Representation Learning 中,如何能等價的增大 Batch Size?如何能維持 Embedding Space 的穩定性?
- 在Deep Network 一定是最后一層具有最豐富的 Representation 嗎?
- 聽說Deep Network 的 Capacity 很強大 ,但時至今日,我們是否已經達到 Model 能負荷的上限?(例如ResNet-50有 24M 個參數,號稱擁有 '大數據' 的人們,是否已經觸碰到 Effective Upper-Bound of ResNet-50's Model Complexity?)
- 如果Model Complexity 遠超乎我們想象,那什么樣的 Training Procedure 能最有效率的將信息儲存於Deep Network 中?
- Data Augmentation是學習 Deep Learning 一定會接觸到的方法,它只是一個方便 Training 的 Trick 呢?還是他對 Network 有特殊意義?
這些問題目前沒人能給出確切答案,但在接下來的文章中必然能帶來更多想法與啟發。
Before SSL Revolution:Pretext Task
早期在探索SSL的想法相對單純,如果沒有得到 Label ,就利用 Rule-Based 的方法生成一些 Label 。比較著名的方法為
- Rotation
- Jigsaw Puzzle
- Colorization
"Unsupervised Representation Learning by Predicting Image Rotations"一文中提出 Rotation 可謂是 SSL 之濫觴。將給定的 Image 旋轉固定的0, 90, 180, 270 四種角度,讓 Network 預測看到的圖是原圖被轉了幾度后的結果。
這里重點介紹最近的幾篇self-supervised learning相關的paper。第一篇是RETHINKING DATA AUGMENTATION: SELF-SUPERVISION AND SELF-DISTILLATION。
論文地址:https://arxiv.org/pdf/1910.05872.pdf
這篇論文的思想非常直觀,如圖所示。首先,Data Augmentation相關的方法會對通過對原始圖片進行一些變換(顏色、旋轉、裁切等)來擴充原始訓練集合,提高模型泛化能力;Multi-task learning將正常分類任務和self-supervised learning的任務(比如旋轉預測)放到一起進行學習。作者指出通過data augmentation或者multi-task learning等方法的學習強制特征具有一定的不變性,會使得學習更加困難,有可能帶來性能降低。因此,作者提出將分類任務的類別和self-supervised learning的類別組合成更多類別(例如 (Cat, 0),(Cat,90)等),用一個損失函數進行學習。
比較有意思的一點是,作者通過簡單變換證明:如果 ,論文方法就退化成Data Augmentation;如果
,論文方法就退化成Multi-task Learning的方法,這里 u,v,w是對應的分類器權重。所以,作者提出的方法本身就包含了Data Augmentation和Mult-task Learning方法,同時具有更大的使用范圍。
在實際物體分類過程中,可以將不同旋轉角度的分類結果進行加和,即: p(Cat) = p(Cat,0)+p(Cat,90) +p(Cat,180)+p(Cat,270),但是這樣測試時間會變成原來的4倍。所以,作者提出了第二個模塊,self-distillation(自蒸餾),distillation思想最早是hinton在nips14年提出來的。如下圖,self-distillation思路是在學習的過程中限制不同旋轉角度的平均特征表示和原始圖片的特征表示盡可能接近,這里使用KL散度作為相似性度量。
最終,整個方法的優化目標如下:
第一項和第二項分別對應圖(a)和圖(b),第三項是正常的分類交叉熵損失,作為一個輔助loss。
Unsupervised Representation Learning by Predicting Image Rotations
https://arxiv.org/pdf/1803.07728.pdf
預測旋轉角度挺沒意思的,但是如果Training Data 是整個 ImageNet 時,這樣的任務就變成相當有趣了。Network 必須了解了什么是對象后,才能了解旋轉。這也貫策了 SSL 的基本想法:Knowledge Before Task.
Unsupervised Learning of Visual Representations by Solving Jigsaw Puzzles
https://arxiv.org/abs/1603.09246
后來的Jigsaw與 Colorization 基本上延續了這種探索 Image 本質的想法,設計出能幫助理解 Content 的輔助任務,因此這類方法統稱為 Pretext Task (委托任務)。其中Colorization 這個方法,能延伸出 Tracking 的效果,着實讓人震驚。
Huge Improvement:Contrastive Learning
"Data-Centric" Loss
另一派做法是從設計Loss Function 下手,找出能探索數據本身性質的 Loss。
其中Energy-Based Model 算是 LeCun 從以前到現在不斷推廣的,這種模型與具有強烈的物理意義,可能會是明日之星;而這篇文章整理的是另一種以 Mutual Information 為主的 Loss Function。
AutoRegressive Model
說到理解數據,最直觀的機率模型就是建立Data Likelihood,而在Computer Vision 的領域中,最強大的莫過於 PixelCNN 這種 Pixel-by-Pixel 的建模方法了。使用Chain Rule,Network 能夠完整 Encode 所有信息。
Conditional Image Generation with PixelCNN Decoders
https://papers.nips.cc/paper/6527-conditional-image-generation-with-pixelcnn-decoders.pdf
但是Representation Learning 在乎的並不是整個Data Distribution; 而是怎么得到更抽象、High-level 的表示法。End-to-End Training 讓人們發現,Deep Neural Network 是有能力解構數據的 Hierarchical Internal Representation 的,何不利用這種強大的能力呢?
也就是Learn the dataset, not the data points.
InfoNCE
DeepMind在2017 年(https://arxiv.org/abs/1807.03748)提出一種基於Mutual Information修改 AutoRegrssive 的 Loss Function,稱為 InfoNCE 。
https://arxiv.org/abs/1807.03748
從圖上說明是相當直觀的,模型基於看過的Data 提取 Context (也就是 Feature) 並且對未來做預測。並且Loss Function的目標是讓 Data 和 Context 的 Mutual Information 越大越好。
Mutual Information是廣義上的 Correlation Function。(當我們完全不了解系統的Dynamics 或更深入的行為時,Mutual Information 依舊能作為估算) 它量化了我們能從 Context 中得到多少 Data 的信息,稱為 Data 與 Context 之間的 Mutual Information。
首先,為了最大化Mutual Information 讓 Network Model Distribution Ratio (而不像 generative model 是單純model distribution);並且用簡單的 Linear Map 作為從 Context 到Future Data 的預測函數。
InfoNCE寫法如下。其實他與常用的 Cross Entropy Loss 並沒有太大區別,差異只在於這個 Loss 並不是用於分類,而是注重在對數據的本身做預測。如果用先前 Time Series 的例子就是預測未來。
Learning Deep Representations of Fine-grained Visual Descriptions
我們把所唯一正確的預測稱為Positive Sample; 其它的預測通通為 Negative Samples。文章接下來都使用 Contrastive Loss 來表示這種 Training 方法。
另外InfoNCE有一個 Weak Lower-Bound 在描述 N 的重要,也就是越多的 Negative Samples 時,Loss Function 越能控制 Mutual Information,並且是以 Log 的方式 Scale (這給了 Metric Learning 一點 Hint, Batch Size 可能隨着 log scale)。
CPC:Contrastive Predictive
第一個成功在Image Classification實踐出 InfoNCE 的是 CPC 這篇文章 (基本上是 DeepMind 同一個 team 的作品)。很直觀的利用在圖片上裁切 Patch的方式,做出 Positive & Negative samples,實現 Contrastive Loss 。
Data-Efficient Image Recognition with Contrastive Predictive
https://arxiv.org/abs/1905.09272
這邊用到了三個Network,分別是 feature extractor, context prediction 跟 downstream task network。這是因問 SSL 的 evaluation 方式不同的關系,這邊簡單說明一下。
SSL訓練出來的模型基本上不能直接使用,通常只能作為很強的 Pretrained Model。因此要評估Pretrained Model 好壞通常做 Linear Evaluation ,Fine-tune 一個 Linear Classifier 看能達到多少的准確度(為了公平,通常這個 classifier 會用 grid search 得到)。
研究后來發現, SSL Pretrained Model 不僅得到 Linear Separable 的 Feature Space; 並且這些 Feature是很豐富的,因為只需要少量的 Data 就可以達到很好的效果,這稱為 Efficient Classification Evaluation。像常常會測試,拿ImageNet (有 1000類一千四百萬張圖片) 1% 的資料量(也就是每個類別 Randomly choose 12 張圖片) 來訓練。這種Evaluation 凸顯出 Feature 是能廣泛描述各種類別的,因此只要取少少的 Samples 就可以達到效果。
第三種Evaluation 就是將 Pretrained Model 運用在各種Vision Task 上,例如拿到 Object Detection 或 Segmentation 任務上依舊能表現不錯。
回到CPC 這篇文章,ResNet-50 Linear Protocol 能達到 Top-1 71.5% 的准確率;在 Efficient Classification Protocol上,能比原本 Supervised Learning 的方式省掉至少 50% ~ 80% 的資料(這邊是參數更多的 ResNet)。意味着通過SSL Pretrained Model,我能夠少一些人工標記一樣能達到原本 Supervised Learning 的准確度。
What Important?
CPC帶來巨大的好處,但什么事情是重要的?難道以后都需要將一張圖切很多 Patch 來預測嗎?並不盡然。
在CMC 這邊文章中表明了,使用不同場景 (View Point, Depth, Color Space) 來計算 Contrastive Loss 能達到非常好的效果,因此 Contrastive 本身 (也就是辨認 Positive & Negative Sample 之間的 Consistency) 才是關鍵。
Contrastive Multiview
https://arxiv.org/abs/1906.05849
另外Google做了大規模的定性實驗,找出了幾個對 Visual Representation 最有影響的因子,因為篇幅關系就節錄下列重點
- Pretext Task不一定能在 Downstream Task 上達到好的效果
- ResNet的 skip-connection能防止 feature quality 下降
- 增大Model Size 和增加 Embedding Dimension 能有效提升 Performance
Revisiting Self-Supervised Visual Representation Learning
https://arxiv.org/abs/1901.09005
到目前為止基本上定調了SSL 的走向
1. Contrastive Learning能從Data 中獲得相當豐富的信息,不需要拘泥在 Patch 上
2. 使用ResNet這種 Backbone (而非早期 paper 強調VGG 能得到更好的 representation)
接下來的文章,都基於這樣的前提來Improve 。
MoCo:Momentum Contrast
這篇 MoCo 是 Kaiming He 在 FAIR (又是與 RGB 一起)第一次對 SSL 問題提出的文章。算是一個相當 Engineering的解法,來有效增加 Batch Size,提升 Performance。