深度學習之遷移學習介紹與使用
深度學習之遷移學習介紹與使用
遷移學習概述
在深度學習領域,透過預訓練模型作為檢查點開始訓練生成神經網路模型實現對新任務的支援,這種方法通常被稱為遷移學習,它的好處是不用再重頭開始設計與訓練一個全新的網路,而是基於已經訓練好的網路模型,在其基礎上進行引數與知識遷移,只需要很少量的計算資源開銷與訓練時間就可以實現對新任務的支援。
要理解遷移學習的整個過程就是要搞清楚下面三件事:
1. 遷移學習遷移什麼
2. 遷移學習是怎麼遷移的
3. 遷移學習什麼時候使用
遷移什麼
在預訓練模型中存在各種特徵資料與權重資訊、有些是與分類識別的物件本身關聯比較緊密的特徵資料與權重資訊,有些是一些比較共性的特徵資料與資訊,是可以被不同的任務或者物件之間共享的,遷移學習就是要遷移那些共性特徵資料與資訊,從而避免再次學習這些知識,實現快速學習。簡單點說遷移學習主要是實現卷積層共性特徵遷移,
怎麼遷移
遷移學習早期也被稱為感應遷移(inductive transfer),為了搞清楚,遷移學習到底是怎麼遷移的,大神Yoshua Bengio等人嘗試定義了一個八層的神經網路,將ImageNet的資料集1000個種類分為A與B兩個分類子集,數量均為500,然後繼續分別訓練生成forzen推斷圖、然後分別將網路模型A與B的前三層分別copy給沒有訓練之前網路B,並對B的餘下5層隨機初始化之後開始訓練這兩個全新的網路(B3B與A3B),他們想透過這個實驗證明、如果B3B與A3B跟之前訓練好的網路B有同樣的識別準確率就說明自遷移網路B3B與遷移網路A3B的前三層網路特徵是共性特徵資訊,可以用來遷移,如果網路效能下降則說明它們含有目標物件相關的個性特徵無法用來遷移。
最終的實驗結果表明,前面7層都是共性特徵,只有網路的最後一層才是任務相關的個性特徵資料,無法進行遷移,整個實驗結果如下:
從上面可以看出單純的遷移學習AnB的方式,隨著層數的增加網路效能不斷下降,但是透過遷移學習加fine-tuning的方式AnB+對前N層進行重新訓練調整最佳化,遷移學習的效果居然比原來的還要好。充分說明遷移學習+fine-tuning是個訓練卷積神經網路的好方法。
什麼時候使用遷移
當我們有相似的任務需要完成的時候,我們可以使用預訓練的相關模型,在此基礎上進行遷移學習即可,這個方面caffe與tensorflow都提供大量的可以用於遷移學習的預訓練模型庫,在github上地址分別如下:
# Caffe
模型
https:
//github.com/BVLC/caffe/wiki/Model-Zoo
# tensorflow
模型
https:
//github.com/tensorflow/models
在實際使用中我們把預訓練的網路稱為base-network,把要遷移的前n層複製到一個到目標網路(target network),然後隨機初始化目標網路的餘下各層、開始訓練進行反向傳播、反向傳播時候有兩種方法可以使用:
-
把前面n層凍結forzen、只對後面的層進行訓練,這種方法適合少的樣本資料,而且隨著層凍結n數值增大、網路效能會下降,這種是單純的遷移學習。
-
不凍結前n層、全程參與訓練不斷調整它們的引數,實現更好的網路效能這種方法稱為遷移學習+fine-tuning
轉自:
https://mp.weixin.qq.com/s/01WLhFsni1WRTYPgqoV0Ww
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2217305/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 深度學習之PyTorch實戰(4)——遷移學習深度學習PyTorch遷移學習
- 深度學習+深度強化學習+遷移學習【研修】深度學習強化學習遷移學習
- 深度學習與CV教程(8) | 常見深度學習框架介紹深度學習框架
- 什麼是遷移學習?什麼時候使用遷移學習?遷移學習
- 深度學習不得不會的遷移學習Transfer Learning深度學習遷移學習
- 遷移學習系列---基於例項方法的遷移學習遷移學習
- Laravel 學習之資料庫遷移Laravel資料庫
- android中的深度學習——快速風格遷移Android深度學習
- 遷移學習(Transfer Learning)遷移學習
- 1.Django介紹與學習Django
- 數字資訊化之遷移學習遷移學習
- 《PyTorch》Part5 PyTorch之遷移學習PyTorch遷移學習
- 多工學習模型之ESMM介紹與實現模型
- 多工學習模型之DBMTL介紹與實現模型
- 表示學習介紹
- 使用Mobilenet和Keras進行遷移學習!Keras遷移學習
- 深度學習與機器學習之間區別 - javaworld深度學習機器學習Java
- 深度學習中的框架特點及介紹深度學習框架
- Dubbo原始碼學習之-SPI介紹原始碼
- 深度學習趣談:什麼是遷移學習?(附帶Tensorflow程式碼實現)深度學習遷移學習
- 【火爐煉AI】深度學習006-移花接木-用Keras遷移學習提升效能AI深度學習Keras遷移學習
- 機器學習:詳解遷移學習(Transfer learning)機器學習遷移學習
- Python遷移學習:機器學習演算法Python遷移學習機器學習演算法
- 如何用 Python 和深度遷移學習做文字分類?Python遷移學習文字分類
- 深度學習系列教程(六)tf.data API 使用方法介紹深度學習API
- 帶你用深度學習虛擬機器進行文字遷移學習(附程式碼)深度學習虛擬機遷移學習
- 學習內容介紹
- dapr學習:dapr介紹
- 學習python前言介紹Python
- 機器學習入門之sklearn介紹機器學習
- 遷移學習基本原理遷移學習
- 基於VGG的遷移學習遷移學習
- [譯] TensorFlow 教程 #08 – 遷移學習遷移學習
- 【火爐煉AI】深度學習009-用Keras遷移學習提升效能(多分類問題)AI深度學習Keras遷移學習
- 【讀書1】【2017】MATLAB與深度學習——深度學習(2)Matlab深度學習
- Tensorflow 深度學習簡介(自用)深度學習
- (一) 機器學習和機器學習介紹機器學習
- 教程:使用遷移學習來解決影像問題!遷移學習