1. 程式人生 > >遷移學習(Transformer),面試看這些就夠了!(附程式碼)

遷移學習(Transformer),面試看這些就夠了!(附程式碼)

1. 什麼是遷移學習

遷移學習(Transformer 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. 程式碼實現

Transformer Learning例子

資料集下載:

  • Inception-v3模型:點選下載
  • flower_photos資料集:點選下載

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

13. 參考文獻

[https://github.com/scutan90/DeepLearning-500-questions/tree/master/ch11_%E8%BF%81%E7%A7%BB%E5%AD%A6%E4%B9%A0](https://github.com/scutan90/DeepLearning-500-questions/tree/master/ch11_遷移學習)


作者:@mantchs

GitHub:https://github.com/NLP-LOVE/ML-NLP

歡迎大家加入討論!共同完善此專案!群號:【541954936】