使用未標記數據的半監督圖像分類

已發表: 2022-03-11

在過去的十年中,監督學習一直處於計算機視覺和深度學習研究的前沿。

在監督學習環境中,人類需要手動註釋大量數據集。 然後,模型使用這些數據來學習數據和標籤之間複雜的潛在關係,並在給定數據的情況下開發預測標籤的能力。 深度學習模型通常需要大量數據,並且需要大量數據集才能獲得良好的性能。 不斷改進的硬件和大型人工標記數據集的可用性一直是深度學習最近取得成功的原因。

監督式深度學習的一個主要缺點是它依賴於大量人工標記的數據集進行訓練。 這種奢侈並非在所有領域都可用,因為獲得由專業人員註釋的龐大數據集在邏輯上可能很困難且非常昂貴。 雖然獲取標記數據可能是一項具有挑戰性且成本高昂的工作,但我們通常可以訪問大量未標記的數據集,尤其是圖像和文本數據。 因此,我們需要找到一種方法來利用這些未充分利用的數據集並將它們用於學習。

標記和未標記的圖像

從預訓練模型遷移學習

在沒有大量標記數據的情況下,我們通常會求助於遷移學習。 那麼什麼是遷移學習?

遷移學習意味著使用來自類似任務的知識來解決手頭的問題。 在實踐中,這通常意味著使用從類似任務中學習的深度神經網絡權重作為初始化,而不是從權重的隨機初始化開始,然後在可用的標記數據上進一步訓練模型以解決手頭的任務。

遷移學習使我們能夠在小至幾千個示例的數據集上訓練模型,並且可以提供非常好的性能。 預訓練模型的遷移學習可以通過三種方式執行:

1. 特徵提取

通常,神經網絡的最後幾層正在執行最抽象和任務特定的計算,這些計算通常不容易轉移到其他任務。 相比之下,網絡的初始層學習了一些基本特徵,如邊緣和常見形狀,這些特徵很容易跨任務轉移。

下面的圖像集描述了卷積神經網絡 (CNN) 中不同級別的捲積核本質上是在學習什麼。 我們看到了一種分層表示,初始層學習基本形狀,並且逐漸地,更高層學習更複雜的語義概念。

分層表示:初始層和更高層

一種常見的做法是採用在大型標記圖像數據集(例如 ImageNet)上預訓練的模型,並在最後切斷完全連接的層。 然後根據所需的類數量附加和配置新的全連接層。 轉移的圖層被凍結,新圖層根據您的任務可用的標記數據進行訓練。

在這個設置中,預訓練模型被用作特徵提取器,頂部的全連接層可以被認為是淺分類器。 這種設置比過擬合更穩健,因為可訓練參數的數量相對較少,因此當可用的標記數據非常稀缺時,這種配置效果很好。 多大的數據集才算非常小的數據集,這通常是一個棘手的問題,需要考慮很多方面,包括手頭的問題和模型主幹的大小。 粗略地說,我會將此策略用於包含數千張圖像的數據集。

2.微調

或者,我們可以從預訓練網絡傳輸層,並在可用的標記數據上訓練整個網絡。 此設置需要更多標記數據,因為您正在訓練整個網絡,因此需要大量參數。 當數據稀缺時,這種設置更容易過度擬合。

3. 兩階段遷移學習

這種方法是我個人最喜歡的,並且通常會產生最好的結果,至少在我的經驗中是這樣。 在這裡,我們訓練新附加的層,同時將轉移的層凍結幾個 epoch,然後對整個網絡進行微調。

微調整個網絡而不給最終層幾個時期可能會導致有害梯度從隨機初始化的層傳播到基礎網絡。 此外,微調需要相對較小的學習率,兩階段方法是一種方便的解決方案。

對半監督和無監督方法的需求

這通常適用於大多數圖像分類任務,因為我們擁有像 ImageNet 這樣的龐大圖像數據集,覆蓋了很大一部分可能的圖像空間——通常,從中學習到的權重可以轉移到自定義圖像分類任務中。 此外,預訓練的網絡很容易現成可用,從而促進了這一過程。

但是,如果您的任務中的圖像分佈與訓練基礎網絡的圖像大不相同,則此方法將無法正常工作。 例如,如果您正在處理由醫學成像設備生成的灰度圖像,則從 ImageNet 權重進行遷移學習不會那麼有效,並且您將需要數千張標記圖像來訓練您的網絡以達到令人滿意的性能。

相反,您可能可以訪問大量未標記的數據集來解決您的問題。 這就是為什麼從未標記數據集中學習的能力至關重要的原因。 此外,未標記數據集的種類和數量通常比最大的標記數據集要大得多。

在 ImageNet 等大型基准上,半監督方法已顯示出優於監督方法的性能。 Yann LeCun 著名的蛋糕類比強調了無監督學習的重要性:

Yann LeCun 的蛋糕類比

半監督學習

這種方法利用標記和未標記的數據進行學習,因此被稱為半監督學習。 當您有少量標記數據和大量未標記數據時,這通常是首選方法。 有一些技術可以同時從標記數據和未標記數據中學習,但我們將在兩階段方法的背景下討論該問題:對未標記數據進行無監督學習,以及使用上述策略之一解決分類任務的遷移學習.

在這些情況下,無監督學習是一個相當混亂的術語。 從某種意義上說,這些方法並不是真正無監督的,因為有一個監督信號可以指導權重的學習,但因此監督信號是從數據本身導出的。 因此,它有時被稱為自我監督學習,但這些術語在文獻中可以互換使用來指代相同的方法。

自我監督學習中的主要技術可以按照它們如何從數據中生成這種監督信號來劃分,如下所述。

生成方法

生成方法 - 自動編碼器:編碼器和解碼器網絡

生成方法旨在通過瓶頸後對數據進行準確的重建。 這種網絡的一個例子是自動編碼器。 他們使用編碼器網絡將輸入減少到低維表示空間,並使用解碼器網絡重建圖像。

在此設置中,輸入本身成為訓練網絡的監督信號(標籤)。 然後可以提取編碼器網絡並將其用作構建分類器的起點,使用上一節中討論的遷移學習技術之一。

同樣,另一種形式的生成網絡——生成對抗網絡(GAN)——可用於對未標記數據進行預訓練。 然後,可以採用鑑別器並為分類任務進一步微調。

判別方法

判別方法訓練神經網絡來學習輔助分類任務。 選擇了一個輔助任務,以便監督信號可以從數據本身導出,而無需人工註釋。

此類任務的示例包括學習圖像塊的相對位置、對灰度圖像進行著色或學習應用於圖像的幾何變換。 我們將更詳細地討論其中的兩個。

學習圖像塊的相對位置

學習圖像塊的相對位置

在這種技術中,從源圖​​像中提取圖像塊以形成類似拼圖的網格。 路徑位置被打亂,打亂的輸入被饋送到網絡中,該網絡被訓練以正確預測網格中每個補丁的位置。 因此,監督信號是網格中每條路徑的實際位置。

在學習這樣做的過程中,網絡學習對象的相對結構和方向以及顏色等低級視覺特徵的連續性。 結果表明,通過解決這個拼圖遊戲學習到的特徵可以高度轉移到圖像分類和對象檢測等任務中。

學習應用於圖像的幾何變換

學習應用於圖像的幾何變換

這些方法將一小組幾何變換應用於輸入圖像,並訓練分類器通過單獨查看變換後的圖像來預測應用的變換。 這些方法的一個示例是對未標記的圖像應用 2D 旋轉以獲得一組旋轉圖像,然後訓練網絡來預測每個圖像的旋轉。

這個簡單的監督信號迫使網絡學習定位圖像中的對象並了解它們的方向。 通過這些方法學習的特徵已被證明是高度可轉移的,並且在半監督設置中為分類任務產生了最先進的性能。

基於相似性的方法

這些方法將圖像投影到固定大小的表示空間中,其中相似的圖像更靠近,不同的圖像相距更遠。 實現這一點的一種方法是使用基於三元組損失的孿生網絡,它可以最小化語義相似圖像之間的距離。 Triplet loss 需要一個anchor、一個正例和一個負例,並試圖使正例比負例更接近潛在空間中的歐幾里得距離。 錨點和正例來自同一類,負例是從剩餘的類中隨機選擇的。

在未標記的數據中,我們需要想出一種策略,在不知道圖像類別的情況下生成這三組錨正樣本和負樣本。 這樣做的一種方法是使用錨圖像的隨機仿射變換作為正例,並隨機選擇另一張圖像作為負例。

三重損失

實驗

在本節中,我將關聯一個實驗,該實驗憑經驗確定無監督預訓練用於圖像分類的潛力。 這是我去年春天在紐約大學與 Yann LeCun 一起參加的深度學習課程的學期項目。

  • 數據集。 它由 128K 個標記示例組成,其中一半用於訓練,另一半用於驗證。 此外,我們還提供了 512K 未標記的圖像。 數據總共包含 1,000 個類。
  • 無監督預訓練。 AlexNet 使用 63 個 epoch 的廣泛數據增強對旋轉分類進行了訓練。 我們使用了 Rotnet 在他們的論文中記錄的超參數。
  • 分類器訓練。 從第四個卷積層提取特徵,並附加三個全連接層。 這些層被隨機初始化並以預定的遞減學習率進行訓練,並實施了提前停止以停止訓練。
  • 全網微調。 最終,我們微調了在整個標記數據上訓練的網絡。 之前分別訓練的特徵提取器和分類器都以 15 個 epoch 的小學習率進行了微調。

我們訓練了 7 個模型,每個模型在每個類中使用不同數量的標記訓練示例。 這樣做是為了了解訓練數據的大小如何影響我們的半監督設置的性能。

實驗

我們能夠獲得 82% 的旋轉分類預訓練準確率。 對於分類器訓練,前 5% 的準確率在 46.24% 附近飽和,整個網絡的微調得到了 50.17% 的最終數字。 通過利用預訓練,我們獲得了比監督訓練更好的性能,後者提供了 40% 的 top 5 準確率。

正如預期的那樣,驗證準確度隨著標記訓練數據的減少而降低。 然而,性能的下降並不像人們在監督環境中所期望的那樣顯著。 訓練數據從每類 64 個示例減少 50% 到每類 32 個示例,只會導致驗證準確度降低 15%。

實驗

通過每類僅使用 32 個示例,我們的半監督模型實現了優於使用每類 64 個示例訓練的監督模型的性能。 這為在低資源標記數據集上進行圖像分類的半監督方法的潛力提供了經驗證據。

包起來

我們可以得出結論,無監督學習是一種強大的範式,能夠提高低資源數據集的性能。 無監督學習目前處於起步階段,但將通過從廉價且易於訪問的未標記數據中進行學習,逐步擴大其在計算機視覺領域的份額。


進一步閱讀 Toptal 工程博客:

  • 使用 Python/NetworkX 進行圖形數據科學