首頁>技術>

人類具有跨任務傳輸知識的固有能力。我們在學習一項任務的過程中獲得的知識,可以用來解決相關的任務。任務相關程度越高,我們就越容易遷移或交叉利用知識。到目前為止所討論的機器學習和深度學習演算法,通常都是被設計用於單獨運作的。這些演算法被訓練來解決特定的任務。一旦特徵空間分佈發生變化,就必須從頭開始重新構建模型。遷移學習是一種克服孤立的學習正規化,也是一種利用從一項任務中獲得的知識來解決相關任務的思想。本章將介紹遷移學習的概念,並重點介紹其在深度學習方面的內容。本章將涵蓋以下主題:

遷移學習簡介;遷移學習策略;透過深度學習進行遷移學習;深度遷移學習的型別;遷移學習的挑戰。4.1 遷移學習簡介

學習演算法通常被設計用來單獨處理任務或問題。根據用例和已有資料的需求,一種演算法被應用於為給定的特定任務訓練一種模型。傳統的機器學習根據特定的領域、資料和任務,對每個模型進行單獨的訓練,如圖4.1所示。

遷移學習將學習過程向前推進了一步,並且更符合人類跨任務利用知識的思想。因此遷移學習是一種將一種模型或知識重用於其他相關任務的方法。遷移學習有時也被認為是現有機器演算法的擴充套件。在遷移學習領域以及理解知識如何跨任務遷移的課題中,有大量的研究和工作正在進行。1995年舉辦的神經資訊處理系統(Neural Information Processing System,NIPS)研討會上釋出的Learning to Learn: Knowledge Consolidation and Transfer in Inductive Systems為該領域的研究提供了最初的動力。

圖4.1

 1995年NIPS會議的所有研討會列表可以從網上獲取。

從那時起,為學習而學習、知識鞏固和歸納遷移等術語就開始與遷移學習交換使用。一直以來,不同的研究人員和學術文獻從不同的上下文為遷移學習提供了不同的定義。Goodfellow等人在他們的著作Deep Learning中提及了在泛化上下文中的遷移學習。其定義為“遷移學習是這樣一種情境:在一種條件下學習到的知識在另一種條件中被用於改進泛人。”

讓我們透過一個例子來理解前面的定義。假設我們的任務是在餐館的限定區域內識別影象中的物件,我們將此任務在其定義的範圍內標記為T1。給定此任務的資料集,我們將訓練一個模型並對其進行調優,使其能夠很好地(泛化)處理來自相同領域(餐館)中未見過資料點。傳統的監督機器學習演算法在我們沒有足夠的訓練例項來完成給定領域的任務時就會出現問題。假設我們現在必須從來自公園或咖啡館的圖片中識別物體(即任務T2)。理想情況下,我們應該能夠使用為任務T1訓練的模型,但在現實中,我們將面臨效能下降和模型泛化較差的問題。發生這種情況的原因有很多,我們可以將其統稱為模型對訓練資料和領域的偏差。因此遷移學習使我們能夠利用以前學到的知識,並將其應用於新的相關任務中。如果我們有更多工T1的資料,我們可以利用這些資料進行學習,並將其推廣用於任務T2(任務T2的資料明顯更少)。在影象分類中,特定的底層特徵,如邊緣、形狀和光照,可以在任務之間共享,從而實現任務之間的知識遷移。

圖4.2所示為遷移學習將已有知識重用在新的相關任務中的原理。

圖4.2

在學習一個目標任務時,已有任務會被當作一項額外輸入,如圖4.2所示。

遷移學習的優點

我們可以利用源模型中的知識來加強目標任務中的學習。除了提供重用已建模型的能力外,遷移學習還可以透過以下幾種方式協助完成學習目標任務。

提升基線效能。當我們用源模型中的知識增強孤立學習者(也稱為無知學習者)的知識時,基線效能可能會由於這種知識轉移而得到提升。模型開發時間。與從零開始學習的目標模型相比,利用來自源模型的知識有助於全面學習目標任務。這反過來將促成開發或學習模型所需的總時長的改進。提升最終效能。利用遷移學習可以獲得更高的最終效能。

我們將在接下來的章節中詳細討論一個或多個收益是有可能的。圖4.3所示的內容展示了更好的基線效能(更高的起點)、效率提升(更高的斜率)和更好的最終效能(更高的漸近線)。

圖4.3

遷移學習已經在歸納學習者的上下文中被應用和研究,如神經網路、貝葉斯網路等。強化學習是另一個正在探索遷移學習可能性的領域,因此遷移學習的概念並不侷限於深度學習。

在本章和後面幾章的內容中,我們將把遷移學習的應用範圍限制在深度學習的上下文中。

4.2 遷移學習策略

首先看一下遷移學習的正式定義,然後利用它來理解遷移學習不同的策略。在論文A Survey on Transfer Learning中,Pan和Yang使用領域、任務和邊際機率來描述一個用於理解遷移學習的框架。該框架的定義為“一個領域D可以定義為一個包含兩個元素的元組,一個元素為特徵空間x,另一個元素為邊際機率P(X),其中X表示一個樣本資料點。”

,其中xi 表示一個特定向量,而且

。因此有公式4.1:

(公式4.1)

另一方面,一項任務T可以定義為一個包含兩個元素的元組,其中一個元素是特徵空間γ,另一個元素是目標函式f。目標函式可以從機率的角度表示為

。因此有公式4.2:

(公式4.2)使用該框架,我們可以將遷移學習定義為一個過程,目標是利用Ds領域中Ts源任務的知識,提升目標領域DT中的目標函式fT(或者目標任務TT)。這導致了以下4種場景。

特徵空間。源和目標領域的特徵空間彼此不相同,例如。如果我們的任務與文件分類相關,則該場景會引用不同語言的源和目標任務。邊際機率。源和目標領域的邊際機率互不相同,例如。這個場景也被稱為領域適應標籤空間。源和目標領域的標籤空間在該場景下互不相同,例如。這通常也意味著存在第四種場景——條件機率不同。條件機率。在此意味著,這樣的條件機率在源和目標領域中互不相同。

正如我們目前所看到的,遷移學習指的是在目標任務中利用來自源學習者的現有知識的能力。在遷移學習過程中,必須回答以下3個重要問題。

遷移什麼。這是整個過程的第一步,也是最重要的一步。為了提高目標任務的效能,我們應該嘗試尋找關於哪些部分的知識可以從源轉移到目標。當嘗試回答該問題時,我們將試圖確定哪些知識是源中特定的,以及哪些部分是源和目標共有的。何時遷移。在某些場景下,為了遷移而遷移知識會比沒有提升更為糟糕(此種情況被稱為負遷移)。我們的目標是利用遷移學習來提升目標任務的效能或結果,而不是降低它們。我們需要注意什麼時候遷移,什麼時候不遷移。如何遷移。一旦“遷移什麼”和“何時遷移”這兩個問題得到回答,就可以著手確定跨領域或任務實際遷移知識的方法。該步驟涉及對現有演算法和不同技術的修改,相關內容將在本章後面的部分中介紹。另外,4.3節將列出具體的用例,以便更好地理解如何遷移。

分組技術能夠幫助我們理解總體特徵,併為使用特徵提供更好的框架。遷移學習方法可以根據其所涉及的傳統機器學習演算法的型別進行分類,如下所示。

歸納遷移。在此場景中,源領域和目標領域相同,但是源任務和目標任務不同,該演算法嘗試使用源領域的歸納偏差來對目標任務進行改進。根據源領域是否包含標記資料,可以進一步將其分為兩個子類別,分別類似於多工學習和自學學習。無監督遷移。該設定類似於歸納遷移,同時側重於目標領域中的無監督任務。源領域和目標領域相似,但是任務不同。在該場景中,標記資料在兩個領域中都不可用。直推遷移。在該場景中,源任務和目標任務之間有相似之處,但是對應的領域不同。源領域有很多標記資料,而目標領域沒有。根據特徵空間不同或邊際機率不同的設定,該分類可以進一步劃分出子類別。

以上3個遷移類別概述了遷移學習可以被應用和研究的不同設定。為了回答關於在這些類別分別遷移了什麼東西的問題,可以採用以下方法。

例項遷移。將知識從源領域重用到目標任務通常是一個理想化的場景。在大多數情況下,源領域資料不能直接被重用。然而,源領域中的某些例項可以與目標資料一起被重用來改善結果。在歸納遷移的場景中,Dai和他的合著者對AdaBoost演算法進行了修改,這有助於利用來自源領域的訓練例項來改進目標任務。特徵表示遷移。這種方法的目的是透過識別可以從源領域到目標領域使用的良好特徵表示來最小化領域差異和降低錯誤率。根據標記資料的可用性,監督或無監督演算法可用於基於特徵表示的遷移。引數遷移。該方法的執行原理是基於有相關任務的模型共享一些引數或超引數先驗分佈的假設。與源任務和目標任務同時進行學習的多工學習不同,對於遷移學習,我們可以對目標領域的損失增加額外的權重來提高整體效能。相關知識遷移。與前3種方法不同,相關知識遷移會嘗試處理非獨立同分布(Indepently Identically Distribution,IID)資料,例如不獨立且分佈相同的資料。換句話說,每個資料點都和其他資料點有關聯。例如,社交網路資料會利用相關知識轉移技術。

本節我們學習了在不同的上下文和設定下以非常泛化的方式執行遷移學習的不同策略。現在讓我們利用這些知識來學習如何在深度學習中應用遷移學習。

4.3 遷移學習和深度學習

深度學習模型是歸納學習的代表。歸納學習演算法的目標是從一組訓練例項中推匯出一個對映。例如在分類場景中,模型學習輸入特徵和類別標籤之間的對映。為了使模型能對從未見過的資料進行泛化,歸納學習演算法使用了一組與訓練資料分佈相關的假設。這些假設集被稱為歸納偏置

歸納偏置或假設可以透過多個因素進行表徵,例如其被限制的假設空間和透過假設空間的搜尋過程。因此這些偏置會影響模型對給定任務和領域的學習方式和內容。

歸納遷移技術利用源任務的歸納偏置來輔助目標任務。該過程可以透過不同的方式來實現,例如透過限制模型空間、縮小假設空間,或者藉助源任務的知識來調整搜尋過程本身。該過程如圖4.4所示。

圖4.4

除了歸納遷移,歸納學習演算法還利用貝葉斯和層次遷移技術來協助改進目標任務的學習和提升效能。

4.3.1 遷移學習方法論

近些年來,深度學習取得了長足的進步和驚人的成績。但是此類深度學習系統所需的訓練時間和資料量要比傳統的機器學習系統高出幾個量級。

在計算機視覺和自然語言處理等領域,多個具有先進效能的深度學習網路(有些效能與人類相當甚至更好)已經被開發和測試。在大多數情況下,團隊或成員會共享這些網路的細節並提供給其他人使用(其中一些流行的網路已經在第3章中介紹過了)。這些預訓練好的網路或模型構成了深度學習中遷移學習的基礎。

1.特徵提取

正如第3章中所討論的,深度學習系統是層級架構,不同層會學習不同的特徵,這些層最終連線到一個最終層(在分類的情況下,通常是一個全連線層)來獲得最終輸出。這種層級架構允許我們利用一個刪除最終層的預先訓練好的網路(如Inception V3或VGG)來作為其他任務的特徵提取器。圖4.5所示為基於特徵提取的遷移學習過程。

例如,如果我們使用一個去除最終分類層的AlexNet網路,那麼它將幫助我們將來自一個新的領域任務的影象基於其隱藏狀態轉換為4096維向量,以使我們能夠利用源領域任務的知識從一個新領域的任務中提取特徵。這是利用深度神經網路進行遷移學習的最廣泛使用的方法之一。

圖4.5

2.微調

這是一種更為複雜的技巧,在這種情況下不僅會對(用於分類或迴歸的)最終層進行替換,而且還會選擇性地重訓練前面的一些層。深度神經網路是具有多種超引數的高度可配置體系架構。正如前面所討論的,初始層被認為是用來捕獲一般特徵,而後面的層則更多地關注特定任務。利用這種洞察能力,我們可以在重訓練時凍結(固定權重)某些層,或者根據我們的需要對其他層進行微調。在這種情況下,我們可以利用網路總體架構方面的知識,並將其狀態作為重訓練步驟的起點。這將反過來幫助我們用更少的訓練時間來獲得更好的效能。

4.3.2 預訓練模型

遷移學習的一個基本要求是存在能夠很好地執行源任務的模型。幸運的是,深度學習世界相信分享。許多深度學習團隊各自公開分享了最先進的深度學習架構,這些模型可以跨越不同的領域,例如計算機視覺和自然語言處理。在第3章中,我們研究了一些著名和文件優秀的架構,這些網路背後的團隊不僅分享了結果,還分享了他們的預訓練模型。預訓練模型通常以數百萬個引數或權值的形式被共享,這些引數或權值是在模型被訓練到穩定狀態時獲得的。每個人都可以透過不同的方式使用預訓練模型。著名的深度學習Python庫keras提供了一個介面來下載各種可用的預訓練網路,例如XCeptionVGG16InceptionV3。同樣,預訓練模型也可以透過TensorFlow和其他深度學習庫來獲取。伯克利的Model Zoo提供了經過多年開發的更廣泛的預訓練模型集合。

4.3.3 應用

深度學習是一類非常成功的應用遷移學習的演算法。以下是一些例子。

文字資料遷移學習。文字資料對機器學習和深度學習提出了各種挑戰。文字資料經常會使用不同的技巧進行轉換或向量化。詞向量(如Word2vec和fastText)使用不同的訓練資料集準備完成,它透過遷移源任務中的知識被運用到不同的任務中,如情緒分析和文件分類。計算機視覺遷移學習。利用不同的CNN架構,深度學習已經非常成功地應用於各種計算機視覺任務,例如物件識別。在論文How transferable are features in deep neural networks中,Yosinski和其他合著者展示了關於較低層作為傳統計算機視覺特徵提取器(例如邊緣檢測器),而最終層則趨向於任務特定特徵的發現。這些發現有助於將現有的先進模型(如VGGAlexNetInception)運用於目標任務,例如樣式遷移和麵部檢測,但這些任務的訓練模型和源模型並不相同。語音或音訊遷移學習。與文字和計算機視覺領域類似,深度學習已經成功地應用於基於音訊資料的任務。例如,為英語開發的自動語音識別(Automatic Speech Pecognition,ASR)模型已經成功地用於提高其他語言(如德語)的語音識別效能。除此之外,自動說話人識別是另一個對於說明遷移學習大有幫助的例子。4.4 深度遷移學習型別

正如本章開頭所提到的,關於遷移學習的文獻經歷了很多迭代,與遷移學習相關的術語已經被寬鬆地使用,並且經常可以互換使用。因此有時很難區分遷移學習、領域適應和多工學習。請放心,這些方法都相互關聯並且都可以用於嘗試解決類似的問題。為了在本書中保持一致性,當嘗試使用源任務-領域的知識解決目標任務時,我們將遷移學習的概念作為一個通用概念。

4.4.1 領域適應

領域適應通常指那些源和目標領域之間的邊際機率不同的場景,例如

。源領域和目標領域的資料分佈存在固有的偏移或漂移,需要進行調整才能遷移學習。例如,標記為正向或負向的電影評論語料庫與產品評論情緒語料庫不同。根據電影評論情緒訓練的分類器如果用於對產品評論進行分類,會看到不同的分佈。因此在這些場景下,領域適應技巧被用於遷移學習。

4.4.2 領域混淆

我們學習了不同的遷移學習策略,甚至討論了遷移什麼、何時遷移以及如何遷移3個將知識從源轉移到目標的問題。特別地,我們討論了特徵表示遷移非常有效。值得重申的是深度學習網路中的不同層會捕獲不同的特性集合,我們可以利用這一事實來學習領域不變特徵,並提高它們跨領域的可移植性。我們不允許模型學習任何表示,而是推動這兩個領域的表示儘可能相似。

該技巧可以透過將某些預處理步驟直接應用於表示本身來實現。其中一些已經由Baochen Sun、Jiashi Feng和Kate Saenko在他們的論文Return of Frustratingly Easy Domain Adaptation中討論過。Ganin等人在他們的論文Domain-Adversarial Training of Neural Networks中也提及朝相似的表示進行推進的方法。這種技巧背後的基本思想是透過混淆領域本身向源模型新增另一個目標來鼓勵相似性,因此被稱為領域混淆。

4.4.3 多工學習

多工學習是遷移學習世界中一種風格略微不同的方法。在多工學習的情況下,多個任務同時被學習,而不區分源任務和目標任務。在多工學習中,學習者一次接收多個任務的資訊;而在遷移學習中,學習者最初對目標任務一無所知。

多工學習如圖4.6所示。

圖4.6

4.4.4 一次性學習

深度學習系統本質上對資料要求非常嚴苛,因此它們需要許多訓練例項來學習權重。這是深度神經網路的侷限性之一,儘管人類的學習方式並非如此。例如一旦孩子看到蘋果的樣子後,他們就能很容易地辨別出不同種類的蘋果(用一個或幾個訓練例子);而機器學習和深度學習演算法不是這樣。一次性學習是遷移學習的一種變體,它試圖基於一個或幾個訓練例項來推斷出所需的輸出。這在不可能為每個可能的類都產出標記資料(如果是一個分類任務)的現實場景中,以及在經常新增新類的場景中都非常有用。

在具有里程碑意義的論文One Shot Learning of Object Categories中,作者們提出了一次性學習的概念,明確該子領域的研究,並提出了一種用於物件分類表示學習的貝葉斯框架變體。這種方法在後續得到了改進,並使用深度學習系統加以應用。

4.4.5 零樣本學習

零樣本學習是遷移學習的另一種極端變體,它依賴於無標記的例項來學習任務。這可能聽起來難以置信,尤其是考慮到大多數監督學習演算法的本質就是對標記資料進行學習的事實。零資料學習或零樣本學習方法在訓練階段對本身進行巧妙的調整,來提取額外資訊以理解從未見過的資料。在Deep Learning一書中,Goodfellow和其他合著者將零樣本學習描述為這樣一種情境:共有3個變數被學習,例如傳統輸入變數x、傳統輸出變數y,以及用於描述任務T的額外隨機變數。因此模型T被訓練來學習條件機率分佈

。零樣本學習在一些場景(例如機器翻譯)中很有用,此時的目標語言中甚至不會包含標籤。

4.5 遷移學習的挑戰

遷移學習潛力巨大,同時也是現有學習演算法普遍需要的增強。然而一些與遷移學習相關的問題仍然需要更多的研究和探索。除了回答“遷移什麼”“何時遷移”和“如何轉移”等問題之外,負向轉移和遷移邊界也帶來了主要的挑戰。

4.5.1 負向遷移

到目前為止,我們討論的案例都在將源任務的知識轉移到目標任務後提升了效能。但在某些情況下遷移學習也可能會導致效能下降。負向遷移是指從源任務到目標任務的知識遷移沒有帶來任何改進,反而導致目標任務的整體效能下降的場景。出現負向遷移可能有多種原因,例如源任務與目標任務沒有足夠的關聯,或者遷移方法不能很好地利用源任務和目標任務之間的關係。避免負向遷移非常重要,需要仔細調研。Rosenstien和其他合著者在他們的論文中經驗性地展示了當源任務和目標任務不相似時,強制遷移將降低目標任務的效能。Bakker和其他合著者提出的Bayesian方法,以及其他用於辨別關聯性基於聚類解決方案的技巧正在研究如何避免負向遷移。

4.5.2 遷移邊界

在遷移學習中,對遷移進行量化也會對遷移的量和可行性產生重要影響。為了對遷移的量進行衡量,Hassan Mahmud和其他合著者利用柯爾莫戈羅夫複雜度(Kolmogorov complex)證明了一定的理論界限,以分析任務之間遷移學習和衡量任務之間的關聯性。Eaton和其他合著者提出了一種新的基於圖的方法來測量知識遷移。這些技術的詳細細節超出了本書的範圍。讀者可以透過本節中列出的參考資料來對這些主題進行更多的探索。

4.6 總結

在本書的第1~3章中介紹了機器學習和深度學習的背景和基礎之後,本章開始了構建遷移學習基礎的第二階段。在深入到實際用例之前,我們必須將對遷移學習的理解形式化,並學習不同的技巧和研究,以及與之相關的挑戰。在本章中,我們介紹了遷移學習概念背後的基本原理,遷移學習近些年來的發展,以及為什麼遷移學習是優先需求。

我們首先在學習演算法的廣泛背景之下理解了遷移學習及其優勢。接著我們討論了理解、應用和分類遷移學習方法的各種策略,以及深度學習背景下的遷移學習。我們討論了與深度遷移學習相關的不同的遷移學習方法,如特徵提取和微調;還介紹了著名的預訓練模型和使用深度學習系統進行遷移學習的流行應用。近些年來,深度學習已被證明是非常成功的,因此許多在該領域中使用遷移學習進行的研究也越來越多。

我們簡要討論了深度遷移學習的不同變體,如領域適應、領域混淆、多工學習、一次性學習和零樣本學習。在本章的最後,我們提出了與遷移學習相關的挑戰,如負向遷移和遷移邊界。在本章中,我們列出了許多與遷移學習相關的各種參考資料,並鼓勵讀者探索它們以獲得更多資訊。本章內容是當前遷移學習領域的一個指標和概述。在第5章中,我們將進行一些與遷移學習相關的實踐練習。

本文摘自《Python遷移學習》

本書有兩個主要目的:第一個是我們會將重點集中在詳細介紹深度學習和遷移學習,用易於理解的概念和例子將兩者進行對比;第二個是利用TensorFlow、Keras和Python生態系統的真實世界案例和問題進行研究,並提供實際的示例。

本書首先介紹機器學習和深度學習的核心概念;接著介紹一些重要的深度學習架構,例如深度神經網路(Deep Neural Network,DNN)、卷積神經網路(Convolutional Neural Network,CNN)、遞迴神經網路(Recurrent Neural Network,RNN)、長短時記憶(Long Short Term Memory,LSTM)和膠囊網路;然後介紹遷移學習的概念和當前最新的預訓練網路,如VGG、Inception和ResNet,我們還將學習如何利用這些系統來提升深度學習模型的效能;最後介紹不同領域(如計算機視覺音訊分析以及自然語言處理)的多個真實世界的案例研究和問題。

讀完本書,讀者將可以在自己的系統中實現深度學習和遷移學習。

4
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • MicroPython低階藍芽BLE介面(一)