遷移學習與fine-tuning有什麼區別?


遷移學習,個人感覺是一種思想吧,並不是一種特定的演算法或者模型,目的是將已學習到的知識應用到其他領域,提高在目標領域上的性能,比如說一個通用的語音模型遷移到某個人的語音識別,一個ImageNet上的圖片分類問題遷移到醫療疾病識別上。

作為知識的搬運工,下面的內容就要開始盜圖大法了,台大李宏毅老師的slides,一個能把MLDL講成笑話的男人,非常推薦:

1. 首先,回答第一個問題?Why Transfer Learning?

遷移大法好,無論是語音、圖片,還是文本處理,都有遷移學習的應用場景和實例,藉助現有學習到的知識,能夠很好的解決目標問題;

2. 回答正題,fine tune和Transfer Learning的關係(經典技法之一吧,適用在source和target中都有標籤數據集的情形)

李宏毅老師按照源問題數據集和目標問題數據集是否有標籤,可以像下圖這樣劃分,方格中是典型的方法技巧,當然這種分類的標準有很多,像楊強老師早在08年的Trasfer Learning Survey中,就按照domain和task的劃分方法,又進一步區分了instance transfer,feature transfer,parameter transfer,knowledge transfer;

3. 具體聊一聊fine tune吧,應用情景是我們在target上有少量的label data,如何有效利用這部分label data,而且還不過擬合呢,我們以NN的角度為例,在原問題中學習到的NN,我們在target上採用保守學習的方式,比如讓target和source上的輸出儘可能相近,神經網路中間的參數儘可能相近,或者tune的時候,只tune某幾層,其他層的參數不發生變化;

4. 不同領域的問題,在NN上fine tune的經驗也不同,語音識別領域一般tune前幾層,圖片識別問題tune後面幾層(背後的哲學,還請大神指點了);

5. 最後舉一下遷移學習中的其他技巧吧,比如multi-task learning,怎麼說呢?multi-task學習的哲學是同時學,transfer learning的思想是先學習source,在學習target。但技巧還是可以應用的,比如ACL 2015的工作,同時進行多語音的語音識別,效果會好於單獨一種語言的識別效果,底層共享神經元,學習到通用特徵:

6. Transfer Learning中的其他技巧也都蠻有意思的,比如domain adversarial training,對抗的思想有點像GAN,通過source domain和target domain的數據投影到同一個空間內,再進行學習;

推薦材料:

1. http://kddchina.org/file/IntroTL2016.pdf

2. https://www.cse.ust.hk/~qyang/Docs/2009/tkde_transfer_learning.pdf

3. Hung-yi Lee

4. http://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2017/Lecture/transfer.pdf


舉個例子,假設今天老闆給你一個新的數據集,讓你做一下圖片分類,這個數據集是關於Flowers的。問題是,數據集中flower的類別很少,數據集中的數據也不多,你發現從零訓練開始訓練CNN的效果很差,很容易過擬合。怎麼辦呢,於是你想到了使用Transfer Learning,用別人已經訓練好的Imagenet的模型來做。

做的方法有很多:

  1. 把Alexnet里卷積層最後一層輸出的特徵拿出來,然後直接用SVM分類。這是Transfer Learning,因為你用到了Alexnet中已經學到了的「知識」
  2. 把Vggnet卷積層最後的輸出拿出來,用貝葉斯分類器分類。思想基本同上。
  3. 甚至你可以把Alexnet、Vggnet的輸出拿出來進行組合,自己設計一個分類器分類。這個過程中你不僅用了Alexnet的「知識」,也用了Vggnet的「知識」。
  4. 最後,你也可以直接使用fine-tune這種方法,在Alexnet的基礎上,重新加上全連接層,再去訓練網路。

綜上,Transfer Learning關心的問題是:什麼是「知識」以及如何更好地運用之前得到的「知識」。這可以有很多方法和手段。而fine-tune只是其中的一種手段。


廣義地說,遷移學習可以指代對於通用人工智慧的研究。楊強老師的演講值得一看。GMIS 2017大會楊強演講:遷移學習的挑戰和六大突破點 - 知乎專欄

如果按照CS231里的說法,狹義地說遷移學習是一個idea,把一個預先訓練好的模型的部分挪到一個類似的任務上使用。一方面這節省了訓練的時間;另一方面對於某些任務我們可能有很大的dataset而對於另一些相似的任務並沒有那麼大的dataset,那麼我們就可以拿在前者上訓練好的模型抽掉最後幾層(抽掉多少視後者有多大而定),在後者上只另外train最後幾層。舉個例子,在語音識別里我們有很多英語的數據,但卻沒有多少的葡萄牙語的數據,考慮到兩者都深受拉丁語影響,我可以先拿英語的語音數據訓練一個模型,再基於這個模型在葡萄牙語上訓練模型的最後幾層對最後幾層參數進行微調。

fine-tuning 是一個trick,在遷移學習中有所涉及,但不僅僅出現在遷移學習中,指對參數進行微調。

可以參考一下:CS231n Convolutional Neural Networks for Visual Recognition


簡單來說

Transfer learning可以看成是一套完整的體系,是一種處理流程

目的是為了不拋棄從之前數據里得到的有用信息,也是為了應對新進來的大量數據的缺少標籤或者由於數據更新而導致的標籤變異情況

至於說Fine-tune,在深度學習裡面,這僅僅是一個處理手段

之所以現在大量採用fine-tune,是因為有很多人用實驗證實了:單純從自己的訓練樣本訓練的model,效果沒有fine-tune的好

學術界的風氣本就如此,一個被大家證實的行之有效的方法會在短時間內大量被採用。

所以很多人在大數據下面先按照標準參數訓練一個模型,比如在imagenet下面訓練好一個

這個模型中,那些卷積層的濾波器,其實已經具備了一些初始的形狀信息了,有很強的泛用性,比起你自己單獨訓練,隨機初始化一大堆濾波器效果更好。

然後在那些基於imagenet的濾波器的基礎上,你再進行自己的一些梯度下降的優化,收斂的方向以及準確性理論上就會更靠譜一些。

這個很難用理論去證明(因為如果你能理論證明了,那麼相當於你就已經快要搞懂深度學習的本質了),但是有大量的實驗來背書,所以主流學術界都是這麼做

#####

從範圍上來說,Transfer learning是大於fine-tune的。

fine-tune只是實現手段,transfer learning卻是一個很大的體系


fine-tuning是一種機器學習,深度學習中常用的一種調參的方法。

遷移學習是一種機器學習的學習範式的一種,兩者區別挺大的。

前一期介紹了表示學習Representation Learning,指出其中比較有趣的一個方向-共享表示學習。今天介紹共享表示學習最相關的機器學習領域-遷移學習(Transfer Learning)。文章內容主要整理自Sinno Jialin Pan and Qiang Yang的論文《A survey on transfer Learning》。

獲取最新消息鏈接:獲取最新消息快速通道 - lqfarmer的博客 - 博客頻道 - CSDN.NET

1 遷移學習提出的背景及歷史

1、遷移學習提出背景

在機器學習、深度學習和數據挖掘的大多數任務中,我們都會假設training和inference時,採用的數據服從相同的分布(distribution)、來源於相同的特徵空間(feature space)。但在現實應用中,這個假設很難成立,往往遇到一些問題:

1、帶標記的訓練樣本數量有限。比如,處理A領域(target domain)的分類問題時,缺少足夠的訓練樣本。同時,與A領域相關的B(source domain)領域,擁有大量的訓練樣本,但B領域與A領域處於不同的特徵空間或樣本服從不同的分布。

2、數據分布會發生變化。數據分布與時間、地點或其他動態因素相關,隨著動態因素的變化,數據分布會發生變化,以前收集的數據已經過時,需要重新收集數據,重建模型。

這時,知識遷移(knowledge transfer)是一個不錯的選擇,即把B領域中的知識遷移到A領域中來,提高A領域分類效果,不需要花大量時間去標註A領域數據。遷移學習,做為一種新的學習範式,被提出用於解決這個問題。

2 遷移學習發展歷史

遷移學習的研究來源於一個觀測:人類可以將以前的學到的知識應用於解決新的問題,更快的解決問題或取得更好的效果。遷移學習被賦予這樣一個任務:從以前的任務當中去學習知識(knowledge)或經驗,並應用於新的任務當中。換句話說,遷移學習目的是從一個或多個源任務(source tasks)中抽取知識、經驗,然後應用於一個目標領域(target domain)當中去。

自1995年以來,遷移學習吸引了眾多的研究者的目光,遷移學習有很多其他名字:學習去學習(Learning to learn)、終身學習(life-long learning)、推導遷移(inductive transfer)、知識強化(knowledge consolidation)、上下文敏感性學習(context-sensitive learning)、基於知識的推導偏差(knowledge-based inductive bias)、累計/增量學習(increment / cumulative learning)等。

2 遷移學習中的符號及概念的定義

獲取最新消息鏈接:獲取最新消息快速通道 - lqfarmer的博客 - 博客頻道 - CSDN.NET

1、符號定義

領域(domain)和任務(task)定義:

領域由兩個部分組成:特徵空間(feature space)X和特徵空間的邊緣分布P(x),其中,x={x1,x2......xn} 屬於X。如果兩個領域不同,它們的特徵空間或邊緣概率分布不同。領域表示成D={X,P(x)}。

任務組成:給定一個領域D={X,P(x)}的情況下,一個任務也包含兩個部分:標籤空間Y和一個目標預測函數f(.)。一個任務表示為:T={Y,f(.)}。目標預測函數不能被直接觀測,但可以通過訓練樣本學習得到。從概率論角度來看,目標預測函數f(.)可以表示為P(Y|X)。任務表示成T={Y,P(Y|X)}

一般情況下,只考慮只存在一個source domain Ds 和一個target domain Dt的情況。其中,源領域Ds = {(xs1,ys1),(xs2,ys2)......(xsns,ysns)},xsi 屬於Xs,表示源領域的觀測樣本,ysi屬於Ys,表示源領域觀測樣本xsi對應的標籤。目標領域Dt = {(xt1,yt1),(xt2,yt2).......(xtnt,ytnt)},xti屬於Xt,表示目標領域觀測樣本,ysi屬於Yt,表示目標領域xti對應的輸出。通常情況下,源領域觀測樣本數目ns與目標領域觀測樣本數目nt存在如下關係:1&<= nt &<&< ns。

2、遷移學習定義

基於以上的符號定義,給出正式的遷移學習的定義:在給定源領域Ds和源領域學習任務Ts、目標領域Dt和目標領域任務Tt的情況,且Ds 不等於Dt或Ts不等於Tt,情況下;遷移學習使用源領域Ds和Ts中的知識提升或優化目標領域Dt中目標預測函數ft(.)的學習效果。

通過以上的定義可以發現:

1)、領域D=(X,P(x)),當源和目標領域D不同時,存在兩種情況:(1)Xs不等於XT,源領域和目標領域的特徵空間不同;(2)P(xs)不等於P(xt),即源空間和目標空間的特徵空間相同,但觀測樣本X的邊緣分布不同。

2)任務T={Y,P(Y|X)},當源和目標領域T不同時,存在兩種情況:(1)Ys不等於Yt,源領域的標籤空間與目標領域的標籤空間不同;(2)P(Ys|Xs)不等於P(Yt|Xt),即源領域和目標領域的條件概率分布不同。

3 遷移學習的分類

1、遷移學習的研究問題

在遷移學習領域有三個研究問題:(1)、遷移什麼;(2)、如何遷移;(3)、什麼時候遷移。

1)遷移什麼:那一部分知識可以在多個領域或任務之間遷移,即多個領域或任務知識的共同部分,通過從源領域學習這部分共同的知識,提升目標領域任務的效果。

關注遷移什麼知識時,需要注意negative transfer問題:當源領域和目標領域之間沒有關係,卻要在之間強制遷移知識是不可能成功的。極端情況下,反倒會影響目標領域任務學習的效果,這種情況稱為負遷移(negative transfer),需要儘力避免。

2)找到了遷移什麼,接下來需要解決如何遷移:怎麼做知識遷移。什麼時候遷移:在什麼情況下、什麼時候,可以做知識的遷移。

2、轉導學習與推導學習區別

推導學習(inductive learning)與轉導學習(tranductive learning)的區別:

推到學習:需要先用一些樣本(training set)建立一個模型,再基於建立好的模型去去預測新的樣本(testing set)的類型。以分類為例,推到學習就是一個經典的貝葉斯決策,通過貝葉斯共識:P(Y|X)=P(X|Y)*P(Y)/ P(X),建立後驗概率分布P(Y|X),進而預測測試樣本類別。缺點就是必須先建立一個模型,很多時候建立效果好的模型並不容易,特別是當帶標記的訓練樣本少、無標記的測試樣本非常多時。那麼能否直接利用大量無標記的測試樣本來識別樣本類別呢?由此產生了轉到學習方法。

轉導學習:不需要建立後驗概率模型,直接從無標記的測試樣本X出發,構建P(X)的分布,對測試樣本分類。與推到學習相比,轉到學習也有它的缺點:因為是直接基於P(X)處理,轉導學習的測試樣本必須預先已知。

3、基於定義的遷移學習分類

基於遷移學習的定義中源領域和目標領域D和任務T的不同,遷移學習可以分成三類:推導遷移學習(inductive transfer learning),轉導遷移學習(tranductive transfer learning)和無監督遷移學習(unsupervised transfer learning)

1、推導遷移學習定義:給定源領域Ds和源領域學習任務Ts、目標領域Dt和目標領域任務Tt的情況,且Ts不等於Tt,情況下;推導遷移學習使用源領域Ds和Ts中的知識提升或優化目標領域Dt中目標預測函數ft(.)的學習效果。

可見,在推導遷移學習中,源任務(source task)與目標任務(target task)一定不同,目標領域Dt與源領域Ds可以相同,也可以不同。在這種情況下,目標領域需要一部分帶標記的數據用於建立目標領域的預測函數ft(.)。根據源領域中是否含有標記樣本,可以把推導遷移學習分為兩個類:

(1)、當源領域中有很多標記樣本時,推導遷移學習與多任務學習(multitask learning)類似。區別在於,通過從源領域遷移知識,推導遷移學習只注重提升目標領域的效果;但多任務學習注重同時提升源領域和目標領域的效果。

(2)當源領域沒有標記樣本時,推導遷移學習與自學習類似。

2、轉導遷移學習定義:給定源領域Ds和源領域學習任務Ts、目標領域Dt和目標領域任務Tt的情況,且Ts等於Tt、Ds不等於Dt,情況下;轉導遷移學習使用源領域Ds和Ts中的知識提升或優化目標領域Dt中目標預測函數ft(.)的學習效果。此外,模型訓練師,目標領域Dt中必須提供一些無標記的數據。

可見,在轉導遷移學習中,源任務Ts和目標任務Tt相同,但領域Ds與Dt不同。這種情況下,源領域有大量標記樣本,但目標領域沒有標記樣本。根據Ds和Dt的不同,可以把轉到學習分為兩個類:(1)、源領域和目標領域特徵空間不同,即Xs不等於Xt。(2)、特徵空間相同,但邊緣概率不同,即P(xs)不等於P(xt)。在(2)情況下,轉導遷移學習與領域適應性(domain adaptation)、協方差偏移(covariate shift)問題相同。

3、無監督遷移學習定義:給定源領域Ds和源領域學習任務Ts、目標領域Dt和目標領域任務Tt的情況,且Ts不等於Tt、標籤空間Yt和Ys不可觀測,情況下;轉導遷移學習使用源領域Ds和Ts中的知識提升或優化目標領域Dt中目標預測函數ft(.)的學習效果。

在無監督遷移學習中,目標任務與源任務不同但卻相關。此時,無監督遷移學習主要解決目標領域中的無監督學習問題,類似於傳統的聚類、降維和密度估計等機器學習問題。

由此可以得到遷移學習的分類,以及和其他機器學習方法之間的關係圖1所示。

圖1 基於定義的遷移學習分類

4、基於遷移的內容分類

獲取最新消息鏈接:獲取最新消息快速通道 - lqfarmer的博客 - 博客頻道 - CSDN.NET

根據遷移的內容,遷移學習可以分為四類:

基於實例的遷移學習(instance-based transfer learning):源領域(source domain)中的數據(data)的某一部分可以通過reweighting的方法重用,用於target domain的學習。

基於特徵表示的遷移學習(feature-representation transfer learning):通過source domain學習一個好的(good)的特徵表示,把知識通過特徵的形式進行編碼,並從suorce domain傳遞到target domain,提升target domain任務效果。

基於參數的遷移學習(parameter-transfer learning):target domain和source domian的任務之間共享相同的模型參數(model parameters)或者是服從相同的先驗分布(prior distribution)。

基於關係知識遷移學習(relational-knowledge transfer learning):相關領域之間的知識遷移,假設source domain和target domain中,數據(data)之間聯繫關係是相同的。

前三類遷移學習方式都要求數據(data)獨立同分布假設。同時,四類遷移學習方式都要求選擇的sourc doma與target domain相關,

表1給出了遷移內容的遷移學習分類:

表1 基於遷移內容的遷移學習分類

將基於定義遷移學習分類和基於遷移內容的遷移學習分類結合,得到遷移學習分類結果如表2所示:

表2 基於定義遷移學習分類和基於遷移內容的遷移學習分類結合

從表2可以發現,遷移學習大多數的研究工作都集中於推導遷移學習和轉導遷移學習上,無監督的遷移學習模式,在未來會吸引更多研究者關注。

4、遷移學習的應用

用於情感分類,圖像分類,命名實體識別,WiFi信號定位,自動化設計,中文到英文翻譯等問題。

參考論文:

[1] A survey on transfer Learning. IEEE TRANSACTIONS ON KNOWLEDGE AND DATA ENGINEERING, VOL. 22, NO. 10, OCTOBER 2010

[2] Learning to Learn. S. Thrun and L. Pratt, eds. Kluwer Academic Publishers, 1998.

[3] R. Caruana, 「Multitask Learning,」 Machine Learning, vol. 28, no. 1, pp. 41-75, 1997.

[4] R. Raina, A. Battle, H. Lee, B. Packer, and A.Y. Ng, 「Self-Taught Learning: Transfer Learning from Unlabeled Data,」 Proc. 24th Int』l Conf. Machine Learning, pp. 759-766, June 2007.

[5] H. Daume′ III and D. Marcu, 「Domain Adaptation for Statistical Classifiers,」 J. Artificial Intelligence Research, vol. 26, pp. 101-126, 2006.

[6] B. Zadrozny, 「Learning and Evaluating Classifiers under Sample Selection Bias,」 Proc. 21st Int』l Conf. Machine Learning, July 2004.

[7] H. Shimodaira, 「Improving Predictive Inference under Covariate Shift by Weighting the Log-Likelihood Function,」 J. Statistical Planning and Inference, vol. 90, pp. 227-244, 2000.

[8] W. Dai, Q. Yang, G. Xue, and Y. Yu, 「Self-Taught Clustering,」 Proc. 25th Int』l Conf. Machine Learning, pp. 200-207, July 2008.

[9] Z. Wang, Y. Song, and C. Zhang, 「Transferred Dimensionality Reduction,」 Proc. European Conf. Machine Learning and Knowledge Discovery in Databases (ECML/PKDD 』08), pp. 550-565, Sept. 2008.

往期精彩內容推薦

模型匯總-12 深度學習中的表示學習_Representation Learning純乾貨-6 Stanford University 2017年最新《Tensorflow與深度學習實戰》視頻課程分享模型匯總-10 Variational AutoEncoder_變分自動編碼器原理解析純乾貨-5 Deep Reinforcement Learning深度強化學習_論文大集合模型匯總-9 VAE基礎:LVM、MAP、EM、MCMC、Variational Inference(VI)


遷移學習和 (不同任務下的)fine tuning 的關係有如水果和西瓜的關係。

(同一任務下的fine tuning不算遷移學習)

遷移學習是指把原有任務中的「知識」,應用到現在的任務中,進行「再加工」,來解決現有問題。

這裡分「知識」和「再加工」兩個層面。

關於知識的定義,可以是原有模型最終輸出的特徵向量,也可以是原模型中部分或全部的權重係數,亦或是別的什麼,只要這個東西可以應用到現有系統;

關於再加工的方式,可以不加修改地直接使用知識,然後疊加或包裝到現有系統進行二次開發,也可以把知識當做一個先驗的東西,在此基礎上進行迭代更新。

或者是任何你喜歡的處理方式。

當然如何使用知識,如何再加工,這個要根據具體的任務來定。詳細可以看 @劉兆洋 回答中的例子。

而fine tuning講的是利用原有模型參數(「知識」)初始化現有模型,在此基礎上繼續train自己的model(「再加工」)。

如此看來,fine tuning 只是遷移學習中某種「知識」和某種「再加工」方式的一種特定組合,屬於它的一個小小子集。


一個深度學習模型可以表達為【特徵提取器+分類器】,而特徵提取器分【低級特徵提取器】以及此基礎之上的【高級特徵提取器】,此時深度學習模型就等價於【低級特徵提取器+高級特徵提取器+分類器】。

因此在公開的已有訓練好的模型情況下,針對一個新問題,我們完全可以進行利用,但無論特徵提取器是否適用該問題,分類器基本上都需要重新設置以適應當前的分類問題。

既然分類器已經換成自己的,那接著自然面臨著要進行部分參數的訓練,個人感覺根據具體訓練哪部分的參數可以解釋兩者的區別。

遷移學習一般意味著用別人的【特徵提取器】+自己的【分類器】,而且當前的數據量明顯不足,接著根據當前問題與所利用模型對應的數據集相似程度又可以決定是採用【別人的低級特徵提取器+自己的分類器】方式還是【別人的全部特徵提取器+自己的分類器】,綜合說來這個過程中所用到的特徵提取器都是固定了參數的,訓練過程中改變的是自己的分類器。

微調一般用在當前數據量也比較充分的情況下,這時同樣是別人的【特徵提取器】+自己的【分類器】,但既然數據量很充分,完全可以將部分別人的特徵提取器較上的層也進行重訓練。例如這樣:別人的【低級特徵提取器】+重訓練【高級特徵提取器】+自己的【分類器】。

最後,貼一個別人的使用場景總結:

數據集體量 | 與原模型對應數據集的內容相似程度較高 | 與原模型對應數據集的內容相似程度較低

--------------------------------------------------------------------------------------------------

小型數據集 | 使用低級、高級、自己分類器的遷移學習 | 使用低級特徵和帶自己分類器的遷移學習

--------------------------------------------------------------------------------------------------

大型數據集 | 微調小部分的重訓練特徵、自己的分類器 | 微調大部分的重訓練特徵、自己的分類器

在Keras+TF環境中,用遷移學習和微調打造專屬圖像識別系統

遷移學習(transfer learning)和微調(fine-tune)的幾點認識


Transfer learning 的目的是利用舊領域的知識更好地完成新領域的學習。整體上,可遷移的"知識"包括數據(樣本),特徵和模型參數。fine-tune可以看作是特徵表示或模型參數的遷移。如果說區別,他只能在目標領域存在標註樣本時使用; 對於無法使用目標領域標籤的歸納學習來說,根據原領域是否存在標註樣本,常用的方法是self-taught learning, importance sampling或co-clustering等


遷移學習是思想,微調是具體方法。比如,你的數據集很小,就可以去拿其他訓練好的模型的權值到你的網路中。


這篇文章應該可以幫到你:

遷移學習101: Transfer learning, pretrained learning, fine tuning 代碼與常式分析 源碼實踐


推薦閱讀:

訓練別人調好的caffe模型,這個錯誤,求指教?
caffe中的deconvolution和upsample的區別?
caffe的train val和test有什麼區別?
SparkNet和CaffeOnSpark有哪些重要的區別?
只有caffemodel文件可以反推prototxt嗎?

TAG:機器學習 | 深度學習DeepLearning | Caffe深度學習框架 |