回覆列表
-
1 # CynthiaLee95
-
2 # 北航秦曾昌
Fine-tuning指的是對模型進行更加精細的調整,是深度學習中常用的訓練技巧。Fine-tuning往往會跟遷移學習相結合。因為對於普通人來說,無法獲得大量的資料,也沒有足夠好的計算資源供我們使用。因此只能利用別人在大資料集如Imagenet中已經訓練好的模型,再適配到我們需求的特定領域如識別動物,衣服等等。這裡將別人的模型移植到自己的問題中,所需要的方法就是fine-tuning。
其基於的思想就是,透過對大量的資料進行訓練,神經網路的可以提取資料的淺層特徵,如圖片的邊緣、紋理等等。而根據神經網路的層次學習過程,這些淺層特徵都是透過前幾層網路來提取,以便服務於後面中高階特徵提取,最後再根據任務的需要來決定最後幾層的輸出結果。因此這就給模型遷移的fine-tuning帶來了機會,我們只需要針對自身任務的要求,利用預訓練好的模型前幾層已經提取好的淺層特徵,適當的調整網路後幾層的結構,就能夠得到相對較好的訓練結果。(下圖就是將任務A的預訓練遷移到任務B,對任務B進行fine-tuning)
因此Fine-tuning的好處就顯而易見了。首先,不需要自己再設計模型結構,利用預訓練模型再做細微調整就可以使用;其次不需要重新訓練模型,這將大大的縮短訓練週期,因為重新訓練模型時,模型準確率往往是從很低的值緩慢上升,透過遷移的思想來fine-tuning只需要較少的訓練迭代次數,就可以得到較優的結果,這樣就能加快訓練的效率。
finetuning的意思和他的字面意思是相同的:微調。 深度學習訓練模型一般有兩種方式,一種是利用各種初始化方法初始化網路引數後從頭進行訓練,叫做train from scratch。 一種是在某種資料集訓練好的模型初始化,用較小的學習率在自己的資料集進行訓練,叫做finetuning,現在視覺任務一般都會用imagenet或者coco上面訓練好的model作為body網路的pretrained model 然後在自己的資料集上finetuning。