###好好好#####遷移學習(Transfer)

遷移學習(Transfer),面試看這些就夠了!(附代碼)

1. 什麼是遷移學習

遷移學習(Transfer Learning)是一種機器學習方法,就是把爲任務 A 開發的模型作爲初始點,重新使用在爲任務 B 開發模型的過程中。遷移學習是通過從已學習的相關任務中轉移知識來改進學習的新任務,雖然大多數機器學習算法都是爲了解決單個任務而設計的,但是促進遷移學習的算法的開發是機器學習社區持續關注的話題。 遷移學習對人類來說很常見,例如,我們可能會發現學習識別蘋果可能有助於識別梨,或者學習彈奏電子琴可能有助於學習鋼琴。

找到目標問題的相似性,遷移學習任務就是從相似性出發,將舊領域(domain)學習過的模型應用在新領域上。

2. 爲什麼需要遷移學習?

  1. 大數據與少標註的矛盾:雖然有大量的數據,但往往都是沒有標註的,無法訓練機器學習模型。人工進行數據標定太耗時。
  2. 大數據與弱計算的矛盾:普通人無法擁有龐大的數據量與計算資源。因此需要藉助於模型的遷移。
  3. 普適化模型與個性化需求的矛盾:即使是在同一個任務上,一個模型也往往難以滿足每個人的個性化需求,比如特定的隱私設置。這就需要在不同人之間做模型的適配。
  4. 特定應用(如冷啓動)的需求

3. 遷移學習的基本問題有哪些?

基本問題主要有3個:

  • How to transfer: 如何進行遷移學習?(設計遷移方法)
  • What to transfer: 給定一個目標領域,如何找到相對應的源領域,然後進行遷移?(源領域選擇)
  • When to transfer: 什麼時候可以進行遷移,什麼時候不可以?(避免負遷移)

4. 遷移學習有哪些常用概念?

  • 基本定義

    • 域(Domain):數據特徵和特徵分佈組成,是學習的主體
      • 源域 (Source domain):已有知識的域
      • 目標域 (Target domain):要進行學習的域
    • 任務 (Task):由目標函數和學習結果組成,是學習的結果
  • 按特徵空間分類

    • 同構遷移學習(Homogeneous TL): 源域和目標域的特徵空間相同,D_s=D_t
    • 異構遷移學習(Heterogeneous TL):源域和目標域的特徵空間不同,D_s\ne D_t
  • 按遷移情景分類

    • 歸納式遷移學習(Inductive TL):源域和目標域的學習任務不同
    • 直推式遷移學習(Transductive TL):源域和目標域不同,學習任務相同
    • 無監督遷移學習(Unsupervised TL):源域和目標域均沒有標籤
  • 按遷移方法分類

    • 基於樣本的遷移 (Instance based TL):通過權重重用源域和目標域的樣例進行遷移

      基於樣本的遷移學習方法 (Instance based Transfer Learning) 根據一定的權重生成規則,對數據樣本進行重用,來進行遷移學習。下圖形象地表示了基於樣本遷移方法的思想源域中存在不同種類的動物,如狗、鳥、貓等,目標域只有狗這一種類別。在遷移時,爲了最大限度地和目標域相似,我們可以人爲地提高源域中屬於狗這個類別的樣本權重。

       

       

    • 基於特徵的遷移 (Feature based TL):將源域和目標域的特徵變換到相同空間

      基於特徵的遷移方法 (Feature based Transfer Learning) 是指將通過特徵變換的方式互相遷移,來減少源域和目標域之間的差距;或者將源域和目標域的數據特徵變換到統一特徵空間中,然後利用傳統的機器學習方法進行分類識別。根據特徵的同構和異構性,又可以分爲同構和異構遷移學習。下圖很形象地表示了兩種基於特 徵的遷移學習方法。

       

       

    • 基於模型的遷移 (Parameter based TL):利用源域和目標域的參數共享模型

      基於模型的遷移方法 (Parameter/Model based Transfer Learning) 是指從源域和目標域中找到他們之間共享的參數信息,以實現遷移的方法。這種遷移方式要求的假設條件是: 源域中的數據與目標域中的數據可以共享一些模型的參數。下圖形象地表示了基於模型的遷移學習方法的基本思想。

       

       

    • 基於關係的遷移 (Relation based TL):利用源域中的邏輯網絡關係進行遷移

      基於關係的遷移學習方法 (Relation Based Transfer Learning) 與上述三種方法具有截然不同的思路。這種方法比較關注源域和目標域的樣本之間的關係。下圖形象地表示了不 同領域之間相似的關係。

       

       

 

 

 

5. 遷移學習與傳統機器學習有什麼區別?

  遷移學習 傳統機器學習
數據分佈 訓練和測試數據不需要同分布 訓練和測試數據同分布
數據標籤 不需要足夠的數據標註 足夠的數據標註
建模 可以重用之前的模型 每個任務分別建模

6. 遷移學習的核心及度量準則?

遷移學習的總體思路可以概括爲:開發算法來最大限度地利用有標註的領域的知識,來輔助目標領域的知識獲取和學習。

遷移學習的核心是:找到源領域和目標領域之間的相似性,並加以合理利用。這種相似性非常普遍。比如,不同人的身體構造是相似的;自行車和摩托車的騎行方式是相似的;國際象棋和中國象棋是相似的;羽毛球和網球的打球方式是相似的。這種相似性也可以理解爲不變量。以不變應萬變,才能立於不敗之地。

**有了這種相似性後,下一步工作就是, 如何度量和利用這種相似性。**度量工作的目標有兩點:一是很好地度量兩個領域的相似性,不僅定性地告訴我們它們是否相似,更定量地給出相似程度。二是以度量爲準則,通過我們所要採用的學習手段,增大兩個領域之間的相似性,從而完成遷移學習。

一句話總結: 相似性是核心,度量準則是重要手段。

7. 遷移學習與其他概念的區別?

  1. 遷移學習與多任務學習關係:
    • 多任務學習:多個相關任務一起協同學習;
    • 遷移學習:強調信息複用,從一個領域(domain)遷移到另一個領域。
  2. 遷移學習與領域自適應:領域自適應:使兩個特徵分佈不一致的domain一致。
  3. 遷移學習與協方差漂移:協方差漂移:數據的條件概率分佈發生變化。

8. 什麼情況下可以使用遷移學習?

遷移學習最有用的場合是,如果你嘗試優化任務B的性能,通常這個任務數據相對較少。 例如,在放射科中你知道很難收集很多射線掃描圖來搭建一個性能良好的放射科診斷系統,所以在這種情況下,你可能會找一個相關但不同的任務,如圖像識別,其中你可能用 1 百萬張圖片訓練過了,並從中學到很多低層次特徵,所以那也許能幫助網絡在任務在放射科任務上做得更好,儘管任務沒有這麼多數據。

假如兩個領域之間的區別特別的大,不可以直接採用遷移學習,因爲在這種情況下效果不是很好。在這種情況下,推薦以上的方法,在兩個相似度很低的domain之間一步步遷移過去(踩着石頭過河)。

9. 什麼是finetune?

度網絡的finetune也許是最簡單的深度網絡遷移方法。Finetune,也叫微調、fine-tuning, 是深度學習中的一個重要概念。簡而言之,finetune就是利用別人己經訓練好的網絡,針對自己的任務再進行調整。從這個意思上看,我們不難理解finetune是遷移學習的一部分。

爲什麼需要已經訓練好的網絡?

在實際的應用中,我們通常不會針對一個新任務,就去從頭開始訓練一個神經網絡。這樣的操作顯然是非常耗時的。尤其是,我們的訓練數據不可能像ImageNet那麼大,可以訓練出泛化能力足夠強的深度神經網絡。即使有如此之多的訓練數據,我們從頭開始訓練,其代價也是不可承受的。

爲什麼需要 finetune?

因爲別人訓練好的模型,可能並不是完全適用於我們自己的任務。可能別人的訓練數據和我們的數據之間不服從同一個分佈;可能別人的網絡能做比我們的任務更多的事情;可能別人的網絡比較複雜,我們的任務比較簡單。

10. 什麼是深度網絡自適應?

深度網絡的 finetune 可以幫助我們節省訓練時間,提高學習精度。但是 finetune 有它的先天不足:它無法處理訓練數據和測試數據分佈不同的情況。而這一現象在實際應用中比比皆是。因爲 finetune 的基本假設也是訓練數據和測試數據服從相同的數據分佈。這在遷移學習中也是不成立的。因此,我們需要更進一步,針對深度網絡開發出更好的方法使之更好地完成遷移學習任務。

以我們之前介紹過的數據分佈自適應方法爲參考,許多深度學習方法都開發出了自適應層(AdaptationLayer)來完成源域和目標域數據的自適應。自適應能夠使得源域和目標域的數據分佈更加接近,從而使得網絡的效果更好。

11. GAN在遷移學習中的應用

生成對抗網絡 GAN(Generative Adversarial Nets) 受到自博弈論中的二人零和博弈 (two-player game) 思想的啓發而提出。它一共包括兩個部分:

  • 一部分爲生成網絡(Generative Network),此部分負責生成儘可能地以假亂真的樣本,這部分被成爲生成器(Generator);
  • 另一部分爲判別網絡(Discriminative Network), 此部分負責判斷樣本是真實的,還是由生成器生成的,這部分被成爲判別器(Discriminator) 生成器和判別器的互相博弈,就完成了對抗訓練。

GAN 的目標很明確:生成訓練樣本。這似乎與遷移學習的大目標有些許出入。然而,由於在遷移學習中,天然地存在一個源領域,一個目標領域,因此,我們可以免去生成樣本的過程,而直接將其中一個領域的數據 (通常是目標域) 當作是生成的樣本。此時,生成器的職能發生變化,不再生成新樣本,而是扮演了特徵提取的功能:不斷學習領域數據的特徵使得判別器無法對兩個領域進行分辨。這樣,原來的生成器也可以稱爲特徵提取器 (Feature Extractor)。

12. 代碼實現

Transfer Learning例子

數據集下載:

機器學習通俗易懂系列文章

 

3.png

 

 

13. 參考文獻

[github.com/scutan90/De…](github.com/scutan90/De…)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章