本文靈感來自 FAIR 的論文《Rethinking ImageNet Pre-training》
來自摘要:我們使用從隨機初始化訓(xùn)練的標(biāo)準模型在 COCO 數(shù)據(jù)集上報告對象檢測和實例分割的競爭結(jié)果。結(jié)果并不比他們的 ImageNet 預(yù)訓(xùn)練對應(yīng)物差,唯一的例外是增加訓(xùn)練迭代次數(shù)所以隨機初始化的模型可能會收斂。隨機初始化的訓(xùn)練非常穩(wěn)??;即使在以下情況下,我們的結(jié)果也成立:(i) 僅使用 10% 的訓(xùn)練數(shù)據(jù),(ii) 用于更深入和更廣泛的模型,以及 (iii) 用于多個任務(wù)和指標(biāo)。
目錄
ImageNet 預(yù)訓(xùn)練和微調(diào)范式
不同的訓(xùn)練模式
特征表示和隨機初始化相關(guān)工作
歸一化和收斂比較
實驗設(shè)置和結(jié)果
增強的基線
用較少的數(shù)據(jù)進行實驗
總結(jié)
遷移學(xué)習(xí)——預(yù)訓(xùn)練和微調(diào)范式
近年來,深度學(xué)習(xí)取得了很大進展。很難想象一個不使用深度學(xué)習(xí)的行業(yè)。大量數(shù)據(jù)的可用性以及計算資源的增加推動了這一進展。有許多眾所周知的新穎方法促進了深度學(xué)習(xí)的發(fā)展。
其中之一是遷移學(xué)習(xí),這是一種將一個訓(xùn)練模型學(xué)習(xí)到的表征/信息用于另一個需要針對不同數(shù)據(jù)和相似/不同任務(wù)進行訓(xùn)練的模型的方法。遷移學(xué)習(xí)使用預(yù)先訓(xùn)練的模型(即模型已經(jīng)在一些更大的基準數(shù)據(jù)集上訓(xùn)練,比如 ImageNet)。
訓(xùn)練神經(jīng)網(wǎng)絡(luò)可能需要幾分鐘到幾個月的時間,具體取決于數(shù)據(jù)和目標(biāo)任務(wù)。直到幾年前,由于計算限制,這僅適用于研究機構(gòu)和技術(shù)組織。
但是隨著預(yù)先訓(xùn)練的模型隨時可用(以及其他一些因素),這種情況發(fā)生了變化。使用遷移學(xué)習(xí),我們現(xiàn)在可以構(gòu)建深度學(xué)習(xí)應(yīng)用程序,以更快地解決與視覺相關(guān)的任務(wù)。
隨著過去一年的最新發(fā)展,遷移學(xué)習(xí)現(xiàn)在也可以用于與語言相關(guān)的任務(wù)。所有這些都證明 Andrew Ng 幾年前所說的話是正確的——遷移學(xué)習(xí)將成為商業(yè) ML 成功的下一個驅(qū)動力。
不同的訓(xùn)練模式
在博客使用很少的數(shù)據(jù)構(gòu)建強大的圖像分類模型中, Francois Chollet 介紹了使用有限數(shù)據(jù)訓(xùn)練模型的過程。他從頭開始訓(xùn)練一個模型 50 個 epochs,并在狗與貓分類上獲得了 80% 的準確率。使用預(yù)訓(xùn)練模型的瓶頸特征,使用相同數(shù)據(jù)的準確率躍升至 90%。作為最后一步,在微調(diào)網(wǎng)絡(luò)的頂層時,報告的準確率為 94%。
在這里很明顯,與從頭開始訓(xùn)練的模型相比,使用遷移學(xué)習(xí)和預(yù)訓(xùn)練模型可以提高準確性,而無需花費太多時間來收斂。這是否意味著預(yù)訓(xùn)練和微調(diào)范式明顯優(yōu)于從頭開始訓(xùn)練?
上圖有助于在訓(xùn)練模型時可視化一些可能性。右邊的圖像代表一個模型,其中訓(xùn)練模型的卷積基被凍結(jié),從中獲得的瓶頸特征用于重新訓(xùn)練進一步的層。這是使用預(yù)訓(xùn)練模型的典型場景。中間的圖像代表一個模型,其中除了少數(shù)初始層外,網(wǎng)絡(luò)的其余部分都經(jīng)過訓(xùn)練。左邊的最終模型代表從頭開始訓(xùn)練模型——這就是我們將在本博客中研究的方法。
在預(yù)訓(xùn)練和微調(diào)范式中,模型訓(xùn)練從一些來自預(yù)訓(xùn)練模型的學(xué)習(xí)權(quán)重開始。這已經(jīng)變得更加標(biāo)準,尤其是在與視覺相關(guān)的任務(wù)(如對象檢測和圖像分割)方面。
在 ImageNet 上預(yù)訓(xùn)練的模型擅長檢測邊緣、模式等高級特征。這些模型理解某些特征表示,可以重用。這有助于更快地收斂,并用于對象檢測、分割和活動識別等任務(wù)的最先進方法。但是這些表示有多好?
特征表示和隨機初始化
預(yù)訓(xùn)練模型學(xué)習(xí)的特征表示是領(lǐng)域相關(guān)的。他們從他們接受過訓(xùn)練的基準數(shù)據(jù)集中學(xué)習(xí)。我們可以通過構(gòu)建更大的數(shù)據(jù)集來實現(xiàn)通用特征表示嗎?在這方面已經(jīng)做了一些工作,其中注釋了幾乎是 ImageNet 大小的 3000 倍的數(shù)據(jù)集。
然而,隨著用于預(yù)訓(xùn)練的數(shù)據(jù)集的大小,目標(biāo)任務(wù)的改進效果不佳。它表明,簡單地構(gòu)建更大的數(shù)據(jù)集并不總是能在目標(biāo)任務(wù)上獲得更好的結(jié)果。另一種選擇是使用隨機權(quán)重初始化從頭開始訓(xùn)練模型。
為了從頭開始訓(xùn)練模型,網(wǎng)絡(luò)中的所有參數(shù)或權(quán)重都是隨機初始化的。論文Rethinking ImageNet Pre-training 中進行的實驗使用 Mask R-CNN 作為基線。該基線模型在 COCO 數(shù)據(jù)集上進行了預(yù)訓(xùn)練和未預(yù)訓(xùn)練,并對結(jié)果進行了比較。
獲得的結(jié)果證明,通過對模型進行足夠次數(shù)的迭代訓(xùn)練并使用適當(dāng)?shù)募夹g(shù),從頭開始訓(xùn)練的模型也提供了與微調(diào)模型的比較和接近的結(jié)果。
相關(guān)工作
如果您習(xí)慣于使用預(yù)先訓(xùn)練的模型,那么從頭開始訓(xùn)練可能聽起來既費時又費力。為了質(zhì)疑這個假設(shè),我們可以從頭開始查看先前對訓(xùn)練模型所做的研究,而不是使用預(yù)先訓(xùn)練的模型。
DetNet 和 CornerNet 使用專門的模型架構(gòu)從頭開始適應(yīng)訓(xùn)練模型。但是沒有證據(jù)表明這些特殊的架構(gòu)與預(yù)訓(xùn)練和微調(diào)范式的結(jié)果有任何比較。
在這項工作中,作者考慮使用現(xiàn)有的基線架構(gòu)進行一些更改。一種是訓(xùn)練模型進行更多迭代,另一種是使用批量標(biāo)準化替代方案,如組標(biāo)準化和同步批量標(biāo)準化。有了這個,作者能夠產(chǎn)生接近于微調(diào)方法的結(jié)果。
歸一化和收斂比較
如果模型在沒有適當(dāng)標(biāo)準化的情況下從頭開始訓(xùn)練,則可能會產(chǎn)生誤導(dǎo)性的結(jié)果,這可能意味著從頭開始的訓(xùn)練根本不是最佳的。
對于與視覺相關(guān)的任務(wù),訓(xùn)練數(shù)據(jù)由高分辨率圖像組成。這意味著必須相應(yīng)地調(diào)整批大小以滿足內(nèi)存限制。批量標(biāo)準化適用于更大的批量。批量越大越好。但是由于高分辨率圖像和內(nèi)存限制,模型訓(xùn)練必須將其批量大小限制為較小的數(shù)字。這導(dǎo)致BN的不良結(jié)果。
為了避免這種情況,使用了組歸一化和同步批量歸一化。組標(biāo)準化與批量大小無關(guān)。同步BN使用多個設(shè)備。這增加了有效批量大小并避免了小批量,從而可以從頭開始訓(xùn)練模型。
微調(diào)模型取得了領(lǐng)先,因為預(yù)訓(xùn)練模型已經(jīng)學(xué)習(xí)了高級特征。這意味著從頭開始訓(xùn)練的模型無法像微調(diào)模型那樣快速收斂。雖然這可以使微調(diào)模型更好,但還應(yīng)該考慮在 ImageNet 等大型基準數(shù)據(jù)集上預(yù)訓(xùn)練模型所需的時間和資源。在 ImageNet 預(yù)訓(xùn)練期間,經(jīng)過多次迭代訓(xùn)練了超過一百萬張圖像。所以為了讓隨機初始化訓(xùn)練趕上,模型需要多次訓(xùn)練迭代。
[圖片上傳中...(image-d29241-1628604915936-0)]
此處的圖像總結(jié)了在兩種情況下看到的訓(xùn)練樣本數(shù)量 - 有和沒有預(yù)訓(xùn)練。根據(jù)目標(biāo)任務(wù),樣本可以是圖像、實例或像素。對于分割任務(wù),該模型在像素級別工作。對于對象檢測,重要的是每個圖像中對象的實例。我們看到,除了分割(像素級任務(wù))之外,從頭開始訓(xùn)練所需的訓(xùn)練圖像數(shù)量要少得多。
實驗設(shè)置和結(jié)果
以下是實驗設(shè)置——使用的架構(gòu)和超參數(shù)。實驗使用具有 ResNet 和 ResNext 架構(gòu)的 Mask R-CNN 作為基線。GN 或 SyncBN 用于歸一化。該模型以 0.02的初始學(xué)習(xí)率進行訓(xùn)練,并在最后 60k 和 20k 次迭代中分別減少了 10 倍。訓(xùn)練數(shù)據(jù)水平翻轉(zhuǎn),基線模型沒有測試時間增加。總共使用了 8 個 GPU 進行訓(xùn)練。
通過在 COCO 數(shù)據(jù)集上用 118K 訓(xùn)練和 5k 驗證樣本訓(xùn)練具有這些設(shè)置的模型,從頭訓(xùn)練的模型能夠趕上預(yù)訓(xùn)練模型的準確性。
在這種情況下,目標(biāo)檢測和圖像分割是兩個目標(biāo)任務(wù)。邊界框和掩碼的平均精度是指標(biāo)。正如我們在上圖中所看到的,左邊的一個是用 ResNet 101 和 GN 訓(xùn)練的,而右邊的一個顯示了帶有 ResNet50 和 SyncBN 的 Mask RCNN 的結(jié)果。
我們看到,在微調(diào)時,預(yù)訓(xùn)練使模型領(lǐng)先一步,因為我們看到 AP 從接近 20 的值開始。而從頭開始訓(xùn)練時,模型從接近 5 的 AP 值開始。但是需要注意的重要一點是,從頭開始訓(xùn)練的模型繼續(xù)給出接近的結(jié)果。這里的這些尖峰表示應(yīng)用不同的時間表和學(xué)習(xí)率的結(jié)果,所有這些都合并到同一個圖中。
增強的基線
作者還嘗試對他們的基線模型進行改進。通過在訓(xùn)練期間添加規(guī)模增強,報告了更好的結(jié)果。同樣,使用 Cascade RCNN 和測試時間增強也改善了結(jié)果。
我們看到,通過訓(xùn)練和測試時間的增加,從頭訓(xùn)練的模型比預(yù)訓(xùn)練的模型給出了更好的結(jié)果。這些圖顯示了增強型基線模型的結(jié)果。
使用較少數(shù)據(jù)進行實驗
最后的實驗是嘗試不同數(shù)量的訓(xùn)練數(shù)據(jù)。雖然這項工作的第一個有趣發(fā)現(xiàn)是,即使使用從頭開始訓(xùn)練的模型,我們也可以獲得可比較的結(jié)果,另一個令人驚訝的發(fā)現(xiàn)是,即使數(shù)據(jù)較少,從頭開始訓(xùn)練仍然可以產(chǎn)生與微調(diào)模型接近的結(jié)果。
當(dāng)僅使用整個 COCO 訓(xùn)練數(shù)據(jù)的 1/3,即接近 35K 圖像時,實驗表明微調(diào)方法在一些迭代后開始過度擬合。這表明 ImageNet 預(yù)訓(xùn)練不會自動幫助減少過擬合。但是盡管數(shù)據(jù)較少,從頭開始的訓(xùn)練仍然趕上微調(diào)的結(jié)果。
當(dāng)只使用十分之一的訓(xùn)練數(shù)據(jù)(接近 10k 個圖像)進行訓(xùn)練時,會發(fā)現(xiàn)類似的趨勢。我們可以在左圖中看到——使用預(yù)訓(xùn)練和微調(diào)方法,模型在一些迭代后開始過度擬合。
我們在中間和右邊的圖中看到,從頭開始訓(xùn)練的結(jié)果與微調(diào)模型的結(jié)果非常接近。如果我們嘗試使用更少的數(shù)據(jù)怎么辦?喜歡使用整個訓(xùn)練數(shù)據(jù)的百分之一?當(dāng)僅使用 1k 圖像時,從頭開始訓(xùn)練仍然收斂得相當(dāng)緩慢。但它會產(chǎn)生更糟糕的結(jié)果。雖然預(yù)訓(xùn)練模型的 AP 為 9.9,但所考慮的方法僅給出 3.5。這表明模型由于缺乏數(shù)據(jù)而過度擬合。
總結(jié)
無需更改架構(gòu)或?qū)iT的網(wǎng)絡(luò),就可以從頭開始針對目標(biāo)任務(wù)進行訓(xùn)練。
從頭開始訓(xùn)練需要更多的迭代才能充分收斂。
在許多情況下,從頭開始訓(xùn)練并不比其 ImageNet 預(yù)訓(xùn)練對手差,低至 10k COCO 圖像。
ImageNet 預(yù)訓(xùn)練加快了目標(biāo)任務(wù)的收斂速度,但不一定有助于減少過度擬合,除非我們進入非常小的數(shù)據(jù)范圍。
如果目標(biāo)任務(wù)對定位比分類更敏感,則 ImageNet 預(yù)訓(xùn)練的幫助較小。
預(yù)訓(xùn)練有助于學(xué)習(xí)通用表示,但在評估預(yù)訓(xùn)練特征時我們應(yīng)該小心。
結(jié)論
該論文并未聲稱無論如何都不推薦預(yù)訓(xùn)練和微調(diào)方法。但包括的實驗表明,對于某些場景,從頭開始訓(xùn)練模型的結(jié)果比微調(diào)/預(yù)訓(xùn)練方法略好。這意味著如果計算不是約束,那么對于某些場景和配置設(shè)置,從頭開始訓(xùn)練的模型比微調(diào)的模型給出更好的結(jié)果。 這是一項有趣的研究,特別是因為預(yù)訓(xùn)練和微調(diào)范式更多地被用作標(biāo)準程序??紤]到深度學(xué)習(xí)的應(yīng)用領(lǐng)域——包括汽車、健康、零售等的用例,在這些用例中,即使準確性的微小改進也會產(chǎn)生巨大的差異——研究不僅要瞄準新穎和創(chuàng)新的方法,而且要更詳細地研究現(xiàn)有方法。這可能會帶來更好的見解和新發(fā)現(xiàn)。