更新時間:2022-04-07 來源:黑馬程序員 瀏覽量:
如何在只有6萬張圖像的MNIST訓練數(shù)據(jù)集上訓練模型?學術(shù)界當下使用最廣泛的大規(guī)模圖像數(shù)據(jù)集ImageNet,它有超過1,000萬的圖像和1,000類的物體。然而,我們平常接觸到數(shù)據(jù)集的規(guī)模通常在這兩者之間。假設我們想從圖像中識別出不同種類的椅子,然后將購買鏈接推薦給用戶。一種可能的方法是先找出100種常見的椅子,為每種椅子拍攝1,000張不同角度的圖像,然后在收集到的圖像數(shù)據(jù)集上訓練一個分類模型。另外一種解決辦法是應用遷移學習(transfer
learning),將從源數(shù)據(jù)集學到的知識遷移到目標數(shù)據(jù)集上。例如,雖然ImageNet數(shù)據(jù)集的圖像大多跟椅子無關(guān),但在該數(shù)據(jù)集上訓練的模型可以抽取較通用的圖像特征,從而能夠幫助識別邊緣、紋理、形狀和物體組成等。這些類似的特征對于識別椅子也可能同樣有效。
微調(diào)由以下4步構(gòu)成。
1.在源數(shù)據(jù)集(如ImageNet數(shù)據(jù)集)上預訓練一個神經(jīng)網(wǎng)絡模型,即源模型。
2.創(chuàng)建一個新的神經(jīng)網(wǎng)絡模型,即目標模型。它復制了源模型上除了輸出層外的所有模型設計及其參數(shù)。我們假設這些模型參數(shù)包含了源數(shù)據(jù)集上學習到的知識,且這些知識同樣適用于目標數(shù)據(jù)集。我們還假設源模型的輸出層跟源數(shù)據(jù)集的標簽緊密相關(guān),因此在目標模型中不予采用。
3.為目標模型添加一個輸出大小為目標數(shù)據(jù)集類別個數(shù)的輸出層,并隨機初始化該層的模型參數(shù)。
4.在目標數(shù)據(jù)集(如椅子數(shù)據(jù)集)上訓練目標模型。我們將從頭訓練輸出層,而其余層的參數(shù)都是基于源模型的參數(shù)微調(diào)得到的。
當目標數(shù)據(jù)集遠小于源數(shù)據(jù)集時,微調(diào)有助于提升模型的泛化能力。