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