深度學習 遷移學習

2021-08-27 03:45:24 字數 1645 閱讀 6853

遷移學習:把公共的資料集的知識遷移到自己的問題上,即將已經訓練好的模型的一部分知識(網路結構)直接應用到另乙個類似模型中去

小資料集:利用遷移學習,應用其他研究者建立的模型和引數,用少量的資料僅訓練最後自定義的softmax網路。從而能夠在小資料集上達到很好的效果。

例如:imagenet 資料集,它有 1000 個不同的類別,因此這個網路會有乙個 softmax 單元,它可以輸出 1000 個可能類別之一

問題:現在有乙個三分類問題,裡是 貓1還是貓2 ,或者都不是.如果訓練集很小

把所有的層看作是凍結的,凍結網路中所有層的引數,只需要訓練和問題的 softmax 層有關的引數。

大資料集

如果擁有大量的資料集,可以多訓練後面的幾層,或者可以直接去掉這幾層,換成自己的隱藏單元和自己的 softmax 輸出層。

總之隨著資料集的增加,我們需要「 freeze」的層數越來越少。最後如果我們有十分龐大的資料集,那麼我們可以訓練網路模型的所有引數,將其他研究者訓練的模型引數作為引數的初始化來替代隨機初始化,來加速我們模型的訓練。

詳細說明

假設你已經有了乙個可以高精確度分辨貓和狗的深度神經網路,之後想訓練乙個能夠分別不同品種的狗的模型,你可以利用訓練好的網路,提取初級特徵,之後只訓練最後幾層神經元,讓其可以分辨狗的品種

遷移學習可以顯著的降低深度學習所需的硬體資源

舉影象識別中最常見的例子,訓練乙個神經網路。來識別不同的品種的貓,你若是從頭開始訓練,你需要百萬級的帶標註資料,海量的顯示卡資源。而若是使用遷移學習,你可以使用google發布的inception或vgg16這樣成熟的物品分類的網路,只訓練最後的softmax層,你只需要幾千張,使用普通的cpu就能完成,而且模型的準確性不差。

使用遷移學習時要注意,預訓練模型應用場景,要和當前任務差距不大

1)待訓練的資料集較小,已訓練的模型和當前任務相似。此時可以只是重新訓練已有模型的靠近輸出的幾層,例如將imagenet中輸出層原來可以判別一萬種輸出的網路改為只判別貓的品種,從而利用已有網路來做低層次的特徵提取。

2)待訓練的資料集較小,已訓練的模型和當前任務場景差距較大。例如你有的已訓練網路能識別出白天高速路上的違章車輛,你需要訓練乙個能識別出夜間違章車輛的模型,由於不管白天夜晚,交通規則是沒有變化的,所以你需要將網路靠近輸入的那幾層重新訓練,等到新的網路能夠提取出夜間車輛的基本資訊後,就可用預訓練模型,而不是從頭開始。

3)待訓練的資料集較大,已有模型的訓練資料和現有的訓練資料類似。此時應該使用原網路的結構,並保留每一層的節點權重,再逐層微調。

4)待訓練的資料集較大,已有的模型和新模型的資料差異度很高。此時應該做的是從頭開始,重新訓練。

推薦資料:

遷移學習簡明手冊:

深度學習之遷移學習

遷移學習 transfer learning 是一種機器學習方法,就是把為任務 a 開發的模型作為初始點,重新使用在為任務 b 開發模型的過程中。遷移學習是通過從已學習的相關任務中轉移知識來改進學習的新任務,雖然大多數機器學習演算法都是為了解決單個任務而設計的,但是促進遷移學習的演算法的開發是機器學...

深度學習11 為什麼需要遷移學習? 遷移學習簡介

使用深度學習技術解決問題的過程中,最常見的障礙在於,因為模型有大量的引數需要訓練,因此需要海量訓練資料作支撐。在面對某一領域的具體問題時,通常可能無法得到構建模型所需規模的資料。借助遷移學習,在乙個模型訓練任務中針對某種型別資料獲得的關係也可以輕鬆地應用於同一領域的不同問題。遷移學習的應用是近低於有...

一種深度學習方法 遷移學習

接下來我會介紹關於遷移學習的以下內容。它是什麼?它是如何工作的?為什麼使用它?什麼時候使用?轉移學習的方法 訓練模型 使用預先訓練的模型 和特徵提取 遷移學習 遇到乙個新問題,不是從頭訓練乙個網路模型,而是在現有的預訓練模型上,再次訓練或者直接使用。因為他可以用較少的資料來訓練深度神經網路,如果你資...