自監督與表徵學習
SimCLR
SimCLR 是一個刻意保持簡單的對比配方,靠著把幾項要素搭配得宜,首度展示了自監督特徵可在 ImageNet 上與監督式特徵匹敵。其流程是:取一個批次的影像;對每張影像產生兩個擴增視角;把所有視角送進共享的基礎編碼器(一個 ResNet)得到表徵;再送進一個小型投影頭(projection head,兩層的 MLP)得到計算損失所用的向量;最後施以對比損失,把同一張影像的兩個視角拉近、把所有其他視角推遠。
有三項發現使它成功,也是它留下的長久教訓。第一,資料擴增的組合與強度極其關鍵,致勝組合是強力的隨機縮放裁切,加上色彩失真,再加上高斯模糊;一旦移除色彩抖動,模型就會靠色彩直方圖作弊。第二,在表徵與損失之間加入一個非線性投影頭可大幅改善表徵,而關鍵在於預訓練後要丟掉投影頭,只保留編碼器輸出供下游使用。第三,對比學習受惠於大量負樣本,SimCLR 透過大批次(最高到 4096)取得,因為每個正樣本的負樣本,就是該批次中其他的 2(N-1) 個視角。
其損失為 NT-Xent(正規化、溫度縮放的交叉熵),是 InfoNCE 的一個實例,其中嵌入經 L2 正規化,相似度在做 softmax 前先以一個溫度(temperature)縮放。SimCLR 主要的實務代價是需要大批次,因而吃掉大量加速器記憶體,這正是 MoCo 的記憶佇列所要解決的痛點;其後的 SimCLR v2 進一步顯示同一套方法能良好擴展到更大的 ResNet,並支援半監督的蒸餾步驟。
常見的混淆:推論時所用的嵌入是編碼器的輸出(也就是表徵),而非投影頭的輸出。投影頭只是在預訓練時給對比損失一個運作的空間,事後就被丟棄。
又称