自監督學習知識遷移

譯者:AI研習社(聽風1996

雙語原文鏈接://www.yanxishe.com/TextTranslation/2916


自監督學習是一個非常有趣的研究領域,其目標是在沒有任何人工標註的情況下,從未標註的數據中學習豐富的表示。

我們可以通過創造性地提出一個問題來實現,這樣你就可以使用數據本身的一部分作為標籤並嘗試進行預測。這樣的表述被稱為前置任務

例如,你可以設置一個前置任務,給定灰度圖情況下來預測圖像的彩色版本。同樣,您可以刪除圖像的一部分,並訓練一個模型從周圍預測該部分。有很多類似這樣的前置任務

通過對前置任務的預訓練,希望模型能夠學習到有用的表示。之後,我們可以只用一小組標記的訓練數據,可以將模型微調到下游任務,例如圖像分類、對象檢測和語義分割

評估表示的挑戰

所以,前置任務可以幫助我們學習表徵。但是,這就提出了一個問題:

目前,衡量表徵的標準方法是在一組標準任務和基準數據集上進行評估。

如何判斷一個表示學習的好壞?

  • 線性分類:利用固定特徵進行ImageNet分類

  • 小樣本設定:ImageNet分類只使用1%至10%的數據。

  • 遷移學習:在PASCAL VOC上進行目標分類、目標檢測和語義分割

我們可以看到,上述評價方法要求我們對前置任務和目標任務使用相同的模型架構。

這就會帶來了一些有趣的挑戰:

  1. 對於前置任務,我們的目標是在大規模的無標籤數據集上學習,因此更深的模型(如ResNet)將會幫助我們學習更好的表示。但是,對於下游任務,我們則更傾向於實際應用的淺層模型(如AlexNet)。因此,我們目前在設計前置任務時就必須考慮這個限制。

  2. 如果有些方法使用了較簡單的架構,而其他方法使用了較深的架構,那麼就很難公平地比較哪種前置任務更好。

  3. 我們無法將從前置任務中學習到的表徵與HOG等人工設計的特徵進行比較。

  4. 我們可能希望在前置任務中利用多個數據域,如聲音、文本和視頻,但目標任務可能會限制我們的設計選擇。

  5. 在前置任務上訓練的模型可能會學習到對通用視覺識別無用的額外知識。如今,最後一層的任務特定層會被忽略,實際只取權重或特徵到一定的卷積層。

知識遷移

Noroozi等人在他們2018年的一篇論文 「Boosting Self-Supervised Learning via Knowledge Transfer」中提供了一個非常簡單的想法去解決這些問題。

直覺

作者觀察到,在一個良好的表示空間中,語義相似的數據點應該是緊密相連的。

在常規的有監督分類中,圖像在語義上相似的信息是通過人類注釋的標籤進行編碼的。在這種標籤上訓練的模型一般都會有一個表示空間,對語義相似的圖像進行分組。

因此,對於自監督學習中的前置任務,目標是隱式學習一個使相同類別圖像相似而不同類別圖像不相似的度量。因此,如果我們能夠以某種方式將語義相關的圖像編碼到相同的標籤上,我們就可以對學習的表示提供可靠的估計。  

通用框架

作者提出了一個新穎的框架,可以將知識從一個深層的自監督模型轉移到一個獨立的淺層下游模型。你可以使用不同的模型架構來完成前置任務和下游任務。

核心想法:

將前置任務中的特徵進行聚類,並將聚類中心分配給未標記的圖像作為偽標籤。然後,在偽標籤上重新訓練一個具有目標任務架構的小型網絡來預測偽標籤,並學習一種新的表示方法。  

這種端到端的處理流程介紹如下:

1.前置任務

在這裡,我們選擇一些深度網絡架構,並在一些數據集上對我們選擇的一些前置任務進行訓練。在模型訓練完成後,我們可以從一些中間層獲取特徵。

  

圖:在前置任務上訓練(資源

2.K-means聚類

對於數據集中所有未標記的圖像,我們計算前置任務模型中 的特徵向量。然後,我們基於K-means聚類來分組語義上相似的圖像。我們的想法是,聚類中心將與ImageNet中的類別對齊。

  圖:聚類特徵(資源

在論文中,作者使用的K-means在單台Titan X GPU上運行了4個小時,將130萬張圖片聚成2000個類別。

3. 偽標籤

聚類中心被當作偽標籤。我們可以使用與上一步相同的數據集,也可以自己使用不同的數據集。然後,我們計算這些圖像的特徵向量,並為每個圖像找到最接近的聚類中心。這個聚類中心被用作偽標籤。

圖:生成偽標籤(來源

4. 在偽標籤上訓練

我們採取將用於下游任務的模型架構,並利用其將未標記的圖像分類為偽標籤。因此,目標架構將學習一個新的表示,這樣它將把原本在預先訓練的特徵空間中接近的圖像映射到接近的點上。

在偽標籤數據上重新訓練(來源

知識遷移的優勢

我們看到了如何通過對特徵進行聚類,然後使用偽標籤,我們可以將任何前置任務表徵中的知識帶入一個共同的參考模型中,比如AlexNet。

因此,我們現在可以輕鬆地比較不同的前置任務,即使它們是使用不同的架構和在不同的數據域上進行訓練的。這也讓我們可以通過使用深度模型和具有挑戰性的前置任務來改進自監督方法。

這個框架的效果如何?

為了定量評價這個想法,作者設置了一個實驗,如下所述:

a. 增加前置任務的複雜性(Jigsaw++)

為了評估他們的方法,作者採取了一個名為 “拼圖 “的老式拼圖式前置任務,我們需要預測用來隨機打亂3 * 3正方形圖像網格的排列。

  

圖來自這篇論文

他們通過在某些隨機位置用另一個隨機圖像中的圖塊隨機替換0到2個圖塊來擴展任務。這增加了難度,因為現在我們只需要使用剩餘的補丁來解決這個問題。新的前置任務被稱為 “Jigsaw++”。

  圖來自這篇論文

在本文中,他們使用了701個總排列,其最小漢明距離為3。他們對每個圖像塊分別應用均值和標準差歸一化。他們還將圖像的灰度化率提高到70%,以防止網絡利用低淺顯的統計信息而作弊。

b. 用更深層次的網絡來解決借口任務

作者使用VGG-16來解決前置任務並學習表徵。由於VGG-16的容量增加,它可以更好地處理 “Jigsaw++”任務帶來的額外複雜性,從而提取更好的表徵。

c. 將知識遷移至AlexNet

對來自VGG-16的表示進行聚類,並將聚類中心轉換為偽標籤。然後,AlexNet被訓練來對偽標籤進行分類。

d. 在評估數據集上對AlexNet進行微調

對於下游任務,使用偽標籤分類的權重初始化AlexNet模型的卷積層,並隨機初始化完全連接的層。然後,在各種基準數據集上對預訓練的AlexNet進行微調。

e. 結果

使用像VGG-16這樣的更深層網絡,可以得到更好的表示和偽標籤,也可以在基準任務中獲得更好的結果。它在2018年的幾個基準上得到了最優秀的結果,並進一步縮小了監督和自監督方法之間的差距。

  • 使用VGG16訓練 “Jigsaw++”,並使用AlexNet預測集群可獲得最佳性能。

  • 切換到更具挑戰性的前置任務 “Jigsaw++”比 “Jigsaw “提高了性能。

  • 當在Jigsaw++和下游任務中都使用相同架構的AlexNet時,知識遷移並沒有明顯影響。

 Task Clustering   Pre-text architecture Downstream arch. Classification  Detction (SS) Detection(MS)  Segmentation 
 Jiasaw  no  AlexNet  AlexNet  67.7  53.2  –  –
 Jiasaw++  no  AlexNet  AlexNet  69.8  55.5  55.7  38.1
 Jiasaw++  yes  AlexNet  AlexNet  69.9  55.0  55.8  40.0
 Jiasaw++  yes  VGG-16  AlexNet  72.5 56.5   57.2  42.6

2. 在ImageNet上的線性分類

在這種設定下,在從不同卷積層的AlexNet中提取的特徵上訓練線性分類器訓練。對於ImageNet來說,使用VGG-16並通過聚類將知識轉移到AlexNet中,可以大幅提升2%。

3. ImageNet上的非線性分類

對於非線性分類器來說,使用VGG-16將知識遷移到AlexNet上並使用聚類可以在ImageNet上獲得最佳性能。  

來自論文的其他見解

1. 簇的數量對性能有什麼影響?
網絡並沒有受到聚類數量的顯著影響。作者在物體檢測的任務上測試了在不同簇數的偽標籤上訓練的AlexNet。

2. 這與知識蒸餾有什麼不同?

知識遷移與知識蒸餾有着本質的區別。在這裡,我們的目標是只保留表徵中圖像的簇關聯,並將其轉移到目標模型中。與蒸餾不同的是,我們不對teacher的精確輸出做任何回歸。

3. 在聚類與預測偽標籤中可以使用不同的數據集嗎?
可以,這個方法很靈活,你可以在一個數據集上進行預訓練,在另一個數據集上進行聚類,然後得到第三個數據集的偽標籤。

作者做了一個實驗,他們在ImageNet的表示上訓練聚類,然後在 “Places “數據集上計算聚類中心,得到偽標籤。對象分類的性能僅有小幅下降(-1.5%)。

結論

因此,知識遷移是一種簡單有效的方式,可以將表徵從深層模型映射到淺層模型。


AI研習社是AI學術青年和AI開發者技術交流的在線社區。我們與高校、學術機構和產業界合作,通過提供學習、實戰和求職服務,為AI學術青年和開發者的交流互助和職業發展打造一站式平台,致力成為中國最大的科技創新人才聚集地。

如果,你也是位熱愛分享的AI愛好者。歡迎與譯站一起,學習新知,分享成長。