遷移學習


遷移學習

參考:https://github.com/jindongwang/transferlearning

背景

  • 傳統的機器學習需要對每個領域都標定大量訓練數據,一些新出現的領域中的大量訓練數據非常難得到(數據缺失)。把已訓練好的模型參數遷移到新的模型來幫助新模型訓練,可以加速網絡的學習和優化。
  • 最終學習的效果靠的更多的還是模型的結構(表示能力)以及新數據集的豐富程度。

遷移學習(Transfer learning)——利用數據和領域之間存在的相似性關系,把之前學習到的知識,應用於新的未知領域。遷移學習的核心問題是,找到兩個領域的相似性。

在這里插入圖片描述

基本定義

  • 可以理解為某個時刻的某個特定領域,比如書本評論和電視劇評論可以看作是兩個不同的domain。包含兩部分:feature space(特征空間)與probability(分布概率)
    • 源與目標feature space相同:同構學習——常使用域適配Domain Adaptation方法
    • 源與目標feature space不同:異構學習
  • 任務 就是要做的事情,比如情感分析和實體識別就是兩個不同的task。包含label space(標記空間)與objective predictive function(目標預測函數)
  • :訓練模型的域/任務,通常數據量很大;
  • 目標:用前者的模型對自己的數據進行預測/分類/聚類等機器學習任務的域/任務,通常數據量小

關鍵點

  • What to transfer:用哪些知識在不同的領域或者任務中進行遷移學習
  • 如何進行遷移:如何設計出合適的算法來提取和遷移共有知識。
    • 基於實例:從源域中挑選對目標領域的訓練有用的實例,給予更大的權重(相當於擴充了與目標域相似樣本的比例),使得兩者的分布盡可能相同。instance reweighting(樣本重新調整權重)importance sampling(重要性采樣)是常用的兩項技術,參考了TrAdaBoost的思想。
    • 基於特征:找出源領域與目標領域之間共同的特征表示,將源領域和目標領域的數據從原始特征空間映射到新的特征空間中,在該空間中,源領域數據與的目標領域的數據分布相同。
    • 基於參數共享:找到源數據和目標數據的空間模型之間的共同參數或者先驗分布
  • 什么情況下適合遷移,實現避免負遷移,利用正遷移

深度神經網絡的可遷移性

《How transferable are features in deep neural networks?》 NIPS 2014

說明了遷移學習的可行性,並提供了遷移方式的導向

實驗方法

  • 在ImageNet的1000類上,作者把1000類分成兩份(A和B),基於Caffe對A和B兩類分別訓練一個 AlexNet 網絡
  • 遷移A網絡的某n層到B(AnB):將A網絡的前n層拿來並將它frozen,剩下的8-n層隨機初始化,然后對B進行分類。
  • 固定B網絡的某n層(BnB):把訓練好的B網絡的前n層拿來並將它frozen,剩下的8-n層隨機初始化,然后對B進行分類。

實驗結論

  • 圖像分類的網絡前面幾層都學習到的是通用的特征(general feature),隨着網絡的加深,后面的網絡更偏重於學習特定的特征(specific feature)。隨着可遷移層數的增加,使用了表示特定特征的網絡層,模型性能一般會下降。

  • Fine-tune(微調)對模型結果有着很好的促進作用,可以比較好地克服數據之間的差異性

三種遷移學習方式

  • Transfer Learning:凍結預訓練模型的全部卷積層,只訓練自己定制的全連接層。
  • Fine-tune:凍結預訓練模型的部分卷積層(通常是靠近輸入的多數卷積層),訓練剩下的卷積層(通常是靠近輸出的部分卷積層)和全連接層。
    • 目標域數據量少,但源域與目標域數據相似度非常高:只是修改最后幾層或最終的softmax圖層的輸出類別。
    • 目標域數據量數據量少,且數據相似度低:凍結預訓練模型的初始層(比如k層),並再次訓練剩余的(n-k)層。
  • Extract Feature Vector:先計算出預訓練模型的卷積層對所有訓練和測試數據的特征向量,然后拋開預訓練模型,只訓練自己定制的簡配版全連接網絡。

深度遷移示例

PRICAI 2014的 DaNN(Domain Adaptive Neural Network)

arXiv 2014的DDC(Deep Domain Confusion)

ICML 2015上的深度適配網絡(Deep Adaptation Network, DAN) 三個例子展示了如何進行遷移學習

CVPR 2018 的 Maximum Classifier Discrepancy for Unsupervised Domain Adaptation

對於一個深度網絡,隨着網絡層數的加深,網絡越來越依賴於特定任務;不同任務的網絡中,淺層的特征基本是通用的。

DaNN

  • DaNN的結構異常簡單,它僅由兩層神經元組成:特征層和分類器層。在特征層后加入了一項MMD適配層(adaptation layer),用來計算源域和目標域的距離,並將其加入網絡的損失中進行訓練。
  • MMD:把source和target用一個相同的映射映射在一個再生核希爾伯特空間(RKHS)中,然后求映射后兩部分數據的均值差異。
  • 整個網絡的優化目標也相應地由兩部分構成:在有label的源域數據上的分類誤差( [公式] ),以及對兩個領域數據的判別誤差( [公式] )
  • 問題:網絡太淺,表征能力有限

DDC

  • DDC針對預訓練的AlexNet(8層)網絡,在第7層(也就是feature層,softmax的上一層)加入了MMD距離來減小source和target之間的差異。
  • 問題
    • 只適配了一層網絡,但可遷移的網絡層不止一層;
    • 用了單一核的MMD,單一固定的核可能不是最優的核。

DAN

  • DAN用了多層適配和多核MMD(MK-MMD),效果比DDC更好。
  • 它的優化目標由兩部分組成:損失函數和分布距離。損失函數,用來度量預測值和真實值的差異;分布距離,用來表示不同域之間的差距

img

  • 多核MMD(Multi-kernel MMD,MK-MMD)
    • 無法確定使用哪一種核方法更好,故而提出用多個核去構造總的核,利用m個不同的核方法(函數)加權得到,其表征能力較單核更強。
    • 計算時,可以利用MK-MMD的無偏估計,降低計算的時間復雜度。

MCD_DA

領域自適應方法在適配過程中,並沒有考慮任務特異性的決策邊界,忽略了其實每個domain都有各自的特點。

引入了兩個獨立的分類器 [公式][公式] ,用二者的分歧(結果不一致)表示樣本的置信度不高,需要重新訓練。

img

首先根據源域數據訓練出兩個不同的分類器[公式][公式]。之后B階段,固定特征提取器G,更新兩個分類器,使之差異最大化,C階段固定分類器,優化特征提取器G,使兩個分類器的效果盡可能一樣。

img

域自適應

為使得針對源域的訓練網絡可以用於目標域,需要將源域與目標域的特征對齊等適配工作

GFK

源域數據(source)和目標域數據(target)類別一樣,但是特征服從不同的分布。此時需要通過一個特征映射,把source和target變換到一個公共空間上,在這個空間里,它們的距離是最小的(相似度最高)。

把source和target分別看成高維空間(Grassmann流形)中的兩個點,對兩者最短連線上每一點積分(進行大量的變換),將source變換到target。

  • 變換
    • 針對給定的兩個數據集[公式],對它們進行PCA,得到[公式]。PCA操作的目的就是把它們變換到相應的子空間。同時,把[公式][公式]合並成一個數據集[公式]並計算PCA得到[公式]。【此時有三個數據集了。如果兩個domain相似度高的話,那么它們距離[公式]的距離應該都會很小。】計算兩個domain和[公式]的空間的夾角,這兩個角度如果很小的話,表示兩個domain距離很小。在避免距離過大的基礎上,采用了一種貪心算法:盡可能地取最大的[公式],取得更多的子空間個數,保留更多數據集的信息。
    • 被SVD的矩陣是兩個矩陣的乘積([公式])。這時候,我們把對角矩陣的每個元素叫做這兩個矩陣之間的principal angle,表示它們的距離。
  • 度量domain之間相似度的Rank of Domain指標

學習遷移

《Learning To Transfer》

如何選擇遷移學習算法達到最好的效果

從已有的遷移學習方法和結果中學習遷移的經驗,然后再把這些學習到的經驗應用到新來的數據。類似於增量學習的遷移學習框架

學習遷移的經驗

遷移的經驗(transfer learning experience):四元組(Se,Te,ae,le),即在一對源域和目標域(Se,Te)遷移任務(從源域轉化到目標域)中,從大量算法中選擇了某種算法e后,任務效果有多少提升(le)。

基於共同特征空間以及流形集成法

  • 像TCA、JDA這種,把源域和目標域映射到一個共同的空間,然后在這個空間中學習一個變換矩陣的方法,就叫做基於共同特征空間;

  • 而像GFK這種,把數據映射到流形空間以后,跟走路一樣由源域和目標域中間若干個(無數個)點構成的子空間來綜合表示遷移過程的,就叫做流形集成法。

  • 兩種方法的本質目標:學習特征的變換矩陣W(遷移學習的知識,是唯一的),

學習目標

利用MK-MMD,學習所有遷移對最優的,使得平均誤差最小的矩陣W。除此之外,作者在學習目標里又加了另一個正則項:要保持源域中的一些信息。

應用到新領域

W是從舊的經驗中學到的,對新數據可能效果不好,新的W應該是能在新的數據上更新(類似於增量學習)表現效果最好的那個W。

負遷移

《A survey on transfer learning》 楊強

負遷移指的是,在源域上學習到的知識,對於目標域上的學習產生負面作用。產生原因:源域和目標域不相似(數據分布等);遷移學習方法不合理。

楊強教授團隊2015在KDD上發表了傳遞遷移學習文章《Transitive transfer learning》;2017年AAAI上《Distant domain transfer learning》,可以用人臉來識別飛機。這表明傳統遷移學習只有兩個領域足夠相似才可以完成,而當兩個領域不相似時,傳遞遷移學習卻可以利用處於這兩個領域之間的若干領域,將知識傳遞式的完成遷移

遷移的兩種層次

Eric Tzeng發表在ICCV 2015上的文章《Simultaneous Deep Transfer Across Domains and Tasks》

現有的深度遷移學習方法通常都只是考慮domain transfer,而沒有考慮到類別之間的信息。如何把domain和task transfer結合起來,是一個問題。

  • domain transfer:就是適配分布,特別地是指適配marginal distribution。如何做domain transfer:在傳統深度網路的loss上,再加另一個confusion loss,判斷classifier能否將兩個domain較好分開。

  • task transfer:就是利用class之間的相似度,其實特指的是conditional distribution。根據source中的類別分布關系(所有樣本得到的類別概率加權平均),來對target做相應的約束。

    img

部分遷移學習

Partial Transfer Learning with Selective Adversarial Networks

CVPR 2018接收的文章:《Importance Weighted Adversarial Nets for Partial Domain Adaptation》

源域與目標域的關系

  • 源域、目標域的類別空間分別是 [公式][公式]
  • 傳統遷移學習設定是 [公式]
  • partial transfer(部分遷移學習)中,變成了 [公式]。這更符合顯示的場景
  • 源域和目標域只共享了某一部分類別:ICCV-17的Open set問題

域對抗網路

  • 對抗網絡可以很好地學習doman-invariant的特征,從而在遷移學習中能發揮很大作用。

  • 對抗網絡包含兩個網絡:一個是判別器 [公式] (discriminator),它的作用是領域分類器,最大限度地區分source domain和target domain;一個是生成器 [公式] (generator),它的作用是特征提取器,提取domain-invariant features,來迷惑判別器。

  • Selective Adversarial Network:約束是樣本級別的,可以控制盡可能讓更相似的樣本參與遷移。類別級別的約束,可以很好地避免不在target domain中的那些類別不參與遷移。

  • 由於源域和目標域的類別不同,因此作者提出對它們分別采用不同的特征提取器F進行。在學習時,固定源域的特征提取器不變,只學習目標域的特征。利用領域分類器D篩選源-目標相似的樣本,利用D0進行域適配。對源域部分的重要性權重w進行了歸一化,以更加明確樣本的從屬關系。

    img

    [公式]

    img

  • 《Source-selection-free Transfer Learning》:類似於圖嵌入的方法,將源域和目標域的類,用第三方聯系,處理成PxP的 矩陣后降維成m維的向量表示,從而表現類別之間的距離關系。

  • 基於條件對抗網絡的領域自適應:將特征f和類別g一起做自適應,借鑒數學上的 多線性映射(Multilinear Map) 的概念,用張量乘法[公式]來表征特征和分類器彼此之間的關系。當數據維度太高時,直接從特征里隨機采樣一些向量做乘法。

在線遷移學習

目標域數據以流式一個一個來時,如何借助已有的源域數據,為目標域構建可依賴的分類器?

任務遷移

CVPR 2018:《Taskonomy: Disentangling Task Transfer Learning》

Domain相同,task不同,也就是 [公式] ,需要探索這些任務之間的可遷移性。

方法

  • 建立計算圖,圖中的節點表示任務,節點之間的邊就表示遷移性,邊的權重表示從一個任務遷移到另一個任務的可能表現。此計算圖定義任務之間的可遷移性。
  • 對不同任務進行建模,然后讓它們兩兩之間進行遷移並獲取遷移的表現,形成一個矩陣W。將此矩陣分解后,[公式][公式] 的遷移表現就是矩陣的第 [公式] 個特征向量。

異構網絡的遷移

ICML-19《Learning What and Where to Transfer》

固定+微調的模式是否是唯一的遷移方法?

如果2個網絡結構不同(比如),此時如何做遷移?

  • 學習源域網絡中哪些層(what)的知識可以遷移多少給目標域的哪些層(where)。

  • 學習目標:[公式],其中 [公式] 是一個線性變換,[公式] 表示目標域網絡中第 [公式] 層的特征表達,[公式] 表示預訓練好的源域網絡中的第 [公式] 層的特征表達,[公式] 是待學習參數集合。

  • 從網絡較淺的層進行遷移,其結果往往比從較高的層進行遷移具有更小的波動性。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM