自監督學習(Self-Supervised Learning)多篇論文解讀(下)
之前的研究思路主要是設計各種各樣的pretext任務,比如patch相對位置預測、旋轉預測、灰度圖片上色、視頻幀排序等等。CVPR19和ICCV19上,Google Brain的幾個研究員發表了兩篇論文,從另外的視角分析和研究self-supervised learning問題。兩篇paper名字分別是:Revisiting Self-Supervised Visual Representation Learning (CVPR19)和S^4L: Self-Supervised Semi-Supervised Learning (ICCV19) 。
兩篇文章的鏈接地址分別是:
Revisiting這篇paper研究了多種網絡結構以及多種self-supervised的任務的組合,得到了一些啟發性的經驗結論:
1. 與supervised learning不同的是,self-supervised learning在不同task上的結果依賴於網絡結構的選擇,比如對於rotation預測,RevNet50性能最好,但是對於Patch預測,ResNet50v1性能最好。
2. 以前的self-supervised方法通常表明,alexnet的最后幾層特征性能會下降。但是這篇paper結論是對於skip-connection(resnet)結構的網絡,高層的特征性能並不會下降。
3. 增加filter數目和特征大小,對於性能提升幫助很大。
4. 衡量無監督性能最后訓練的線性分類器非常依賴學習率的調整策略。
S^4L這一篇paper,非常像上面圖(a)中multitask learning的策略,即有標簽數據上面加一個正常的分類損失,無標簽數據上加一個self-supervised的損失,具體公式如下:
作者提出了兩個算法,一個是 S^4L-Rotation,即無監督損失是旋轉預測任務;另一個是S^4L-Exemplar,即無監督損失是基於圖像變換(裁切、鏡像、顏色變換等)的triplet損失。
所有的實驗在10%或者1%標簽的Imagenet上進行,同時作者自己從訓練集划分出一小部分作為驗證集進行參數調節。實驗過程中,作者觀察到weight decay的調節和學習率策略對最終性能有很重要的影響。
比較有意思的是,Revisiting和S^4L的作者是同一撥人,只是作者順序不同,並且所有作者都是equal contribution。
Momentum Contrast for Unsupervised Visual Representation Learning
https://arxiv.org/abs/1911.05722
首先,我們可以完全忘掉過去AutoRegressive預測未來的觀點;或切Patch預測圖片結構。MoCo完全專注在 Contrastive Loss 上,將這個問題想象成有一個很大的 Dictionary ,Network 的目的就是一個 Encoder 要將圖片 Encode 成唯一的一把 Key ,此時要如何做到讓Key Space Large and Consistent 是最重要的。
首先借鑒了另一篇SSL 的文章Memory Bank ,建一個 Bank 來存下所有的 Key (或稱為 Feature) 。此方法相對把所有圖塞進 Batch少用很多內存,但對於很大的 Dataset 依舊難以 Scale Up。
Unsupervised Feature Learning via Non-Parametric Instance-level Discrimination
https://arxiv.org/abs/1805.01978
MoCo改善了 Bank,用一個 Dynamic Queue 來取代,但是單純這樣做的話是行不通的,因為每次個 Key 會受到 Network 改變太多,Contrastive Loss 無法收斂。因此 MoCo將種子 feature extractor 拆成兩個獨立的 Network:Encoder 和 Momentum Encoder。
MoCo Algorithm
我們可以想象成這樣的情境,Momentum Encoder隨着 Training Update 很慢,因此能提供很穩定的 Key ,也就是 Momentum Encoder 把這個Key Space 先擺好; 當新的 Positive經過 Encoder 進來時,跟所有其他的 Negative Sample 計算 Similarity ,如果New Key 與原本的 Key 太近容易混淆,這時候的 Loss 絕大部分會 Update 給 Encoder (相當於找一個比較空的區域放 Key, 而不影響原本的其他 Key)。
等Encoder Update 完后,在用 Momentum Update Slow Encoder。並將這次的 Batch 放進 Dynamic Queue 中。
從以下實驗可以看到,MoCo的表現幾乎與暴力將 Batch Size 增大得到的效果一樣,但是 Batch Size 沒辦法 Scale Up; Memory Bank 與 MoCo 有着一樣的 Scaling Property,但 MoCo 的 Momentum Update 提供穩定的Key Space 讓整體 Performance 可以提升約 2%。
SimCLR:Simple Framework for Contrastive Learning
在MoCo 之后發出來的論文是出自今年 (2020) 產量很高的 Hinton 之手。並且達到SSL 當前 Linear Protocol State-of-The-Art 的記錄。
A Simple Framework for Contrastive Learning of Visual Representations
https://arxiv.org/abs/2002.05709
文章更專注在Contrastive Loss ,並且發現幾點重要因素,包括先前已知的 Batch Size, Embedding Size (與 Normalization)。
另外兩點相當有意思,一點是Data Augmentation 對 Contrastive Learning 的重要性; 一點是利用一個 Non-Linear Map來避免 Feature 的 Information Loss。
SimCLR的算法相當簡單
SimCLR做了大量的Augmentation ,並且是 Augmentation 的組合。
用幾種常見的Data Augmentation
在實驗中發現,Color Distortion + Random Crop 效果提升的相當顯著。這是因為原本的Random Crop切出來的圖片 Distribution 其實相差不大,可以說是無效的 Patch (尤其對於 Contrastive Learning 來說相當不好),這兩種 Operation 混合后會讓 Distribution 大相徑庭,能產生更多有效的 Negative Samples。
如果有仔細看CPC原文的讀者也會發現,CPC 中提到的使用 Layer Normalization 取代 Batch Normalization 以避免 Model 太容易受到 Patch 的統計性質混淆有異曲同工之妙。
文章另一個亮點是,在算Loss 之前加上一個 Layer,避免 Visual Representation 直接丟給 Contrastive Loss Function 計算。原因是這種比較 Similarity 的 Loss Function 可能會把一些信息給丟掉。
Bag of Tricks and A Strong Baseline for Deep Person Re-identification
文中做了一些實驗,像是顏色、旋轉這種信息,就會大幅度的被刪除;而加上一個 Nonlinar Map,這樣可以大幅度地保存 Information。這跟 ReID 中一篇有名的文章 Bag of Tricks and A Strong Baseline for Deep Person Re-identification的一種架構有點相似,讓不同層的 Feature 給不同的 Loss 免於 Information Loss。
最后呢,有錢人的研究也是朴實無華且枯燥的,這就是標題Simple 的來源。
這張圖表現出了一件事, Contrastive Learning是一種能從 Data 本身獲取信息的 Loss Function ;而且 Data 本身的信息量遠遠多出 Label 很多,因此就算經過非常長時間的 Training,Model 並沒有任何 Overfit 的跡象。
各方法用到的Resources
Self-Supervised Learning到目前為止展現了相當大的潛力,尤其是Contrastive Learning 的方法,在資源豐沛的情況下,可以佣簡單的架構便達到逼近 Supervised Learning 的效果,甚至在Model Capacity 增加的情況下,能與 Supervised Learning 平起平坐。但如果要完全超過 Supervised Learning 的表現要怎么做呢?
Semi-Supervised Learning
Teacher-Student
Teacher-Student (Knowledge Distillation)是一種相當有效率的做法,他的精神類似 SSL 並且能從 Data 本身獲取更多的信息。
Billion-scale semi-supervised learning for image classification
https://arxiv.org/abs/1905.00546
利用有Label 的數據訓練 Teacher,並讓 Teacher 標記 Unlabel Data ,再交給 Student 學習。在實驗上也可以發現,這種方法能隨這數據量越多越有效,並且在 Supervised Learning 方法已經 Overfit 時,Semi-Supervised 還可以繼續學習。
Noisy-Student
Google也在這個方法上做了修改,讓Student 隨着過程中能增大,並且加入更多干擾,確保學到的東西能 General 到真實情況。
Self-training with Noisy Student improves ImageNet classification
https://arxiv.org/abs/1911.04252
這里的干擾有兩個:Data 上的 Augmentation和 Architecture 上的 Randomness。
Deep Networks with Stochastic Depth
https://arxiv.org/abs/1603.09382,
RandAugment:Practical automated data augmentation with a reduced search space
https://arxiv.org/abs/1909.13719
一方面讓Student 有 Ensemble 的特性; 一放面讓 Student 隨着 Knowledge 增加可以增大。此方法下能達到目前 ImageNet 最高分 Top-1 Accuracy 88.4%。
最后用這張圖總結數據與Network 的發展:
- 如果在單純Supervised Learning 的情況下,研究 Architecture 帶來的效果是相當顯著的,人類目前得到 10% 的進步。
- 如果在限定架構的情況下,通過有效率的Training 流程,從 Data 本身學習 (Unlabelled Data) ,也能得到顯著提升。從76%能到81.2%; 從 85.5% 能到當前 SOTA (88.4%)
Self-Supervised Learning與 Semi-Supervised Learning 想傳達的概念不盡相同,如果我們能從 Data本身中,有效率的獲取信息,那將比傳統的 Manual Labelling 表現更好、學到的信息更豐富並且更能隨着問題 Scaling Up。
References
1.Unsupervised Representation Learning by Predicting Image Rotations
2.Unsupervised Learning of Visual Representations by Solving Jigsaw Puzzles
3.Tracking Emerges by Colorizing Videos
4.Conditional Image Generation with PixelCNN Decoders
5.Representation Learning with Contrastive Predictive 編碼
6.Learning Deep Representations of Fine-grained Visual Descriptions
7.Data-Efficient Image Recognition with Contrastive Predictive 編碼編碼
8.Contrastive Multiview 編碼
9.Revisiting Self-Supervised Visual Representation Learning
10.Momentum Contrast for Unsupervised Visual Representation Learning
11.Unsupervised Feature Learning via Non-Parametric Instance-level Discrimination
12.A Simple Framework for Contrastive Learning of Visual Representations
13.Billion-scale semi-supervised learning for image classification
14.Self-training with Noisy Student improves ImageNet classification
15.Deep Networks with Stochastic Depth
16.RandAugment:Practical automated data augmentation with a reduced search space