什么是預訓練和微調?
預訓練(pre-training/trained):你需要搭建一個網絡來完成一個特定的圖像分類的任務。首先,你需要隨機初始化參數,然后開始訓練網絡,不斷調整直到網絡的損失越來越小。在訓練的過程中,一開始初始化的參數會不斷變化。當你覺得結果很滿意的時候,就可以將訓練模型的參數保存下來,以便訓練好的模型可以在下次執行類似任務時獲得較好的結果。這個過程就是pre-training。
之后,你又接收到一個類似的圖像分類的任務。這個時候,你可以直接使用之前保存下來的模型的參數來作為這一任務的初始化參數,然后在訓練的過程中,依據結果不斷進行一些修改。這時候,你使用的就是一個pre-trained模型,而過程就是fine-tuning。
所以,預訓練就是指預先訓練的一個模型或者指預先訓練模型的過程;微調 就是指將預訓練過的模型作用於自己的數據集,並參數適應自己數據集的過程。
微調的作用
在CNN領域中。很少人自己從頭訓練一個CNN網絡。主要原因上自己很小的概率會擁有足夠大的數據集,從頭訓練,很容易造成過擬合。
所以,一般的操作都是在一個大型的數據集上訓練一個模型,然后使用該模型作為類似任務的初始化或者特征提取器。比如VGG,Inception等模型都提供了自己的訓練參數,以便人們可以拿來微調。這樣既節省了時間和計算資源,又能很快的達到較好的效果。