1.概述
在練習機器學習時,訓練模型可能需要很長時間。從頭開始創建模型架構、訓練模型,然后調整模型需要大量的時間和精力。訓練機器學習模型的一種更有效的方法是使用已經定義的架構,可能具有已經計算出的權重。這是背后的主要思想 遷移學習,采用已使用的模型并將其重新用于新任務。在深入研究遷移學習的不同使用方式之前,讓來了解為什么遷移學習如此強大且有用的技術。
2. 解決深度學習問題
當嘗試解決深度學習問題(例如構建圖像分類器)時,必須創建模型架構,然后根據數據訓練模型。 訓練模型分類器涉及調整網絡的權重,這個過程可能需要數小時甚至數天的時間,具體取決于模型和數據集的復雜性。 訓練時間將根據數據集的大小和模型架構的復雜性進行調整。
如果模型未達到任務所需的準確性,則可能需要對模型進行調整,然后需要重新訓練模型。 這意味著需要更多的時間進行訓練,直到找到最佳架構、訓練長度和數據集分區。 當您考慮有多少變量必須相互對齊才能使分類器發揮作用時,機器學習工程師總是在尋找更簡單、更有效的方法來訓練和實現模型,這是有道理的。 因此,遷移學習技術應運而生。
設計和測試模型后,如果模型被證明有用,則可以保存該模型并在以后重復使用以解決類似問題。
3.遷移學習的類型
一般來說,有兩種不同的 遷移學習的種類:從頭開始開發模型并使用預先訓練的模型。
當從頭開始開發模型時,需要創建一個能夠解釋訓練數據并從中提取模式的模型架構。 第一次訓練模型后,可能需要對其進行更改,以獲得模型的最佳性能。 然后,可以保存模型架構并將其用作將用于類似任務的模型的起點。
在第二種情況下——使用預訓練模型——只需選擇要使用的預訓練模型即可。 許多大學和研究團隊會將其模型的規格提供給一般用途。 模型的架構可以與權重一起下載。
進行遷移學習時,整個模型架構和權重可以用于手頭的任務,或者可以僅使用模型的某些部分/層。 僅使用部分預訓練模型并訓練模型的其余部分稱為微調。
4.微調網絡
網絡微調描述了僅訓練網絡中某些層的過程。 如果新的訓練數據集與用于訓練原始模型的數據集非常相似,則可以使用許多相同的權重。
網絡中應解凍和重新訓練的層數應根據新數據集的大小進行縮放。 如果訓練的數據集很小,則更好的做法是保持大部分層不變,只訓練最后幾層。 這是為了防止網絡過度擬合。 或者,可以刪除預訓練網絡的最后幾層并添加新層,然后對其進行訓練。 相反,如果數據集是一個大數據集,可能比原始數據集大,則應該重新訓練整個網絡。 使用網絡作為 固定特征提取器,網絡的大部分可用于提取特征,而只有網絡的最后一層可以解凍和訓練。
當微調網絡時,請記住 ConvNet 的早期層包含表示圖像更通用特征的信息。 這些是邊緣和顏色等特征。 相比之下,ConvNet 的后續層包含更具體的細節,這些細節針對模型最初訓練的數據集中包含的各個類。 如果您在與原始數據集完全不同的數據集上訓練模型,您可能希望使用模型的初始層來提取特征并重新訓練模型的其余部分。
5.遷移學習示例
遷移學習最常見的應用可能是那些使用圖像數據作為輸入的應用。 這些通常是預測/分類任務。 道路 卷積神經網絡 解釋圖像數據有助于重用模型的各個方面,因為卷積層通常會區分非常??相似的特征。 常見遷移學習問題的一個例子是 ImageNet 1000 任務,這是一個包含 1000 個不同類別對象的龐大數據集。 開發在此數據集上實現高性能模型的公司通常會根據許可發布其模型,以便其他人重用它們。 此過程產生的一些模型包括 微軟ResNet模型、Google Inception 模型以及 牛津 VGG 模型 組。