如何正确使用迁移学习
在使用遷移學習之前,有兩點需要特別注意的地方:
- 你的數據的尺寸大小
- 你的數據和預訓練好網絡結構數據(典型的比如說是ImageNet)的相似程度
關注上面的問題可以幫助我們確定何種數據遷移策略。我們以表格的形式來展示一下。
| 小數據 | 使用全連接進行特征提取+分類 | 使用高層卷積特征提取+分類 |
| 大數據 | 可以嘗試微調網絡 也可以嘗試從頭訓練自己的網絡 | 微調網絡可能有效果也可能沒有效果 可以嘗試從頭訓練自己的網絡 |
原始樣本數據是小數據并且和要遷移模型數據相似
因為數據較小,所以很有可能沒有辦法從頭獲取CNN特征而不發生過擬合,微調網絡也有可能會遇到這樣的問題。
原始數據和預訓練模型的數據很像,用來進行特征提取通常是一個不錯的辦法。然后使用一個簡單的機器學習分類器對這些特征進行分類。通常建議可以從更深的網絡結構中(更高的層)提取特征,因為這些特征更豐富,更能代表中原始數據中學到的模式。
原始樣本數據是大數據并且和要遷移模型的數據相似
對于大數據,微調網絡通常不會發生過擬合現象。你也可以嘗試自己從頭訓練一個模型(至少這個想法值得做實驗嘗試一下)。因為原始樣本數據和要遷移模型數據十分相似,那么遷移的預訓練模型可能已經有了足夠好的特征,因此使用微調網絡會很不錯。
原始樣本是小數據并且和要遷移模型數據不同
這是最糟糕的一種情況。
為了防止過擬合,我們不可能從新訓練模型。因為數據集不同,提取特征的話,我們也要使用預訓練模型的較低的層來提取特征。
我們應該知道的是,對于網絡結構而言,更深的網絡(更高的層)通常有更好的區分度,更符合訓練數據本身。因此,對于現在這種情況,我們一定要從低層網絡結構中提取特征。
原始樣本是大數據并且和要遷移模型數據不同
對于這種情況,既然有足夠的數據,從頭訓練一個網絡可能應該是首要選擇的點。然而,像是從ImageNet這樣的數據集中預訓練的模型仍有很強的參考意義,即使這兩個數據看起來沒有什么相關性。進行微調網絡遷移學習值得一試。可以作為一個基線評估,看看和從頭訓練網絡相比,哪個效果更好。
總結
以上是生活随笔為你收集整理的如何正确使用迁移学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 训练最优神经网络
- 下一篇: sklearn中的fit_transfo