0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一文詳解遷移學(xué)習(xí)

jf_pmFSk4VX ? 來(lái)源: GiantPandaCV ? 2023-08-11 16:56 ? 次閱讀

1 論文摘要

遷移學(xué)習(xí)需要將預(yù)訓(xùn)練好的模型適應(yīng)新的下游任務(wù)。然而,作者觀察到,當(dāng)前的遷移學(xué)習(xí)方法通常無(wú)法關(guān)注與任務(wù)相關(guān)的特征。在這項(xiàng)工作中,作者探索了重新聚焦模型注意力以進(jìn)行遷移學(xué)習(xí)。作者提出了自上而下的注意力引導(dǎo)(TOAST),這是一種新的遷移學(xué)習(xí)算法,它可以凍結(jié)預(yù)先訓(xùn)練的骨干模型,選擇與任務(wù)相關(guān)的特征輸出,并將這些特征反饋到模型中,以引導(dǎo)注意力關(guān)注特定任務(wù)的特征。僅通過(guò)重新聚焦注意力,TOAST在多個(gè)遷移學(xué)習(xí)基準(zhǔn)測(cè)試中取得了最先進(jìn)的結(jié)果,而只需調(diào)整很少的參數(shù)。與完全微調(diào)、LoRA和提示調(diào)優(yōu)相比,TOAST在各種細(xì)分類圖像上(例如FGVC上平均準(zhǔn)確率81.1% → 86.2%)性能都大大提高。在語(yǔ)言生成方面,TOAST還優(yōu)于完全微調(diào)的Alpaca和Vicuna模型 。

2 模型簡(jiǎn)介

首先使用ImageNet預(yù)訓(xùn)練的ViT,并使用不同的遷移學(xué)習(xí)算法將其轉(zhuǎn)移到下游鳥(niǎo)類分類中。在這里,將這些模型的注意力圖可視化。每個(gè)注意力圖在ViT的最后一層中的不同頭部之間進(jìn)行平均。(a) TOAST方法能夠?qū)㈩A(yù)先訓(xùn)練的骨干的注意力重新集中在特定任務(wù)的特征上,從而大幅提高下游性能。(b) 先前的遷移學(xué)習(xí)方法,如微調(diào)、LoRA和VPT,未能專注于與任務(wù)相關(guān)的對(duì)象,從而實(shí)現(xiàn)了次優(yōu)性能。

在這項(xiàng)工作中,作者表明重新聚焦注意力是遷移學(xué)習(xí)的關(guān)鍵。作者提出了自上而下的注意力引導(dǎo)(TOAST),這是一種新的遷移學(xué)習(xí)方法,它通過(guò)將注意力重新聚焦到任務(wù)相關(guān)特征來(lái)學(xué)習(xí)新任務(wù)。這是通過(guò)自上而下的注意力模塊實(shí)現(xiàn)的,該模塊允許模型以適應(yīng)任務(wù)的方式調(diào)整其注意力。自上而下的注意力模塊獲取來(lái)自骨干網(wǎng)絡(luò)的輸出特征,選擇與任務(wù)相關(guān)的特征,然后將這些特征反饋到骨干網(wǎng)絡(luò)中的每個(gè)自注意力層。這些自上而下的信號(hào)將增強(qiáng)每層中的任務(wù)相關(guān)特征,并且?guī)в性鰪?qiáng)特征的前饋骨干網(wǎng)絡(luò)再次運(yùn)行,實(shí)現(xiàn)對(duì)任務(wù)相關(guān)信號(hào)的更強(qiáng)注意力。在遷移到不同的下游任務(wù)時(shí),TOAST簡(jiǎn)單地凍結(jié)預(yù)訓(xùn)練骨干網(wǎng)絡(luò),并調(diào)整自上而下的注意力模塊以將注意力引導(dǎo)到特定任務(wù)的信號(hào)。

值得注意的是,僅通過(guò)重新聚焦注意力,TOAST在各種遷移學(xué)習(xí)基準(zhǔn)測(cè)試中取得了最先進(jìn)的結(jié)果。與完全微調(diào)、LoRA和VPT相比,TOAST顯著提高了FGVC細(xì)分類上的性能(例如,在平均準(zhǔn)確率上比完全微調(diào)提高了5%)。TOAST還優(yōu)于完全微調(diào)的Alpaca和Vicuna模型,用于指令遵循語(yǔ)言生成。這些觀察加強(qiáng)了作者的觀點(diǎn),即重新聚焦注意力是遷移學(xué)習(xí)的關(guān)鍵,并為該領(lǐng)域的未來(lái)探索提供了啟發(fā)。

3 算法設(shè)計(jì)流程

論文提出了自上而下注意力引導(dǎo)(TOAST),這是一種新的遷移學(xué)習(xí)方法,它給預(yù)訓(xùn)練模型添加一個(gè)自上而下的注意力模塊,并只在遷移到下游任務(wù)時(shí)調(diào)整自上而下的注意力。論文首先簡(jiǎn)要介紹自上而下注意力(第3.1節(jié)),然后描述TOAST的詳細(xì)流程(第3.2節(jié))。注意,盡管TOAST適用于不同的模型體系結(jié)構(gòu),如transformer和Convnets,但在下面的討論中,論文假設(shè)是一個(gè)transformer骨干網(wǎng)絡(luò)。

3.1 自上而下注意力transformer的預(yù)備知識(shí)

transformer模型通常是自下而上的,即它的注意力僅取決于輸入,因此,它通常會(huì)突出輸入信號(hào)中的所有顯著特征。與自下而上注意力相反,自上而下注意力具有根據(jù)高層目標(biāo)或任務(wù)調(diào)整注意力的能力,即它只關(guān)注與任務(wù)相關(guān)的特征,同時(shí)忽略其他特征。

d7cc0ac8-36bc-11ee-9e74-dac502259ad0.png
圖2

本設(shè)計(jì)遵循圖2(a)所示的自上而下注意力設(shè)計(jì)。具體來(lái)說(shuō),對(duì)于一個(gè)純前饋transformer,論文添加一個(gè)特征選擇模塊和一個(gè)反饋路徑用于自上而下注意力。網(wǎng)絡(luò)推理包含四個(gè)步驟:(i)輸入經(jīng)過(guò)前饋路徑獲得初始輸出,(ii)選擇輸出中的對(duì)當(dāng)前工作有用的特征,(iii)選擇的特征通過(guò)反饋路徑發(fā)送回每個(gè)自注意力模塊,(iv)再次運(yùn)行前饋傳遞,但每個(gè)自注意力都接收附加的自上而下輸入。通過(guò)這種方式,任務(wù)相關(guān)信息在每個(gè)層中被增強(qiáng),實(shí)現(xiàn)自上而下注意力。

在網(wǎng)絡(luò)中,前饋路徑是一個(gè)常規(guī)transformer,其余部分如下所述:

特征選擇(步驟(ii))。從前饋骨干網(wǎng)絡(luò)的輸出中,該模塊選擇對(duì)當(dāng)前任務(wù)有用的特征。這包括選擇與任務(wù)相關(guān)的標(biāo)記和通道。圖2(b)說(shuō)明了該過(guò)程。具體來(lái)說(shuō),表示前饋傳遞的第一個(gè)輸出為,其中是第i個(gè)輸出標(biāo)記,特征選擇對(duì)每個(gè)標(biāo)記運(yùn)算,并輸出,其中和是特定于任務(wù)的參數(shù),sim(·,·)是限制在[0,1]之間的余弦相似度。這里,作為任務(wù)嵌入,編碼對(duì)任務(wù)重要的標(biāo)記類型,每個(gè)標(biāo)記由其與任務(wù)嵌入的相關(guān)性(用余弦相似度測(cè)量)重新加權(quán),模擬標(biāo)記選擇。然后,通過(guò)的線性變換執(zhí)行每個(gè)標(biāo)記的通道選擇。

反饋路徑(步驟(iii))。在特征選擇之后,輸出標(biāo)記通過(guò)反饋路徑發(fā)送回網(wǎng)絡(luò)。反饋路徑包含與前饋路徑相同數(shù)量的層,每層是一個(gè)簡(jiǎn)單的線性變換。每層的輸出經(jīng)過(guò)另一個(gè)線性變換,作為第二次前饋中的自上而下輸入發(fā)送到自注意力模塊。

帶自上而下輸入的自注意力(步驟(iv))。在第二次前饋傳遞中,每個(gè)自注意力模塊接收一個(gè)額外的自上而下輸入。如圖2(c)所示,論文簡(jiǎn)單地將其添加到值矩陣中,同時(shí)保持查詢和鍵不變,即,其中是自注意力模塊的常規(guī)自下而上輸入,是自上而下輸入。然后是對(duì)的常規(guī)自注意力。

3.2 自上而下注意力引導(dǎo)

給定一個(gè)預(yù)訓(xùn)練transformer,TOAST隨機(jī)初始化一個(gè)自上而下的注意力模塊,并遵循兩階段流程:(i)在通用公共數(shù)據(jù)集(例如視覺(jué)的ImageNet或語(yǔ)言的OpenWebText)上預(yù)調(diào)整自上而下的注意力以獲得更好的初始化,(ii)在下游任務(wù)上調(diào)整自上而下的注意力。在兩階段中,論文凍結(jié)預(yù)訓(xùn)練骨干網(wǎng)絡(luò),僅調(diào)整自上而下的注意力模塊(圖2(a))。

預(yù)調(diào)整階段。由于自上而下的注意力模塊是隨機(jī)初始化的,因此直接在下游任務(wù)上調(diào)整可能會(huì)導(dǎo)致次優(yōu)性能。為此,論文提出先在通用公共數(shù)據(jù)集(如ImageNet或OpenWebText)上預(yù)調(diào)整自上而下的注意力以獲得更好的初始化。在預(yù)調(diào)整過(guò)程中,除了常規(guī)的有監(jiān)督或無(wú)監(jiān)督損失之外,論文還添加了的變分損失,它鼓勵(lì)反饋路徑從輸出重構(gòu)輸入,作為反饋權(quán)重的正則化。

調(diào)整階段。遷移到下游任務(wù)時(shí),TOAST僅調(diào)整自上而下注意力模塊中的參數(shù)。在這種情況下,更新了大約15%的參數(shù)。論文注意到大多數(shù)可調(diào)參數(shù)來(lái)自反饋層,每個(gè)反饋層都包含一個(gè)矩陣,當(dāng)特征維度d很高時(shí),這個(gè)矩陣很大。為進(jìn)一步提高參數(shù)效率,論文還提出了TOAST-Lite,它對(duì)反饋層應(yīng)用LoRA。通過(guò)這種方式,調(diào)整的參數(shù)不到1%。論文通過(guò)經(jīng)驗(yàn)證明,盡管TOAST-Lite調(diào)整的參數(shù)比TOAST少得多,但在某些任務(wù)上的性能與TOAST相當(dāng),而在其他任務(wù)上略差。

4 TOAST中的注意力重新聚焦分析

從相似的角度,我們來(lái)解釋來(lái)為什么TOAST比其他基準(zhǔn)模型性能優(yōu)越。如圖3所示,對(duì)于鳥(niǎo)類分類,TOAST明確關(guān)注前景鳥(niǎo),而其他方法要么具有關(guān)注噪聲,要么完全忽略前景對(duì)象。在汽車分類中,TOAST傾向于集中在車頭燈和徽標(biāo)上,這有助于區(qū)分不同品牌的汽車,而其他方法具有更少可解釋性并且容易被噪聲干擾。

5 效果展示

語(yǔ)言生成效果展示:

d857fbb4-36bc-11ee-9e74-dac502259ad0.pngd8d965b4-36bc-11ee-9e74-dac502259ad0.png

6 結(jié)論

這項(xiàng)工作的靈感來(lái)自于經(jīng)驗(yàn)性觀察到以前的遷移學(xué)習(xí)方法通常無(wú)法關(guān)注與任務(wù)相關(guān)的信號(hào),這可能導(dǎo)致下游任務(wù)的次優(yōu)性能。論文展示了重新聚焦注意力方法是實(shí)現(xiàn)更好遷移學(xué)習(xí)性能的關(guān)鍵。論文提出了自上而下的注意力引導(dǎo)(TOAST),它通過(guò)將注意力引導(dǎo)到特定任務(wù)的特征來(lái)遷移到新任務(wù)。具體來(lái)說(shuō),TOAST凍結(jié)預(yù)訓(xùn)練骨干網(wǎng)絡(luò),并在下游任務(wù)上調(diào)整附加的自上而下注意力模塊以引導(dǎo)注意力。與以前的基線相比,TOAST能夠在細(xì)分類視覺(jué)分類以及指令遵循語(yǔ)言生成上實(shí)現(xiàn)最先進(jìn)的結(jié)果,同時(shí)僅調(diào)整很小一部分參數(shù)。

前言

最近閱讀了一篇名為《TOAST:Transfer Learning via Attention Steering》的論文,論文中,作者使用了一個(gè)遷移學(xué)習(xí)模型,既可以實(shí)現(xiàn)圖像分類算法的遷移,又可以實(shí)現(xiàn)文本生成算法的遷移,令人振奮的是:這兩種遷移都展示了驚艷的效果。

1.遷移學(xué)習(xí)的概念

遷移學(xué)習(xí)是指在一個(gè)領(lǐng)域(源領(lǐng)域)學(xué)習(xí)到的知識(shí),用來(lái)幫助另一個(gè)領(lǐng)域(目標(biāo)領(lǐng)域)的學(xué)習(xí),從而減少目標(biāo)領(lǐng)域所需的數(shù)據(jù)量和訓(xùn)練時(shí)間。

傳統(tǒng)的機(jī)器學(xué)習(xí)方法往往需要大量的數(shù)據(jù)和時(shí)間來(lái)從零開(kāi)始學(xué)習(xí),這樣既不高效也不靈活。相反,遷移學(xué)習(xí)可以借鑒已經(jīng)存在的模型的能力,利用已有的相關(guān)知識(shí),加速和優(yōu)化新問(wèn)題的解決。傳統(tǒng)機(jī)器學(xué)習(xí)方法和遷移學(xué)習(xí)方法對(duì)比如下圖所示。

d8f4d2e0-36bc-11ee-9e74-dac502259ad0.pngimg

(圖片來(lái)源:A Comprehensive Hands-on Guide to Transfer Learning with Real-World Applications in Deep Learning,Dipanjan (DJ) Sarkar)

2.遷移學(xué)習(xí)的分類

(1)根據(jù)源領(lǐng)域和目標(biāo)領(lǐng)域之間的關(guān)系,分為同構(gòu)遷移學(xué)習(xí)異構(gòu)遷移學(xué)習(xí)

同構(gòu)遷移學(xué)習(xí)是指源領(lǐng)域和目標(biāo)領(lǐng)域具有相同的特征空間和標(biāo)簽空間,只是數(shù)據(jù)分布不同。也就是說(shuō),它們的數(shù)據(jù)具有相同的屬性和類別,只是數(shù)據(jù)分布不同。例如,從一個(gè)圖像分類任務(wù)遷移到另一個(gè)圖像分類任務(wù),如果它們都使用相同的像素值作為特征,且都有相同的類別標(biāo)簽,那么就是同構(gòu)遷移學(xué)習(xí)。同構(gòu)遷移學(xué)習(xí)的主要挑戰(zhàn)是如何處理源領(lǐng)域和目標(biāo)領(lǐng)域之間的概率分布差異,即如何處理數(shù)據(jù)之間分布的差異。

異構(gòu)遷移學(xué)習(xí)是指源領(lǐng)域和目標(biāo)領(lǐng)域具有不同的特征空間或標(biāo)簽空間,或者兩者都不同。也就是說(shuō),它們的數(shù)據(jù)具有不同的屬性或類別。例如,從一個(gè)文本分類任務(wù)遷移到一個(gè)圖像分類任務(wù),如果它們使用不同的特征表示方法,如詞向量和像素值,且有不同的類別標(biāo)簽,那么就是異構(gòu)遷移學(xué)習(xí)。異構(gòu)遷移學(xué)習(xí)的主要挑戰(zhàn)是如何建立源領(lǐng)域和目標(biāo)領(lǐng)域之間的特征映射或標(biāo)簽對(duì)應(yīng)關(guān)系,即處理不同數(shù)據(jù)之間的語(yǔ)義的差異。

(2)根據(jù)所要遷移的知識(shí)類型,分為基于實(shí)例的遷移學(xué)習(xí)、基于特征的遷移學(xué)習(xí)、基于模型的遷移學(xué)習(xí)、基于關(guān)系的遷移學(xué)習(xí)基于對(duì)抗的遷移學(xué)習(xí)

基于實(shí)例的遷移學(xué)習(xí)是指利用特定的權(quán)重調(diào)整策略,從源領(lǐng)域中選擇部分實(shí)例作為目標(biāo)領(lǐng)域訓(xùn)練集的補(bǔ)充的方法。這種方法的假設(shè)是源領(lǐng)域和目標(biāo)領(lǐng)域中存在一部分相似或相關(guān)的實(shí)例,在這部分實(shí)例上,源領(lǐng)域和目標(biāo)領(lǐng)域的數(shù)據(jù)分布是一致或接近的。這種方法通常適用于獨(dú)立同分布的數(shù)據(jù),即每個(gè)數(shù)據(jù)點(diǎn)都是獨(dú)立生成的。這種方法的優(yōu)點(diǎn)是方法簡(jiǎn)單,容易實(shí)現(xiàn);缺點(diǎn)是權(quán)重選擇與相似度的度量過(guò)于依賴經(jīng)驗(yàn),且源域與目標(biāo)域的數(shù)據(jù)分布往往不同。因此對(duì)差異稍大的數(shù)據(jù)集泛化能力較差。

基于特征的遷移學(xué)習(xí)是指尋找或構(gòu)造一個(gè)共享的特征空間,使得源領(lǐng)域和目標(biāo)領(lǐng)域在該空間中具有相似的數(shù)據(jù)分布,從而減少數(shù)據(jù)分布不匹配帶來(lái)的負(fù)面影響的方法。這種方法的假設(shè)是源領(lǐng)域和目標(biāo)領(lǐng)域存在一部分公共的特征,在這部分公共特征上,源領(lǐng)域和目標(biāo)領(lǐng)域的數(shù)據(jù)分布是一致或相近的。這種方法通常適用于領(lǐng)域適應(yīng),也就是源領(lǐng)域和目標(biāo)領(lǐng)域具有相同的標(biāo)簽空間,但是不同的特征空間或特征分布。例如,在文本分類中,可以利用詞嵌入或主題模型等方法,將不同語(yǔ)言或不同風(fēng)格的文本映射到一個(gè)共享的語(yǔ)義空間中,從而進(jìn)行跨語(yǔ)言或跨風(fēng)格的文本分類。這種方法的優(yōu)點(diǎn)是對(duì)大多數(shù)方法適用,效果好;缺點(diǎn)是難以求解,容易發(fā)生過(guò)擬合。

基于模型的遷移學(xué)習(xí)是指利用源領(lǐng)域已經(jīng)訓(xùn)練好的模型或參數(shù)來(lái)初始化或約束目標(biāo)領(lǐng)域的模型,從而提高目標(biāo)領(lǐng)域?qū)W習(xí)效果的方法。這種方法的假設(shè)是源領(lǐng)域和目標(biāo)領(lǐng)域在模型層面有共同的知識(shí),可以通過(guò)共享模型或參數(shù)來(lái)實(shí)現(xiàn)知識(shí)轉(zhuǎn)移。這種方法通常適用于任務(wù)遷移學(xué)習(xí),也就是源領(lǐng)域和目標(biāo)領(lǐng)域具有相同的特征空間和標(biāo)簽空間,但是不同的任務(wù)。例如,在圖像分類中,可以利用在大規(guī)模數(shù)據(jù)集上預(yù)訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)模型,通過(guò)微調(diào)或剪枝等方法來(lái)適應(yīng)新的圖像分類任務(wù) 。這種方法優(yōu)點(diǎn)是可以充分利用模型之間存在的相似性;缺點(diǎn)是模型參數(shù)不易收斂。

基于關(guān)系的遷移學(xué)習(xí)是指利用源領(lǐng)域和目標(biāo)領(lǐng)域之間的關(guān)系知識(shí)來(lái)進(jìn)行知識(shí)遷移的方法。這種方法的假設(shè)是源領(lǐng)域和目標(biāo)領(lǐng)域中,數(shù)據(jù)之間的聯(lián)系關(guān)系是相同或相似的,可以通過(guò)類比或推理等方式來(lái)實(shí)現(xiàn)知識(shí)轉(zhuǎn)移。這種方法通常適用于非獨(dú)立同分布的數(shù)據(jù),即每個(gè)數(shù)據(jù)點(diǎn)都與其他數(shù)據(jù)點(diǎn)存在關(guān)聯(lián)。例如,在推薦系統(tǒng)中,可以利用用戶和物品之間的評(píng)分矩陣,將一個(gè)域中的用戶或物品映射到另一個(gè)域中,從而進(jìn)行跨域推薦。這種方法的優(yōu)點(diǎn)是可以處理源域和目標(biāo)域之間分布差異較大的情況,可以處理類別不平衡的問(wèn)題,并且對(duì)少量標(biāo)注數(shù)據(jù)也能取得不錯(cuò)的效果;缺點(diǎn)是需要構(gòu)建類別之間的關(guān)系網(wǎng)絡(luò),關(guān)系提取不準(zhǔn)確會(huì)對(duì)遷移產(chǎn)生負(fù)面影響,計(jì)算關(guān)系網(wǎng)絡(luò)的空間和時(shí)間復(fù)雜度較高。

基于對(duì)抗的遷移學(xué)習(xí)是指利用生成對(duì)抗網(wǎng)絡(luò)(GAN)或其他對(duì)抗性技術(shù)來(lái)縮小源域和目標(biāo)域之間的差異,從而提高目標(biāo)域?qū)W習(xí)效果的方法。這種方法的假設(shè)是“為了有效的遷移,良好的表征應(yīng)該是對(duì)主要學(xué)習(xí)任務(wù)的區(qū)別性,以及對(duì)源域和目標(biāo)域的不加區(qū)分?!被趯?duì)抗性的深度遷移學(xué)習(xí)是指在生成對(duì)抗性網(wǎng)絡(luò) (GAN)的啟發(fā)下,引入 對(duì)抗性技術(shù) ,尋找既適用于源域又適用于目標(biāo)域的可遷移表達(dá)。它基于這樣的假設(shè):“為了有效的遷移,良好的表征應(yīng)該是對(duì)主要學(xué)習(xí)任務(wù)的區(qū)別性,以及對(duì)源域和目標(biāo)域的不加區(qū)分?!崩纾趫D像轉(zhuǎn)換中,可以利用CycleGAN等方法,將一個(gè)域中的圖像風(fēng)格轉(zhuǎn)換為另一個(gè)域中的圖像風(fēng)格。這種方法的優(yōu)點(diǎn)是可自動(dòng)適應(yīng)不同分布,無(wú)需目標(biāo)域標(biāo)注;缺點(diǎn)是訓(xùn)練穩(wěn)定性差,難以收斂,效果不穩(wěn)定。

3.遷移學(xué)習(xí)的應(yīng)用

為了幫助大家更好地理解遷移學(xué)習(xí),這里舉了兩個(gè)常見(jiàn)的例子 ^ v ^

圖像分類:圖像分類是指根據(jù)圖像的內(nèi)容,將其分為不同的類別,如貓、狗、飛機(jī)等。圖像分類是計(jì)算機(jī)視覺(jué)中的一個(gè)基本任務(wù),但是對(duì)于一些特定的領(lǐng)域,如醫(yī)學(xué)圖像、衛(wèi)星圖像等,可能沒(méi)有足夠的標(biāo)注數(shù)據(jù)來(lái)訓(xùn)練一個(gè)有效的分類器。這時(shí),可以利用遷移學(xué)習(xí),將一個(gè)在大規(guī)模通用數(shù)據(jù)集(如ImageNet)上訓(xùn)練好的分類器,遷移到目標(biāo)領(lǐng)域上,通過(guò)微調(diào)或者特征提取等方法,來(lái)提高目標(biāo)領(lǐng)域的分類效果。例如,使用遷移學(xué)習(xí)將在ImageNet上訓(xùn)練好的ResNet模型遷移到醫(yī)學(xué)圖像上,實(shí)現(xiàn)肺炎檢測(cè)、皮膚癌診斷等工作。

自然語(yǔ)言處理:自然語(yǔ)言處理(NLP)是指讓計(jì)算機(jī)理解和生成自然語(yǔ)言(如中文、英文等)的技術(shù)。NLP涉及很多子任務(wù),如情感分析、機(jī)器翻譯、文本摘要等。由于不同的語(yǔ)言或者不同的領(lǐng)域(如新聞、社交媒體、法律等)有著不同的語(yǔ)法和語(yǔ)義規(guī)則,因此需要大量的數(shù)據(jù)來(lái)訓(xùn)練一個(gè)通用的NLP模型。遷移學(xué)習(xí)可以幫助解決這個(gè)問(wèn)題,通過(guò)將一個(gè)在大量文本上預(yù)訓(xùn)練好的NLP模型(如BERT、GPT等),遷移到目標(biāo)語(yǔ)言或者目標(biāo)領(lǐng)域上,通過(guò)微調(diào)或者適配等方法,來(lái)提高目標(biāo)任務(wù)的效果。例如,使用遷移學(xué)習(xí)將在英文文本上預(yù)訓(xùn)練好的BERT模型遷移到中文文本上,實(shí)現(xiàn)命名實(shí)體識(shí)別、情感分析等任務(wù)。

4.遷移學(xué)習(xí)的常見(jiàn)模型

基于實(shí)例的遷移學(xué)習(xí):TrAdaBoost1、BIW2等。

基于特征的遷移學(xué)習(xí):TCA3、DAN4等。

基于模型的遷移學(xué)習(xí):fine-tuning5、LwF等。

基于模型的遷移學(xué)習(xí):GraphMix、MetaMIML等。

基于對(duì)抗的遷移學(xué)習(xí):DANN、CycleGAN等。

5.遷移學(xué)習(xí)的優(yōu)勢(shì)

遷移學(xué)習(xí)的主要優(yōu)勢(shì)可歸納如下:

提高模型泛化能力:遷移學(xué)習(xí)通過(guò)從相關(guān)任務(wù)中獲取先驗(yàn)知識(shí),可以提高模型在目標(biāo)任務(wù)上泛化的能力,避免從頭訓(xùn)練。

減少標(biāo)注數(shù)據(jù)依賴:遷移學(xué)習(xí)可以在目標(biāo)任務(wù)標(biāo)注數(shù)據(jù)不足時(shí),利用源任務(wù)的知識(shí)提高模型性能,減少對(duì)大規(guī)模標(biāo)注數(shù)據(jù)的依賴。

加速模型訓(xùn)練:基于預(yù)訓(xùn)練模型的遷移學(xué)習(xí)可以跳過(guò)模型初始化和預(yù)訓(xùn)練過(guò)程,直接進(jìn)行微調(diào),大大加速模型的訓(xùn)練。

提高性能上限:遷移學(xué)習(xí)通過(guò)引入外部信息,可以使模型超越僅從目標(biāo)任務(wù)數(shù)據(jù)中學(xué)習(xí)的性能上限。

擴(kuò)展模型應(yīng)用范圍:遷移學(xué)習(xí)訓(xùn)練出的模型可以超越源數(shù)據(jù)集和目標(biāo)數(shù)據(jù)集,應(yīng)用到更廣泛的領(lǐng)域。

更好引導(dǎo)特征學(xué)習(xí):遷移學(xué)習(xí)可以更好地引導(dǎo)模型學(xué)習(xí)任務(wù)相關(guān)的特征表示,并抑制無(wú)關(guān)特征的負(fù)面影響。

6.算法實(shí)例詳解

下面,我將根據(jù)不同的模型分類,分別提供對(duì)應(yīng)的代碼詳解。

6.1實(shí)例遷移

直接重用源域數(shù)據(jù),可以對(duì)源域樣本進(jìn)行重新加權(quán),使其分布適應(yīng)目標(biāo)域。

#源域數(shù)據(jù)
source_data=[圖片數(shù)據(jù)]

#目標(biāo)域數(shù)據(jù)
target_data=[圖片數(shù)據(jù)]

#計(jì)算源域數(shù)據(jù)在目標(biāo)域中的權(quán)重
weights=compute_weight(source_data,target_data)

#加權(quán)源域數(shù)據(jù)
weighted_source_data=[w*imgforw,imginzip(weights,source_data)]

#合并源域和目標(biāo)域數(shù)據(jù)進(jìn)行訓(xùn)練
combined_data=target_data+weighted_source_data

6.2特征遷移

使用源域模型提取特征,轉(zhuǎn)移到目標(biāo)模型中。

#源域模型
source_model=pretrain_model()

#固定源域模型參數(shù)
source_model.trainable=False

#提取源域模型最后一層前的特征
target_features=source_model(target_data)

#目標(biāo)模型,將源域特征作為輸入
target_model=tf.keras.models.Sequential()
target_model.add(tf.keras.layers.InputLayer(input_shape=target_features.shape[1:]))
target_model.add(tf.keras.layers.Dense(num_classes))

#訓(xùn)練
target_model.compile(optimizer='adam',loss='categorical_crossentropy')
target_model.fit(target_features,target_labels)

6.3參數(shù)遷移

初始化目標(biāo)模型的參數(shù)為源模型的參數(shù)。

#源域模型
source_model=pretrain_model()

#目標(biāo)模型,結(jié)構(gòu)與源域模型相同
target_model=Model()

#初始化目標(biāo)模型的參數(shù)
target_model.set_weights(source_model.get_weights())

#訓(xùn)練
target_model.compile(optimizer='adam',loss='categorical_crossentropy')
target_model.fit(target_data,target_labels)

6.4關(guān)系遷移

建模源域和目標(biāo)域之間的相關(guān)性,加入目標(biāo)模型的損失函數(shù)中。

#源域數(shù)據(jù)
source_data=[圖片數(shù)據(jù)]
#目標(biāo)域數(shù)據(jù)
target_data=[圖片數(shù)據(jù)]

#源域模型
source_model=Model()
#目標(biāo)模型
target_model=Model()

#相關(guān)性損失
correlation_loss=compute_correlation_loss(source_model,target_model)

#目標(biāo)域損失
target_loss=compute_target_loss(target_model)

#總損失
total_loss=target_loss+λ*correlation_loss

#訓(xùn)練
target_model.compile(loss=total_loss)
target_model.fit(target_data,target_labels)

6.5模式遷移

在目標(biāo)模型中加入正則項(xiàng),使其學(xué)習(xí)到源模型的部分特征模式。

#源域模型
source_model=pretrain_model()

#目標(biāo)模型
target_model=Model()

#定義模式正則項(xiàng)
pattern_reg=compute_pattern_reg(target_model,source_model)

#目標(biāo)域損失
target_loss=compute_target_loss(target_model)

#總損失
total_loss=target_loss+λ*pattern_reg

#訓(xùn)練
target_model.compile(loss=total_loss)
target_model.fit(target_data)

6.6多任務(wù)遷移

同時(shí)優(yōu)化源域任務(wù)和目標(biāo)域任務(wù)的損失。

#源域模型
source_model=Model()
#源域數(shù)據(jù)
source_data=[圖片數(shù)據(jù)]

#目標(biāo)模型
target_model=Model()
#目標(biāo)域數(shù)據(jù)
target_data=[圖片數(shù)據(jù)]

#源域任務(wù)損失
source_loss=compute_source_loss(source_model,source_data)
#目標(biāo)域任務(wù)損失
target_loss=compute_target_loss(target_model,target_data)

#多任務(wù)損失
total_loss=source_loss+target_loss

#訓(xùn)練
model.compile(loss=total_loss)
model.fit(source_data+target_data)

6.7對(duì)抗遷移

使用對(duì)抗訓(xùn)練,使模型適應(yīng)目標(biāo)域。

#源域數(shù)據(jù)
source_data=[圖片數(shù)據(jù)]
#目標(biāo)域數(shù)據(jù)
target_data=[圖片數(shù)據(jù)]

#特征提取器
feature_extractor=Model()

#源域判別器
source_discriminator=Discriminator()
#目標(biāo)域判別器
target_discriminator=Discriminator()

#對(duì)抗損失
adversarial_loss=compute_adversarial_loss(feature_extractor,source_discriminator)+compute_adversarial_loss(feature_extractor,target_discriminator)

#訓(xùn)練
model.compile(loss=adversarial_loss)
model.fit(source_data+target_data)

7. 從圖像分類到目標(biāo)檢測(cè)的實(shí)戰(zhàn)

最后,我用訓(xùn)練好的ResNet50作為被遷移源對(duì)象,在其基礎(chǔ)上增加目標(biāo)檢測(cè)模塊,之后在PASCAL VOC數(shù)據(jù)集進(jìn)行訓(xùn)練,實(shí)現(xiàn)目標(biāo)檢測(cè)任務(wù)的遷移學(xué)習(xí)。

具體代碼如下:

importtensorflowastf
fromtensorflow.keras.applicationsimportResNet50
fromtensorflow.keras.layersimportConv2D,F(xiàn)latten,Dense

#加載預(yù)訓(xùn)練模型作為特征提取器
feature_extractor=ResNet50(weights='imagenet',include_top=False)

#凍結(jié)預(yù)訓(xùn)練模型所有層
forlayerinfeature_extractor.layers:
layer.trainable=False

#構(gòu)建檢測(cè)模型
inputs=tf.keras.Input(shape=(224,224,3))
x=feature_extractor(inputs)
x=Conv2D(filters=256,kernel_size=3)(x)
x=Flatten()(x)
x=Dense(256,activation='relu')(x)
predictions=Dense(10,activation='softmax')(x)#10個(gè)檢測(cè)目標(biāo)

model=tf.keras.Model(inputs=inputs,outputs=predictions)

#編譯模型
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])

#加載PASCALVOC數(shù)據(jù)并訓(xùn)練
voc_data=#加載PASCALVOC數(shù)據(jù)集
model.fit(voc_data,voc_labels,epochs=5)

這里我們加載了在ImageNet上預(yù)訓(xùn)練的ResNet50作為特征提取器,凍結(jié)了其權(quán)重不更新。然后在它之上構(gòu)建了一個(gè)新的卷積和全連接層來(lái)進(jìn)行目標(biāo)分類。這樣通過(guò)遷移ResNet50提取的圖像特征,可以減少目標(biāo)檢測(cè)模型對(duì)大量標(biāo)注數(shù)據(jù)的需求。只需要小量樣本訓(xùn)練全連接分類層即可。這種做法屬于遷移學(xué)習(xí)中的特征遷移和Fine Tuning技術(shù),是目標(biāo)檢測(cè)領(lǐng)域中非常常用的遷移學(xué)習(xí)實(shí)踐。

8.遷移學(xué)習(xí)的前景

多源遷移學(xué)習(xí)的探索:現(xiàn)有方法主要基于單一源域進(jìn)行遷移,未來(lái)可研究如何有效集成多個(gè)源域的信息。

異構(gòu)遷移學(xué)習(xí)的發(fā)展:研究如何在源域和目標(biāo)域特征空間、分布差異大的情況下進(jìn)行有效遷移。

遷移學(xué)習(xí)理論的完善:加強(qiáng)對(duì)遷移學(xué)習(xí)內(nèi)在機(jī)理的理解,建立更統(tǒng)一完備的理論指導(dǎo)框架。

遷移學(xué)習(xí)算法的優(yōu)化:提出更有效的遷移學(xué)習(xí)算法,縮小理論和實(shí)踐的差距。

9.文章總結(jié)

本文介紹了遷移學(xué)習(xí)的概念分類、應(yīng)用、模型優(yōu)勢(shì)、代碼示例項(xiàng)目示例發(fā)展前景。目前,遷移學(xué)習(xí)仍有很多值得探索的方向,未來(lái)它將推動(dòng)人工智能技術(shù)向通用和自動(dòng)化方向發(fā)展。最后,由于本人知識(shí)范圍有限,有疏漏之處,麻煩大家指出。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4575

    瀏覽量

    92339
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8320

    瀏覽量

    132165
  • 數(shù)據(jù)集
    +關(guān)注

    關(guān)注

    4

    文章

    1197

    瀏覽量

    24590
  • 遷移學(xué)習(xí)
    +關(guān)注

    關(guān)注

    0

    文章

    74

    瀏覽量

    5547

原文標(biāo)題:(收藏)一文搞定遷移學(xué)習(xí)!原理+分類+代碼+實(shí)戰(zhàn)全都有!

文章出處:【微信號(hào):GiantPandaCV,微信公眾號(hào):GiantPandaCV】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    遷移學(xué)習(xí)

    經(jīng)典機(jī)器學(xué)習(xí)算法介紹章節(jié)目標(biāo):機(jī)器學(xué)習(xí)是人工智能的重要技術(shù)之,詳細(xì)了解機(jī)器學(xué)習(xí)的原理、機(jī)制和方法,為學(xué)習(xí)深度
    發(fā)表于 04-21 15:15

    詳解藍(lán)牙模塊原理與結(jié)構(gòu)

    電子發(fā)燒友網(wǎng)站提供《詳解藍(lán)牙模塊原理與結(jié)構(gòu).pdf》資料免費(fèi)下載
    發(fā)表于 11-26 16:40 ?94次下載

    詳解精密封裝技術(shù)

    詳解精密封裝技術(shù)
    的頭像 發(fā)表于 12-30 15:41 ?1579次閱讀

    詳解分立元件門電路

    詳解分立元件門電路
    的頭像 發(fā)表于 03-27 17:44 ?2744次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>詳解</b>分立元件門電路

    詳解pcb和smt的區(qū)別

    詳解pcb和smt的區(qū)別
    的頭像 發(fā)表于 10-08 09:31 ?3056次閱讀

    詳解pcb地孔的作用

    詳解pcb地孔的作用
    的頭像 發(fā)表于 10-30 16:02 ?1445次閱讀

    詳解TVS二極管

    詳解TVS二極管
    的頭像 發(fā)表于 11-29 15:10 ?1400次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>詳解</b>TVS二極管

    詳解pcb不良分析

    詳解pcb不良分析
    的頭像 發(fā)表于 11-29 17:12 ?1060次閱讀

    詳解smt品質(zhì)控制重點(diǎn)

    詳解smt品質(zhì)控制重點(diǎn)
    的頭像 發(fā)表于 12-05 11:14 ?1376次閱讀

    詳解pcb電路板是怎么制作的

    詳解pcb電路板是怎么制作的
    的頭像 發(fā)表于 12-05 11:18 ?1332次閱讀

    詳解PCB半成品類型

    詳解PCB半成品類型
    的頭像 發(fā)表于 12-11 15:41 ?1134次閱讀

    詳解pcb的msl等級(jí)

    詳解pcb的msl等級(jí)
    的頭像 發(fā)表于 12-13 16:52 ?8172次閱讀

    詳解pcb微帶線設(shè)計(jì)

    詳解pcb微帶線設(shè)計(jì)
    的頭像 發(fā)表于 12-14 10:38 ?2471次閱讀

    詳解pcb的組成和作用

    詳解pcb的組成和作用
    的頭像 發(fā)表于 12-18 10:48 ?1304次閱讀

    詳解pcb回流焊溫度選擇與調(diào)整

    詳解pcb回流焊溫度選擇與調(diào)整
    的頭像 發(fā)表于 12-29 10:20 ?1359次閱讀