Motivation
作者們構建了一種用於視覺表示的對比學習簡單框架 SimCLR,它不僅優於此前的所有工作,也優於最新的對比自監督學習算法,
而且結構更加簡單:這個結構既不需要專門的架構,也不需要特殊的存儲庫。
· 由於采用了對比學習,這個框架可以作為很多視覺相關的任務的預訓練模型,可以在少量標注樣本的情況下,拿到比較好的結果。
Discovery
在這篇論文中,研究者發現:
· 多個數據增強方法組合對於對比預測任務產生有效表示非常重要。
· 與監督學習相比,數據增強對於無監督學習更加有用;
· 在表示和對比損失之間引入一個可學習的非線性變換可以大幅提高模型學到的表示的質量;
· 與監督學習相比,對比學習得益於更大的批量和更多的訓練步驟。
基於這些發現,他們在 ImageNet數據集上實現了一種新的自監督學習方法—SimCLR。
Model
SimCLR 通過隱空間中的對比損失來最大化同一數據示例的不同增強視圖之間的一致性,從而學習表示形式。具體說來,這一框架包含四個主要部分:
· 隨機數據增強模塊,可隨機轉換任何給定的數據示例,從而產生同一示例的兩個相關視圖,分別表示為 x˜i 和 x˜j,我們將其視為正對;
· 一個基本的神經網絡編碼器 f(·),從增強數據中提取表示向量;
· 一個小的神經網絡投射頭(projection head)g(·),將表示映射到對比損失的空間;
· 為對比預測任務定義的對比損失函數。

下面讓我們詳細的理解一下simCLR算法的核心思想
首先是對比學習的基本概念,其實很簡單,這是一種試圖教會機器區分相似和不同的東西

可以簡單總結為:
· 隨機抽取一個小批量
· 給每個例子繪制兩個獨立的增強函數
· 使用兩種增強機制,為每個示例生成兩個互相關聯的視圖
· 讓相關視圖互相吸引,同時排斥其他示例

其算法可以具體表示為:

非常簡單。取一幅圖像,對其進行隨機變換,得到一對增廣圖像x_i和x_j。該對中的每個圖像都通過編碼器以獲得圖像的表示。然后用一個非線性全連通層來獲得圖像表示z,其任務是最大化相同圖像的z_i和z_j兩種表征之間的相似性

首先是Data Augment這步

這個是效果,以N=2為例,則會產生2N = 4張經過數據增加的圖。(文中作者使用N = 8192/batch)

然后是編碼部分

下面是關於Similarity部分,也就是計算兩個圖像特征之間的相似度

下面是SimCLR的對比損失函數

分析結束
最后是與其他方式的比較

在線性評估方面,SimCLR 實現了 76.5% 的 top-1 准確率,比之前的 SOTA 提升了 7%。在僅使用 1% 的 ImageNet 標簽進行微調時,SimCLR 實現了 85.8% 的 top-5 准確率,比之前的 SOTA 方法提升了 10%。在 12 個其他自然圖像分類數據集上進行微調時,SimCLR 在 10 個數據集上表現出了與強監督學習基線相當或更好的性能。
Code
Tensorflow實現:https://github.com/googl-research/simclr
Pytorch實現:https://github.com/leftthomas/SimCLR
Reference
https://blog.csdn.net/u011984148/article/details/106233313/
最后,都看到這了,姑且給一個贊,推薦,關注一鍵三連唄~
