回覆列表
  • 1 # 機器之心Pro

    遷移學習(Transfer Learning)預期將成為影象分類領域機器學習商業成就的下一驅動力。對深度網路的再利用正影響著學界和業界的走向。本文介紹了遷移學習的基本概念,以及使用遷移學習的策略。本文使用 PyTorch 程式碼在多個數據集中進行了實驗。

    GitHub 地址:https://github.com/miguelgfierro/sciblog_support/blob/master/A_Gentle_Introduction_to_Transfer_Learning/Intro_Transfer_Learning.ipynb

    關鍵詞:遷移學習;微調;影象分類;深度學習

    為什麼使用遷移學習?

    根據 Coursera 聯合創始人、斯坦福副教授吳恩達介紹,遷移學習(Transfer Learning)將會成為機器學習商業成就的下一驅動力。

    遷移學習是一種機器學習技術,允許在特定的資料集上再利用已訓練的卷積神經網路(CNN),並將其調整或遷移到其他資料集。之所以要複用已經訓練的 CNN,是因為訓練時間太長。例如,在 4 個英偉達 K80 GPU 中將 ResNet18 訓練 30 個 epoch 需要 3 天的時間;而在同樣的 GPU 上將 ResNet152 訓練 120 個 epoch 需要 4 個月。

    遷移學習策略

    總體而言,遷移學習有兩種策略,不過我還沒有看到關於命名的最終一致意見。微調(finetuning)——其中包括使用基礎資料集上的預訓練網路以及在目標資料集中訓練所有層;凍結與訓練(freeze and train)——其中包括凍結除最後一層的所有層(權重不更新)並訓練最後一層。也可以凍結前面幾層,然後微調其餘層,這是由於一些證據表明 CNN 的前幾層包含紋理過濾器(texture filter)和色彩斑點(color blob)。但是,我們這裡的工作只分析兩種極端情況:訓練所有層,以及只訓練最後一層。

    最常見的基本資料集是 ImageNet,它包含 120 萬個影象、1000 個類別。這些類別主要被分為兩大類:動物和物體。每個類別的影象數量大約為 1000 個。大多數深度學習庫都提供在 ImageNet 上預訓練的 CNN 模型。

    在下圖中,我們可以看到上述提到的兩種遷移學習策略。我們在 ImageNet 上使用了一個預訓練的 CNN,並將 Simpsons 資料集的子集 Homer Simpson 作為目標集,用該網路對其進行分類。這個子集包含 20 個類,每個類有 300-1000 個影象。

    然後,我們可以使用凍結與訓練,只訓練最後一層(如圖上方所示);或者微調所有層(如圖下方所示)。

    微調 VS 凍結

    我們很難知道在何種情況下應該只訓練最後一層,在何種情況下應該微調網路。在「How transferable are features in deep neural networks?」(Yosinsky et. al., 2014) 中,作者解決了在 ImageNet 資料集中量化 CNN 特定層普適程度的問題。他們發現,由於層的相互適應,可遷移性會受到中間層分裂的負面影響。隨著任務性質差異的增加,可遷移性的差距會逐漸增長。最終他們發現,透過權重遷移進行網路初始化,而非從零權重開始訓練,能夠提高泛化效能。

    正如 Karpathy 的深度學習教程中指出的,以下是在不同場景中對新資料集使用遷移學習的一些指導原則:

    小目標集,影象相似:當目標資料集與基礎資料集相比較小,且影象相似時,建議採取凍結和訓練,只訓練最後一層。

    大目標集,影象相似:建議使用微調。

    小目標集,影象不同:建議採取凍結和訓練,訓練最後一層或最後幾層。

    大目標集,影象不同:建議使用微調。

    在實驗中,我們使用了有限的幾個資料集,以及一個小型網路 ResNet18,所以是否能將結果推廣到所有資料集和網路還言之尚早。但是,這些發現可能會對何時使用遷移學習這一問題提供一些啟示。以下是結果的總結:

    我們觀察到的第一個細節是,相比色度資料集而言,訓練灰度資料集準確率會下降。這與其他文章作者觀察一致,即基礎資料集和目標資料集之間的域差異越大,遷移效果越差。

    我們同樣發現,對於 Simpson 和 Caltech256 資料集而言,凍結會使得準確率大大下降。這在 Simpson 資料集中可以理解,原因可能是域的區別太大了:在 ImageNet 中都是自然影象,但在 Simpson 中大多數都是素色的。在 Caltech 資料集中,除了在凍結時產生的準確率下降,我們最先觀察到的是它本身只具有很低的準確率。這可能是因為,對於涵蓋很多類別的資料集,每個類別的影象太少了,大約每個類只有幾百個而已。

    貓狗(dogs vs cats)資料集的域和 ImageNet 最接近。事實上,ImageNet 中就包含著幾個品種的貓和狗。在這種情況下,微調和凍結沒有多大差別。

    最後,在膜翅目昆蟲(hymenoptera)資料庫中,我們發現,在凍結時,色度資料集有一點小改善。這可能是因為域很靠近,且資料集比較小。在膜翅目昆蟲灰度資料庫中,凍結就沒有改善,這很可能是由於域的差異。

  • 2 # 東北振興

    1 卷積網路當做特徵提取器。使用在ImageNet上預訓練的網路,去掉最後的全連線層,剩餘部分當做特徵提取器(例如AlexNet在最後分類器前,是4096維的特徵向量)。這樣提取的特徵叫做CNN codes。得到這樣的特徵後,可以使用線性分類器(Liner SVM、Softmax等)來分類影象。

    2 Fine-tuning卷積網路。替換掉網路的輸入層(資料),使用新的資料繼續訓練。Fine-tune時可以選擇fine-tune全部層或部分層。通常,前面的層提取的是影象的通用特徵(generic features)(例如邊緣檢測,色彩檢測),這些特徵對許多工都有用。後面的層提取的是與特定類別有關的特徵,因此fine-tune時常常只需要Fine-tuning後面的層。

    關注中公優就業,學習更多深度學習知識。

  • 中秋節和大豐收的關聯?
  • “話少又乖巧”的孩子,長大後是不是更容易叛逆?