讀懂深度遷移學習,看這文就夠了 | 贈書

百度前首席科學家、斯坦福大學副教授吳恩達(Andrew Ng)曾經說過:遷移學習將是繼監督學習之後的下一個促使機器學習成功商業化的驅動力。

本文選自《深度學習500問:AI工程師面試寶典》,將重點介紹目前最熱門的深度遷移學習方法的基本思路。

隨着遷移學習方法的大行其道,越來越多的研究人員開始使用深度神經網絡進行遷移學習。與傳統的非深度遷移學習方法相比,深度遷移學習直接提升了在不同任務上的學習效果,並且由於深度遷移學習直接對原始數據進行學習,所以它與非深度遷移學習方法相比有兩個優勢。

(1)能夠自動化地提取更具表現力的特徵。

(2)滿足了實際應用中的端到端(End-to-End)需求。

近年來,以生成對抗網絡(Generative Adversarial Nets,GAN)爲代表的對抗學習也吸引了很多研究者的目光,基於GAN的各種變體網絡不斷湧現。對抗學習網絡與傳統的深度神經網絡相比,極大地提升了學習效果。因此,基於對抗網絡的遷移學習也是一個熱門的研究點。

上圖爲深度遷移學習方法與非深度遷移學習方法的結果對比,展示了近幾年的一些代表性方法在相同數據集上的表現。從圖中的結果可以看出,與傳統的非深度遷移學習方法(TCA、GFK等)相比,深度遷移學習方法(BA、DDC、DAN)在精度上具有顯著的優勢。

下面我們來重點介紹深度遷移學習方法的基本思路。

首先來回答一個最基本的問題:爲什麼深度網絡是可遷移的?然後,介紹最簡單的深度網絡遷移形式——微調。接着分別介紹使用深度網絡和深度對抗網絡進行遷移學習的基本思路和核心方法。

深度網絡的可遷移性

隨着AlexNet在2012年的ImageNet大賽上獲得冠軍,深度學習開始在機器學習的研究和應用領域大放異彩。儘管取得了很好的結果,但是神經網絡本身解釋性不好。神經網絡具有良好的層次結構,很自然地就有人開始思考能否通過這些層次結構來很好地解釋網絡。於是,就有了我們熟知的例子:假設一個網絡要識別一隻貓,那麼一開始它只能檢測到一些邊邊角角的東西,和貓根本沒有關係;然後可能會檢測到一些線條和圓形;慢慢地,可以檢測到貓所在的區域;接着是貓腿、貓臉等。

下圖是深度神經網絡進行特徵提取分類的簡單示例。

概括來說就是:前面幾層學到的是通用特徵(General Feature);隨着網絡層次的加深,後面的網絡更偏重於與學習任務相關的特定特徵(Specific Feature)。這非常好理解,我們也很容易接受。那麼問題來了,如何得知哪些層能夠學到通用特徵,哪些層能夠學到特定特徵呢?更進一步來說,如果應用於遷移學習,如何決定該遷移哪些層、固定哪些層呢?

這個問題對於理解神經網絡和深度遷移學習都有着非常重要的意義。來自康奈爾大學的Jason Yosinski等人率先進行了深度神經網絡可遷移性的研究,該論文是一篇實驗性質的文章(通篇沒有一個公式)[Yosinski et al.,2014]。其目的就是要探究上面提到的幾個關鍵性問題。因此,文章的全部貢獻都來自實驗及其結果。

對於ImageNet的1000個類別,作者將其分成兩份(A和B),每份500個類別。然後,分別對A和B基於Caffe訓練AlexNet網絡。AlexNet網絡共有8層,除第8層爲與類別相關的網絡無法進行遷移外,作者在1到7這7層上逐層進行微調實驗,探索網絡的可遷移性。

爲了更好地說明微調的結果,作者提出了兩個有趣的概念:AnB和BnB。這裏簡單介紹一下AnB和BnB。(所有實驗都是針對數據B來說的。)

AnB:將A網絡的前n層拿來並將其固定,剩下的層隨機初始化,然後對B進行分類。

BnB:將B網絡的前n層拿來並將其固定,剩下的隨機初始化,然後對B進行分類。

深度網絡遷移的實驗結果1如下。

這個圖說明了什麼呢?我們先看BnB和BnB+(即BnB加上微調)。對於BnB而言,原訓練好的B模型的前3層可以直接拿來使用,而不會對模型精度有什麼損失。到了第4層和第5層,精度略有下降,不過還可以接受。然而到了第6層、第7層,精度居然奇蹟般地回升了,這是爲什麼?

原因如下:對於一開始精度下降的第4層、第5層來說,到了這兩層,特徵變得越來越具體,所以下降了。而對於第6層、第7層來說,由於整個網絡就8層,我們固定了第6層、第7層,那這個網絡還能學什麼呢?所以很自然地,精度和原來的B模型幾乎一致。

對BnB+來說,結果基本上保持不變。說明微調對模型精度有着很好的促進作用。

我們重點關注AnB和AnB+。對於AnB來說,直接將A網絡的前3層遷移到B,貌似不會有什麼影響,再次說明,網絡的前3層學到的幾乎都是通用特徵。往後,到了第4層、第5層時,精度開始下降,原因是這兩層的特徵不通用了。然而,到了第6層、第7層,精度出現了小小的提升後又下降,這又是爲什麼?作者在這裏提出兩點:互相適應(Co-Adaptation)和特徵表示(Feature Representation)。也就是說,在第4層、第5層,主要是由於A和B兩個數據集的差異比較大,精度纔會下降的;到了第6層、第7層,由於網絡幾乎不再迭代,學習能力太差,此時特徵學不到,所以精度下降得更厲害。

對於AnB+,加入了微調以後,AnB+的表現對於所有的n幾乎都非常好,甚至比baseB(最初的B)還要好一些。這說明,微調對深度遷移有着非常好的促進作用。

綜合分析上述結果就得到了下圖的深度網絡遷移實驗結果2。

作者進一步設想,是不是在分A、B數據時,裏面存在一些比較相似的類使結果變好了?例如,A裏有貓,B裏有獅子,所以結果會好。爲了排除這些影響,作者又重新劃分數據集,這次讓A和B幾乎沒有相似的類別。在這個條件下再做AnB,與原來精度進行比較,得到如下深度網絡遷移實驗結果3。

上圖說明,隨着可遷移層數的增加,模型性能會下降。但是,前3層仍然是可以遷移的。同時,與隨機初始化所有權重相比,遷移學習獲得的精度更高。

結論:

雖然論文[Yosinski et al.,2014]並沒有提出創新的方法,但通過實驗得到了以下幾個結論,這對深度學習和深度遷移學習的研究都有着非常好的指導意義。

(1)神經網絡的前3層基本都是通用特徵,進行遷移的效果比較好。

(2)在深度遷移網絡中加入微調,效果提升會比較大,可能會比原網絡效果還好。

(3)微調可以比較好地克服數據之間的差異性。

微調

深度網絡的微調(Fine-Tune)也許是最簡單的深度網絡遷移方法。簡而言之,微調是利用別人已經訓練好的網絡,針對自己的任務再進行調整。從這個意義上看,不難理解微調是遷移學習的一部分。對於微調,有以下幾個常見問題。

(1)爲什麼需要已經訓練好的網絡。

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

那怎麼辦呢?遷移學習告訴我們,利用之前已經訓練好的模型,將它很好地遷移到自己的任務上即可。

(2)爲什麼需要微調。

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

舉例子來說,假如我們想訓練一個貓狗圖像二分類的神經網絡,那麼在CIFAR-100上訓練好的神經網絡就很有參考價值。但是CIFAR-100有100個類別,我們只需要2個類別。此時,就需要針對我們自己的任務,固定原始網絡的相關層,修改網絡的輸出層,以使結果更符合我們的需要,這樣,會極大地加快網絡訓練速度,對提高我們任務上的精度表現也有很大的促進作用。

(3)微調的優勢。

微調有以下幾個優勢。

● 針對新任務,不需要從頭開始訓練網絡,可以節省時間。

● 預訓練好的模型通常是在大數據集上進行訓練的,這無形中擴充了我們的訓練數據,使模型更魯棒、泛化能力更好。

● 微調實現簡單,我們只需關注自己的任務即可。

深度網絡自適應

基本思路

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

以前面介紹過的數據分佈自適應方法爲參考,許多深度學習方法都設計了自適應層(Adaptation Layer)來完成源域和目標域數據的自適應。自適應能夠使源域和目標域的數據分佈更加接近,從而使網絡的精度、穩定性更好。

從上述分析可以得出,深度網絡的自適應主要完成兩部分工作。

(1)決定哪些層可以自適應,這決定了網絡的學習程度。

(2)決定採用什麼樣的自適應方法(度量準則),這決定了網絡的泛化能力。

早期的研究者在2014年環太平洋人工智能大會(Pacific Rim International Conference on Artificial Intelligence,PRICAI)上提出了名爲DANN(Domain Adaptive Neural Networks)的神經網絡[Ghifary et al.,2014]。DANN的結構異常簡單,它只由兩層神經元——特徵層神經元和分類器層神經元組成。作者的創新之處在於,在特徵層後加入MMD適配層,用來計算源域和目標域的距離,並將其加入網絡的損失中進行訓練。但是,由於網絡太淺,表徵能力有限,故無法很有效地解決領域自適應問題。因此,後續的研究者大多都基於其思想進行改進,如將淺層網絡改爲更深層的AlexNet、ResNet、VGG等,將MMD換爲多核MMD等。

下面將介紹幾種常見的深度網絡自適應方法。

▊ 基本方法

(1)DDC方法。

加州大學伯克利分校的Tzeng等人首先提出了DDC(Deep Domain Confusion)方法來解決深度網絡的自適應問題[Tzeng et al.,2014]。DDC方法遵循了上面討論過的基本思路,採用了在ImageNet數據集上訓練好的AlexNet網絡進行自適應學習[Krizhevsky et al.,2012]。

下圖是DDC方法示意圖。

DDC方法固定了AlexNet的前7層,在第8層(分類器前一層)上加入了自適應的度量。自適應度量方法採用了被廣泛使用的MMD準則。

爲什麼選擇倒數第2層?DDC方法的作者在文章中提到,他們經過多次實驗,在不同的層進行了嘗試,最終發現在分類器前一層加入自適應可以達到最好的效果。這與我們的認知也是相符合的。通常來說,分類器前一層即特徵,在特徵上加入自適應,也正是遷移學習要完成的工作。

(2)DAN方法。

清華大學的龍明盛等人於2015年發表在ICML(Internation Conference on Machine Learning)上的DAN(Deep Adaptation Networks)方法對DDC方法進行了幾個方面的擴展[Long et al.,2015a]。首先,有別於DDC方法只加入一個自適應層,DAN方法同時加入了3個自適應層(分類器前3層)。其次,DAN方法採用表徵能力更好的多核MMD(MK-MMD)度量來代替DDC方法中的單核MMD[Gretton et al.,2012]。最後,DAN方法將多核MMD的參數學習融入深度網絡的訓練中,並且未額外增加網絡的訓練時間。DAN方法在多個任務上都取得了比DDC方法更好的分類效果。

爲什麼適配3層?原來的DDC方法只適配了1層,現在DAN方法基於AlexNet網絡,適配最後3層(第6、7、8層)。因爲Jason在文獻[Yosinski et al.,2014]中已經提出,網絡的遷移能力從這3層開始就會有特定的任務傾向,所以要着重適配這3層。至於別的網絡(如GoogLeNet、VGG等)是不是適配這3層就需要通過自己的實驗來驗證,要注意的是DAN方法只關注AlexNet。DAN方法示意圖如下。

(3)同時遷移領域和任務的方法。

DDC方法的作者Tzeng在2015年擴展了DDC方法,提出了領域和任務同時遷移的方法[Tzeng et al.,2015]。他提出網絡要進行兩部分遷移。

一是域遷移(Domain Transfer),尤其指適配邊緣分佈,但沒有考慮類別信息。域遷移就是在傳統深度網絡的損失函數上,再加一個混淆損失(Confusion Loss)函數,兩個損失函數一起計算。

二是任務遷移(Task Transfer),就是利用類別之間的相似度進行不同任務間的學習。舉個類別之間相似度的例子:杯子與瓶子更相似,而它們與鍵盤不相似。

現有的深度遷移學習方法通常都只考慮域遷移,而沒有考慮類別之間的信息。如何把域遷移和任務遷移結合起來,是一個需要研究的問題。

Tzeng針對目標任務的部分類別有少量標籤,剩下的類別無標籤的情況,提出名爲域遷移和任務遷移的聯合CNN體系結構(Joint CNN Architecture For Domain and Task Transfer)。其最大的創新之處在於,提出現有的方法都忽略了類別之間的聯繫,並提出在現有損失函數的基礎上還要再加一個軟標籤損失(Soft Label Loss)函數。意思就是在源域和目標域進行適配時,也要根據源域的類別分佈情況來調整目標域。相應地,他提出的方法就是把這兩個損失函數結合到一個新的CNN網絡上,這個CNN是基於AlexNet修改而來的。總的損失函數由3部分組成,第1部分是普通訓練的損失函數,第2部分是域自適應的損失函數,第3部分是目標域上的軟標籤損失函數。

下圖爲同時遷移領域和任務的方法示意圖。

該網絡由AlexNet修改而來,前面幾層無變化,區別是在fc7層後面加入了一個域分類器,在該層實現域自適應,在fc8層後計算網絡的損失函數和軟標籤損失函數。

那麼什麼是軟標籤損失?

軟標籤損失就是不僅要適配源域和目標域的邊緣分佈,還要把類別信息考慮進去。具體做法如下,在網絡對源域進行訓練時,把源域中的每一個樣本處於每一個類的概率都記下來,然後,對於所有樣本,屬於每一個類的概率就可以通過先求和再求平均數得到。下爲軟標籤損失示意圖。這樣做的目的是,根據源域中的類別分佈關係,來對目標域做相應的約束。

(4)JAN方法。

DAN方法的作者龍明盛2017年在ICML上提出了JAN(Joint Adaptation Networks)方法[Long et al.,2017],在深度網絡中同時進行聯合分佈的自適應和對抗學習。JAN方法將只對數據進行自適應的方式推廣到了對類別的自適應上,提出了JMMD度量(Joint MMD)。下爲JAN方法示意圖。

(5)AdaBN方法。

與上述研究選擇在已有網絡層中增加適配層不同,北京大學的H Li和圖森科技的N Wang等人提出了AdaBN(Adaptive Batch Normalization)方法[Li et al.,2018],其通過在歸一化層加入統計特徵的適配來完成遷移。下圖是AdaBN方法示意圖。

AdaBN方法與其他方法相比,實現起來相當簡單,不帶有任何額外的參數,在許多公開數據集上都取得了很好的效果。

深度對抗網絡遷移

生成對抗網絡GAN(Generative Adversarial Nets)是目前人工智能領域的研究熱點之一[Goodfellow et al.,2014],它被深度學習領軍人物Yann LeCun評爲近年來最令人欣喜的成就。由此發展而來的對抗網絡,也成爲提升網絡性能的利器。本節介紹深度對抗網絡用於解決遷移學習的基本思路及其代表性研究成果。

基本思路

GAN受博弈論中的二人零和博弈(Two-Player Game)思想的啓發而提出。它包括兩部分:生成網絡(Generative Network),負責生成儘可能逼真的樣本,被稱爲生成器(Generator);判別網絡(Discriminative Network),負責判斷樣本是否真實,被稱爲判別器(Discriminator)。生成器和判別器互相博弈,就完成了對抗訓練。

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

通常用   來表示特徵提取器,用   來表示判別器。

正是基於這樣的領域對抗思想,深度對抗網絡可以被很好地應用到遷移學習問題中。

與深度網絡自適應遷移方法類似,深度對抗網絡的損失函數也由兩部分構成:網絡訓練損失函數   和領域判別損失函數   ,如下所示。

核心方法

(1)DANN方法。

Yaroslav Ganin等人首先在遷移學習中加入了對抗機制,並將他們的網絡稱爲DANN(Domain-Adversarial Neural Networks)方法[Ganin et al.,2016]。在此研究中,網絡的學習目標是,生成的特徵儘可能幫助區分兩個領域的特徵,同時使判別器無法對兩個領域的差異進行判別。該方法的領域對抗損失函數表示爲:

其中

(2)DSN方法。

來自Google Brain的Bousmalis等人提出DSN(Domain Separation Networks)方法對DANN進行了擴展[Bousmalis et al.,2016]。DSN方法認爲,源域和目標域都由兩部分構成:公共部分和私有部分。公共部分可以學習公共的特徵,私有部分用來保持各個領域獨立的特性。DSN方法進一步對損失函數進行了定義。

其具體含義如下。

   爲網絡常規訓練的損失函數。

   爲重構損失函數,確保私有部分仍然對學習目標有作用。

   公共部分與私有部分的差異損失函數。

   源域和目標域公共部分的相似性損失函數。

如下是DSN方法示意圖。

(3)SAN方法。

清華大學龍明盛等人2018年發表在CVPR(Computer Vision and Pattern Recognition)上的文章提出了部分遷移學習(Partial Transfer Learning)。作者認爲,在大數據時代,通常我們會有大量的源域數據。這些源域數據與目標域數據相比,在類別上通常更爲豐富。例如,基於ImageNet訓練的圖像分類器,必然是針對幾千個類別進行的分類。在實際應用時,目標域往往只是其中的一部分類別。這樣就會帶來一個問題:那些只存在於源域中的類別在遷移時,會對遷移結果產生負遷移影響。這種情況是非常普遍的,因此,就要求相應的遷移學習方法能夠對目標域選擇相似的源域樣本(類別),同時也要避免負遷移。但是目標域通常是沒有標籤的,因此我們並不知道它和源域中哪個類別更相似。作者稱這個問題爲部分遷移學習(Partial Transfer Learning)。Partial即只遷移源域中和目標域相關的那部分樣本。

下圖展示了部分遷移學習示意圖。

作者提出了名爲選擇性對抗網絡(Selective Adversarial Networks,SAN)的方法來處理選擇性遷移問題[Cao et al.,2017]。在該問題中,傳統的對抗網絡不再適用。所以需要對其進行一些修改,使它能夠適用於選擇性遷移問題。

#歡迎來留言#

你在工作中有使用深度遷移學習技術嗎?

你對深度學習有什麼看法?

我們會挑選出10名優質留言

AI科技大本營攜手【電子工業出版社-博文視點】送出

《深度學習500問:AI工程師面試寶典》一本

截至1月26日14:00點

▊《深度學習500問:AI工程師面試寶典》

談繼勇 主編,郭子釗、李劍、佃松宜 副主編

  • Github 標星4.2萬的火爆之作

  • 歷時3年,融合產學研的精心製作

  • 集百家所長,凝聚了衆多一線科研人員及工程師的經驗

  • 讓你不再因爲缺乏基礎知識而對深度學習望而卻步

  • 細化問題,助你面試查漏補缺,重點突破

  • 兼具廣度與深度,深度學習知識框架的全景圖呈現

本書凝聚了衆多一線科研人員及工程師的經驗,旨在培養讀者發現問題、解決問題、擴展問題的能力。本書內容取材於編者在日常學習過程中總結的知識點及各大公司常見的筆試、面試題。是一本兼具廣度與深度的著作。(點擊閱讀原文可購買本書哦~)

更多精彩推薦
☞猖狂!微軟、思科源碼慘遭黑客 100 萬美元打包出售
☞『帶你學AI』一文帶你搞懂OCR識別算法CRNN:解析+源碼
☞龍泉寺賢超法師:用 AI 爲古籍經書識別、斷句、翻譯
☞微信十週年,騰訊曬成績單了!
點分享點收藏點點贊點在看
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章