為什么數(shù)據(jù)科學(xué)家需要掌握「遷移學(xué)習(xí)」?
這篇文章中,你將了解到什么是遷移學(xué)習(xí)?它的應(yīng)用有哪些?以及為什么它應(yīng)該是數(shù)據(jù)科學(xué)家所需擁有的關(guān)鍵技能?
實(shí)際上,遷移學(xué)習(xí)并不是機(jī)器學(xué)習(xí)模型,也不是機(jī)器學(xué)習(xí)領(lǐng)域內(nèi)的相關(guān)技術(shù),它是機(jī)器學(xué)習(xí)中的一種“設(shè)計(jì)方法論”。而另一種類型的“設(shè)計(jì)方法論”就是像主動學(xué)習(xí)(active learning)這樣的。
在后續(xù)的文章中,我將解釋該如何將主動學(xué)習(xí)與遷移學(xué)習(xí)相結(jié)合使用,從而較佳地利用現(xiàn)有(和新的)數(shù)據(jù)。從廣義上說,機(jī)器學(xué)習(xí)應(yīng)用往往在利用外部信息以提高性能或泛化能力時(shí)會使用遷移學(xué)習(xí)。
遷移學(xué)習(xí)的定義
遷移學(xué)習(xí)的總體思路是使用從任務(wù)中所學(xué)到的知識,在那些只有少量已標(biāo)注數(shù)據(jù)可用的環(huán)境中,獲得大量可用的已標(biāo)注數(shù)據(jù)。通常來說,創(chuàng)建已標(biāo)注數(shù)據(jù)的成本很大,所以充分利用現(xiàn)有數(shù)據(jù)集是關(guān)鍵所在。
在傳統(tǒng)的機(jī)器學(xué)習(xí)模型中,主要目標(biāo)將從訓(xùn)練數(shù)據(jù)中學(xué)習(xí)到的模式泛化到不可見數(shù)據(jù)中。通過遷移學(xué)習(xí),你可以嘗試從已經(jīng)學(xué)習(xí)到不同任務(wù)的模式開始,啟動這個(gè)泛化過程。從本質(zhì)上說,我們應(yīng)該從一個(gè)已經(jīng)學(xué)習(xí)能夠解決不同任務(wù)的模式開始,而不是從頭開始(通常是隨機(jī)初始化的)進(jìn)行該學(xué)習(xí)過程。

相較于必須從原始像素值著手,能夠從圖像中區(qū)分線條和形狀(左)使得更容易確定某物是否是“汽車”。遷移學(xué)習(xí)使得你能夠利用來自其他計(jì)算機(jī)視覺模型的學(xué)習(xí)模式。

在NLP中,存在多種不同的方法用以表示單詞(像左側(cè)所表示的詞嵌入,右側(cè)表示所表示的)。通過遷移學(xué)習(xí),機(jī)器學(xué)習(xí)模型可以充分利用不同單詞之間存在的關(guān)系。
在多種領(lǐng)域中,知識和模式的遷移都是有可能的。而本文將通過查看幾個(gè)不同領(lǐng)域的若干個(gè)示例對遷移學(xué)習(xí)加以說明。最終目標(biāo)是激勵(lì)數(shù)據(jù)科學(xué)家在他們的機(jī)器學(xué)習(xí)項(xiàng)目中使用遷移學(xué)習(xí),并讓他們意識到其優(yōu)缺點(diǎn)。
我之所以認(rèn)為對遷移學(xué)習(xí)的理解是數(shù)據(jù)科學(xué)家應(yīng)該具備的關(guān)鍵技能,原因有三,如下所示:
遷移學(xué)習(xí)在任何一種學(xué)習(xí)中都是至關(guān)重要的??梢赃@樣說,對于人生中每一個(gè)任務(wù)或是難題,我們沒有被授以解決方法以獲得該事件的成功。每個(gè)人都會遇到從未遇到過的情況,我們?nèi)匀辉O(shè)法以特殊的方式解決問題。從大量的經(jīng)驗(yàn)中學(xué)習(xí),并將“知識”導(dǎo)入到新的環(huán)境中,這正是遷移學(xué)習(xí)的全部意義所在。從這個(gè)角度來看,遷移學(xué)習(xí)和泛化在概念層面上是非常相似的,兩者的主要區(qū)別在于遷移學(xué)習(xí)經(jīng)常被用于“跨任務(wù)遷移知識,而不是在一個(gè)特定的任務(wù)中進(jìn)行泛化”。因此,遷移學(xué)習(xí)與所有機(jī)器學(xué)習(xí)模型所必需的泛化概念,兩者之間有著內(nèi)在的聯(lián)系。
遷移學(xué)習(xí)是確保在存含有大量小數(shù)據(jù)環(huán)境下實(shí)現(xiàn)深度學(xué)習(xí)技術(shù)突破的關(guān)鍵所在。在研究中,深度學(xué)習(xí)幾乎是無處不在,但是在很多實(shí)際生活場景,我們通常沒有數(shù)百萬個(gè)標(biāo)記數(shù)據(jù)點(diǎn)用以對模型進(jìn)行訓(xùn)練。深度學(xué)習(xí)技術(shù)需要大量的數(shù)據(jù)以調(diào)整神經(jīng)網(wǎng)絡(luò)中的數(shù)百萬個(gè)參數(shù)。特別是在監(jiān)督學(xué)習(xí)的情況下,這意味著你需要大量(非常昂貴的)已標(biāo)記數(shù)據(jù)。標(biāo)記圖像聽起來微不足道,但是對于自然語言處理(NLP)中的樣本來說,需要專家知識才能創(chuàng)建大型標(biāo)記數(shù)據(jù)集。例如,賓州樹庫(Penn treebank)是一個(gè)詞性標(biāo)記語料庫,已經(jīng)有7年的歷史了,需要許多具備專業(yè)知識的語言學(xué)家密切合作對其加以改進(jìn)和完善。遷移學(xué)習(xí)是減少數(shù)據(jù)集所需大小的一種方法,以使神經(jīng)網(wǎng)絡(luò)成為可行的選擇。其他可行的選擇正朝著具有更多概率性啟發(fā)的模型發(fā)展,這些模型通常更適合于處理有限的數(shù)據(jù)集。
遷移學(xué)習(xí)有著顯著的優(yōu)點(diǎn),同時(shí)缺點(diǎn)也是顯而易見的。了解這些缺點(diǎn)對于成功的機(jī)器學(xué)習(xí)應(yīng)用來說具有至關(guān)重要的作用。知識遷移只有在“適當(dāng)”的情況下才有可能實(shí)現(xiàn)。在這個(gè)上下文下,對“適當(dāng)”進(jìn)行確切的定義并不是一件容易的事情,并且通常需要進(jìn)行實(shí)驗(yàn)。你不應(yīng)該相信一個(gè)開著玩具車孩子能夠駕馭一輛法拉利。對遷移學(xué)習(xí)來說道理是一樣的:雖然很難對其進(jìn)行量化,但遷移學(xué)習(xí)是有上限的,它并不是一個(gè)適合于解決所有問題的“萬金油”。
遷移學(xué)習(xí)的通用概念
遷移學(xué)習(xí)的要求
顧名思義,遷移學(xué)習(xí)需要具備將知識從一個(gè)領(lǐng)域遷移到另一個(gè)領(lǐng)域的能力。我們可以在一個(gè)較高層次上對遷移學(xué)習(xí)進(jìn)行解釋。一個(gè)例子就是,NLP中的體系結(jié)構(gòu)可以在序列預(yù)測問題中得以重用,因?yàn)楹芏郚LP問題本質(zhì)上可以歸結(jié)為序列預(yù)測問題。當(dāng)然,遷移學(xué)習(xí)也可以在較低層次上進(jìn)行解釋,實(shí)際上,你可以在不同的模型中重用來自一個(gè)模型的參數(shù)(skip-gram、連續(xù)詞袋(continuous bag-of-words)等)。遷移學(xué)習(xí)的要求一方面是特定的問題,另一方面是特定的模型。接下來的兩節(jié)將分別討論遷移學(xué)習(xí)所使用的高層次和低層次方法。盡管你會發(fā)現(xiàn)在不同的文獻(xiàn)中這些概念的名稱各有不同,但是遷移學(xué)習(xí)的總體概念是仍然存在的。
多任務(wù)學(xué)習(xí)
在多任務(wù)學(xué)習(xí)中,你可以同時(shí)在不同的任務(wù)上對一個(gè)模型進(jìn)行訓(xùn)練。我們通常使用深度學(xué)習(xí)模型,因?yàn)樗鼈兛梢造`活地進(jìn)行調(diào)整。

網(wǎng)絡(luò)體系結(jié)構(gòu)是以這樣一種方式進(jìn)行調(diào)整的,即在不同的任務(wù)使用第一層,隨后對于不同的任務(wù),使用特定于不同任務(wù)的層和輸出??偟乃悸肥?,通過在不同任務(wù)上對網(wǎng)絡(luò)進(jìn)行訓(xùn)練,網(wǎng)絡(luò)將會得到更好的泛化,因?yàn)槟P蛻?yīng)該能夠在需要類似“知識”或“處理”的任務(wù)上表現(xiàn)良好。
自然語言處理中的示例是一個(gè)模型,其最終目標(biāo)是執(zhí)行實(shí)體識別。除了在實(shí)體識別任務(wù)中對模型進(jìn)行純粹的訓(xùn)練,你還可以用它進(jìn)行語音分類,下一個(gè)單詞預(yù)測……因此,模型將從這些任務(wù)和不同數(shù)據(jù)集的結(jié)構(gòu)中獲益。
Featuriser
深度學(xué)習(xí)模型的一大優(yōu)點(diǎn)是特征提取是“自動化”的?;跇?biāo)記數(shù)據(jù)和反向傳播,網(wǎng)絡(luò)能夠確定用于任務(wù)的有用特征。例如,為了對圖像進(jìn)行分類,網(wǎng)絡(luò)能夠“計(jì)算出”輸入的哪一部分是重要的。這意味著特征定義的手動工作被抽象出來了。深度學(xué)習(xí)網(wǎng)絡(luò)可以在其他問題中得以重復(fù)使用,因?yàn)樗崛〉奶卣黝愋屯ǔτ趯ζ渌麊栴}來說也是有用的。本質(zhì)上,在一個(gè)featuriser中,你可以使用網(wǎng)絡(luò)的第一層來確定有用的特征,但是你不使用網(wǎng)絡(luò)的輸出,因?yàn)樗翘囟ㄓ谌蝿?wù)的。

鑒于深度學(xué)習(xí)系統(tǒng)擅長特征提取,我們該如何重用現(xiàn)有網(wǎng)絡(luò)以執(zhí)行其他任務(wù)的特征提取呢?我們可以將數(shù)據(jù)樣本饋送到網(wǎng)絡(luò)中,并將網(wǎng)絡(luò)中的一個(gè)中間層作為輸出。這個(gè)中間層可以被闡述為一個(gè)固定的長度,原始數(shù)據(jù)的處理表示。典型地,featuriser的概念也往往用于計(jì)算機(jī)視覺任務(wù)中。然后將圖像饋送到預(yù)訓(xùn)練網(wǎng)絡(luò)中(例如,VGG或AlexNet),并且在新的數(shù)據(jù)表示上使用不同的機(jī)器學(xué)習(xí)方法。提取中間層作為圖像的表示顯著地減少了原始數(shù)據(jù)大小,使得它們更適合于傳統(tǒng)的機(jī)器學(xué)習(xí)技術(shù)。例如,相較于具有一個(gè)類似128x128 = 16384維度的圖像表征來說,具有一個(gè)較小的圖像表征,如128維度的邏輯回歸或支持向量機(jī)能夠運(yùn)行得更好。