计算机视觉中的自监督表示学习近期进展
?PaperWeekly 原創 ·?作者|燕皖
單位|淵亭科技
研究方向|計算機視覺、CNN
回顧過去一年左右的自監督學習領域的最重要發展,那么會發現很多優秀的作品:MoCo v1 和 v2,SimCLR v1 和 v2,BYOL。本文先對自監督表示學習進行一般性介紹,隨后重點介紹這幾種自監督學習方法。
Representation Learning
▲ Representations: The input image (224 x 224 x 3) is passed through a feature extractor (typically a trained CNN network) that non-linearly transforms the spatial features of the image to a vector space of dimension 512.
計算機視覺中的表征學習是從原始數據中提取特征。特征提取涉及將原始數據處理到向量空間中,捕獲表示該數據的基礎時空信息。
在計算機視覺中,表征學習算法可分為兩類:
監督學習(Supervised learning):利用大量的標注數據來訓練神經網絡模型,完成模型訓練之后,不直接使用分類的 fc 層的輸出,而是其前一層的輸出作為 Representation 用于下游任務。
自監督學習(Self-Supervised Learning):利用大規模的無標注的數據,選擇合適的輔助任務(pretext)和自身的監督信號,進行訓練,從而可以學習到 Representation 用于下游任務。
Self-Supervised Learning
自監督學習的思想來源于自然語言處理(NLP)領域。在 NLP 中,一個大的未標記語料庫通過表征學習抽取每個語料的表征,也就是將高維空間稀疏的表示轉換為低維空間稠密的表示,然后再使用稠密的表示完成下游任務的訓練。
而基于深度學習的計算機視覺任務面臨的一個主要問題是大量數據處理的問題。為了獲得良好的結果,通常需要標記大量的數據。在許多情況下,大量的標記是很麻煩的,所以自監督學習被用來作為一個解決方案來克服這一點。
現有的自監督學習通常分為兩大類,生成方法(Generative Methods)和對比方法(Contrastive Methods)。生成方法專注于像素空間的特征,其過于關注像素細節,難以建立空間關聯和結構。
而對比方法通過正面和負面的例子來學習表征。盡管不是全新的思路,但其在計算機視覺任務中取得了較快的發展。通常自監督的對比方法也稱為自監督對比學習。
Contrastive Learning
3.1 Contrastive Loss(InfoNCE)
對比學習的核心思想是最大化相似性和最小化差異性的損失。先定義:
Query (q):待查詢的圖像
Positive sample (k?):與 query 相似的樣本
Negative sample (k?):與 query 不相似的樣本
Van den Oord et al.提出了一種稱為 Noise Contrastive Estimation (InfoNCE) 得損失函數,如下:
這里的 q 是 encoded query 向量,而包含 encoded keys 的字典 k 記做 ,每一個 query 有一個對應的 Positive sample 和 k 個 Negative samples,因此,研究的就是 (K+1)-way 分類器問題,其目標是將 q 分類為 。
也就是說,如果 q 盡可能接近 ,同時又遠離字典中其他 k 個負樣本,那么損失值就會最小。
3.2 Contrastive Learning Architectures
3.2.1 End-to-End Backpropogation Based
一個思路是使用基于端到端反向傳播的方法,有兩個編碼器,一個生成查詢向量 q,另一個計算字典鍵 k(從當前的訓練 batch 中獲取)。舉個例子來說,每一個 batch 采樣 10 張圖片,則每一張圖片都和這 10 張圖片算一個 contrastive loss。
雖然這在實踐中可行,但算法由于 GPU 內存有限,字典的容量基本上是非常有限的,因此,end-to-end 問題的核心在于 ?dictionary size 和 batch size 的耦合。
3.2.2 Memory Bank
針對 end to end 的耦合問題,memory bank 采用了將 dictionary 保存下來,每一個 batch 再去更新對應的表示。Memory bank 中存儲的是所有訓練數據經過 key encoder 編碼之后的表示。
在訓練過程中,每一個 batch 采樣出來的數據將重新被 key encoder 編碼,替換掉 memory bank 中原來的表示。而 key encoder 和 query encoder 是同樣 network,不過在計算每個 batch 的 contrastive loss 時,雖然都要進行一次 dictionary 的采樣,但在更新參數時,不會對 key encoder 傳播梯度。
Memory Bank 的問題是:儲存的 key 有用很早以前的參數的 key encoder 編碼出來的,這會造成網絡參數的不一致。
3.2.3 Momentum Contrast
使用動量法實時更新鍵值編碼器的參數,而且每一個 batch 都會淘汰掉 dynamic dictionary 中最早被編碼的那一批數據,然后把最新采樣的數據加進去。這就緩解了 memory bank 中,過早 sample 的數據編碼已經不一致的問題。
Related Papers
4.1 MoCo
先前的方法,有以下缺陷:
end2end 方法的 dictionary size 和 batch size 的耦合;
memory bank 方法會因為快速改變的 encoder,其鍵值表示特征的連續性較差;
因此,FAIR 提出了 MoCo,使得構建的字典具有大容量和一致性的特點。如下圖所示,MoCo 將字典表示為數據采樣的隊列:
當前 mini-batch 的編碼表示特征入隊時,舊的 mini-batch 的編碼表示特征出隊;
隊列的大小和 mini-batch 的大小無關,因而字典可以有很大的容量;同時,字典的鍵值來自于先前的幾個 mini-batches 的融合;
momentum encoder 是基于動量的滑動平均值計算得到,保證了字典的持續性。
偽代碼如下,每次迭代時,對相同的樣本使用了不同的數據增強方法,將結果分別作為查詢集和鍵值。每次梯度傳播不向 key encoder 傳播,而只更新 query encoder 的參數。key encoder 的參數采用逐步向 query encoder 逼近的方式。
4.2 SimCLR
Google Brain 團隊提出 SimCLR 發現了以下結論:
數據擴充的組合在有效的預測任務中起著關鍵作用;
在表征和對比損失之間引入可學習的非線性變換,大大提高了學習表示的質量;
與有監督的學習相比,對比學習需要更大 batch size 和訓練輪數。
在我看來,第一點和第二點都是非常重要的結論,而第三點在后續的工作 MoCov2 和 BYOL 的試驗中被證明不是必要條件。
如上圖所示,SimCLR 主要包含以下幾個部分:
Data augmentation
SimCLR 的對比性學習主要來自兩個部分:(1) 同張圖片,通過不同 data augmentation 的互相拉引;(2) 不同圖片的互相推離。論文相當關鍵的一部份就是研究了 data augmentation 對于 unsupervised contrastive learning 的幫助。
Base Encoder
使用 ResNet-50 用作基礎神經網絡編碼器,用于從增強數據示例中提取表示向量。最后一個平均池化層的輸出,用于提取 representation。
Projection Head
在 representation 與 contrastive loss 間使用可學習的 non-linear projection,并證明效果較好。這邊使用可學習的網路的優勢在于避免計算 similarity 的 loss function 在訓練時丟掉一些重要的 feature。論文中使用非常簡單的單層 MLP,配上 ReLU activation function 作為 non-linear projection。
Contrastive Loss Function
在算 contrastive loss 時使用在 NT-Xent (the normalized temperature-scaled cross entropy loss),并證明效果會比較好。公式如下,可以把它當成一種算 similarity 的延伸方法就好。
其中,zi 和 zj 是從 Projection Head 獲得的輸出矢量,output∈{0,1} if k≠i,τ 表示溫度參數。
Supervised Fine-Tuning
最后提一個隱藏在 SimCLR 的細節:SimCLR 宣稱的 SSL 與 CL 的效果是在做在 visual representation上,白話點就是指一組高維空間的 latent feature,在預訓練之后,可以使用 CNN 圖像的 representation,然后,此經過微調的網絡將用于圖像分類等下游任務。
4.3 MoCo v2
MoCo v2 使用了 SimCLR 的兩點有效改進:在 encoder 編碼特征計算 loss 前加入了 MLP 的 projection head 以及多種數據增強手段,并且將這兩點改進應用到 MoCo 框架,同時又解決 SimCLR 本身需要大 batch size 的問題。
原始的 SimCLR 是采用end to end 的方式,負例 keys 都是來源于同一個 batch,并且通過反向傳播來更新參數。假設 batch 里有 N 個樣本,則計算 affinity 的復雜度為 N*N, 計算量較大,且比較依賴于大的 batch size。
而通過引入 MoCo 的框架,只需要把 query 送到 encoder 中去,而不需要很大的Batch。其中Momentum encoder用于計算 positive 和 negative 的 encoding,但是這個 encoder 是不用反向梯度來更新的,而是直接用左邊的 encoder 來做一個 moving average。
實驗的結果也非常好,在 ImageNet 任務提升了 6%。在我看來,Moco v2 是站在了 MoCo 和 SimCLR 基礎上,還是很好理解的。
4.4 SimCLR v2
SimCLRv2 使用了一種獨特的訓練方法,包括使用的無監督預訓練、半監督訓練、有監督的微調和未標記數據的蒸餾,這超出了本文的范圍,就不做詳細介紹,不過 SimCLRv2 對工業界還是有很多用處的。
因為現實世界中有很多未標記的數據,手動標記每個樣本以進行監督學習是一種非常低效的方法。而 SimCLRv2 利用未標記的數據來改進和傳輸特定于任務的知識,并取得了很好的結果,難道這不值得借鑒嗎?
4.5 BYOL
終于到了 BYOL,這篇是我非常喜歡的一篇。BYOL 不僅僅是集大成所作,使用了 MPL、DataAugment 和 momentum constant 而已,更重要的是其提出了 CL 中關于負樣本的新認識,并證明了無需負樣本也能夠取得好的效果。
如上圖所示:
上面的分支是 online network,參數為 。具體包括三個網絡,encoder ,projector 以及 predictor 。最終訓練好之后只需要將 保留下來作為訓練好的特征提取器。
下面的分支是 target network,參數為 。網絡比 online 少一個,只有 encoder 網絡 和 projector 網絡 。
網絡更新:online 網絡參數使用梯度進行更新,而 target 網絡參數是通過 online 網絡的滑動平均得到的。
損失函數:直接使用 L2 損失。
由于 BYOL 不需要進行 negative 樣本,因此性能對 batch size 的大小不是特別敏感。同等參數量的情況下,BYOL 的效果也是非常好。
總結
關于近年來的自監督表示學習就介紹到這里,個人對這個方向有很多的期待,希望本文對您有所幫助。
參考文獻
[1] Falcon, William, and Kyunghyun Cho. "A Framework For Contrastive Self-Supervised Learning And Designing A New Approach."arXiv preprint arXiv:2009.00104(2020).
[2]Philip Bachman, R Devon Hjelm, and William Buchwalter. Learning representations by maximizing mutual information across views. arXiv preprint arXiv:1906.00910, 2019.
[3] Olivier J Hénaff, Ali Razavi, Carl Doersch, SM Eslami, and Aaron van den Oord. Data-effificient image recognition with contrastive predictive coding. arXiv preprint arXiv:1905.09272, 2019.
[4] Ting Chen, Simon Kornblith, Mohammad Norouzi, and Geoffrey Hinton. A simple framework for contrastive learning of visual representations. arXiv preprint arXiv:2002.05709, 2020.
[5] Kaiming He, Haoqi Fan, Yuxin Wu, Saining Xie, and Ross Girshick. Momentum contrast for unsupervised visual representation learning. arXiv:1911.05722, 2019.
更多閱讀
#投 稿?通 道#
?讓你的論文被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得或技術干貨。我們的目的只有一個,讓知識真正流動起來。
?????來稿標準:
? 稿件確系個人原創作品,來稿需注明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)?
? 如果文章并非首發,請在投稿時提醒并附上所有已發布鏈接?
? PaperWeekly 默認每篇文章都是首發,均會添加“原創”標志
?????投稿郵箱:
? 投稿郵箱:hr@paperweekly.site?
? 所有文章配圖,請單獨在附件中發送?
? 請留下即時聯系方式(微信或手機),以便我們在編輯發布時和作者溝通
????
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
總結
以上是生活随笔為你收集整理的计算机视觉中的自监督表示学习近期进展的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上市公司分红散户能分到吗
- 下一篇: 五险一金指哪五险