如何正確使用遷移學習

2021-09-24 18:24:04 字數 965 閱讀 5418

在使用遷移學習之前,有兩點需要特別注意的地方:

關注上面的問題可以幫助我們確定何種資料遷移策略。我們以**的形式來展示一下。

相似資料

不同資料

小資料使用全連線進行特徵提取+分類

使用高層卷積特徵提取+分類

大資料可以嘗試微調網路

也可以嘗試從頭訓練自己的網路

微調網路可能有效果也可能沒有效果

可以嘗試從頭訓練自己的網路

原始樣本資料是小資料並且和要遷移模型資料相似

因為資料較小,所以很有可能沒有辦法從頭獲取cnn特徵而不發生過擬合,微調網路也有可能會遇到這樣的問題。

原始資料和預訓練模型的資料很像,用來進行特徵提取通常是乙個不錯的辦法。然後使用乙個簡單的機器學習分類器對這些特徵進行分類。通常建議可以從更深的網路結構中(更高的層)提取特徵,因為這些特徵更豐富,更能代表中原始資料中學到的模式。

原始樣本資料是大資料並且和要遷移模型的資料相似

對於大資料,微調網路通常不會發生過擬合現象。你也可以嘗試自己從頭訓練乙個模型(至少這個想法值得做實驗嘗試一下)。因為原始樣本資料和要遷移模型資料十分相似,那麼遷移的預訓練模型可能已經有了足夠好的特徵,因此使用微調網路會很不錯。

原始樣本是小資料並且和要遷移模型資料不同

這是最糟糕的一種情況。

為了防止過擬合,我們不可能從新訓練模型。因為資料集不同,提取特徵的話,我們也要使用預訓練模型的較低的層來提取特徵。

我們應該知道的是,對於網路結構而言,更深的網路(更高的層)通常有更好的區分度,更符合訓練資料本身。因此,對於現在這種情況,我們一定要從低層網路結構中提取特徵。

原始樣本是大資料並且和要遷移模型資料不同

對於這種情況,既然有足夠的資料,從頭訓練乙個網路可能應該是首要選擇的點。然而,像是從imagenet這樣的資料集中預訓練的模型仍有很強的參考意義,即使這兩個資料看起來沒有什麼相關性。進行微調網路遷移學習值得一試。可以作為乙個基線評估,看看和從頭訓練網路相比,哪個效果更好。

如何正確使用記憶體

如何正確使用記憶體 對於初學者來說,記憶體是個神秘的空間。程式的絕大部分錯誤,也是在於記憶體的使用不當造成的,而且這些錯誤有些都是隱藏很深的。所以,如何掌握記憶體的使用,通曉系統對記憶體的管理手段,將是軟體成功的乙個非常關鍵的因素。首先我們要了解記憶體的分配方式。一般來說,記憶體的分配方式有三種 1...

如何正確使用列舉

列舉型別,對程式設計師來說再熟悉不過了,但是,你確定你在正確得使用它嗎?在用列舉之前,讓我們來區分一下狀態和選項這兩個概念。那麼,我們怎麼使用列舉來定義狀態和選項呢?不好的寫法 你可能經常見到的寫法 define status fail 0 define status success 1 用int變...

如何正確使用AOP

aop也發展了不久了,雖然在工作上也一直在用,不過畢竟沒有深入了解過,停留在概念上的理解,和使用的階段上。這篇主要講講,aop如何正確的使用它。首先需要知道,目前畢竟流行的aop框架,上篇文章也介紹了aop實現的原理,對spring這個大家庭來說,它的aop遠遠沒有這麼簡單。目前使用畢竟多的 幾種方...