1 論文摘要
遷移學習需要將預訓練好的模型適應新的下游任務。然而,作者觀察到,當前的遷移學習方法通常無法關注與任務相關的特征。在這項工作中,作者探索了重新聚焦模型注意力以進行遷移學習。作者提出了自上而下的注意力引導(TOAST),這是一種新的遷移學習算法,它可以凍結預先訓練的骨干模型,選擇與任務相關的特征輸出,并將這些特征反饋到模型中,以引導注意力關注特定任務的特征。僅通過重新聚焦注意力,TOAST在多個遷移學習基準測試中取得了最先進的結果,而只需調整很少的參數。與完全微調、LoRA和提示調優相比,TOAST在各種細分類圖像上(例如FGVC上平均準確率81.1% → 86.2%)性能都大大提高。在語言生成方面,TOAST還優于完全微調的Alpaca和Vicuna模型 。
2 模型簡介
首先使用ImageNet預訓練的ViT,并使用不同的遷移學習算法將其轉移到下游鳥類分類中。在這里,將這些模型的注意力圖可視化。每個注意力圖在ViT的最后一層中的不同頭部之間進行平均。(a) TOAST方法能夠將預先訓練的骨干的注意力重新集中在特定任務的特征上,從而大幅提高下游性能。(b) 先前的遷移學習方法,如微調、LoRA和VPT,未能專注于與任務相關的對象,從而實現了次優性能。
在這項工作中,作者表明重新聚焦注意力是遷移學習的關鍵。作者提出了自上而下的注意力引導(TOAST),這是一種新的遷移學習方法,它通過將注意力重新聚焦到任務相關特征來學習新任務。這是通過自上而下的注意力模塊實現的,該模塊允許模型以適應任務的方式調整其注意力。自上而下的注意力模塊獲取來自骨干網絡的輸出特征,選擇與任務相關的特征,然后將這些特征反饋到骨干網絡中的每個自注意力層。這些自上而下的信號將增強每層中的任務相關特征,并且帶有增強特征的前饋骨干網絡再次運行,實現對任務相關信號的更強注意力。在遷移到不同的下游任務時,TOAST簡單地凍結預訓練骨干網絡,并調整自上而下的注意力模塊以將注意力引導到特定任務的信號。
值得注意的是,僅通過重新聚焦注意力,TOAST在各種遷移學習基準測試中取得了最先進的結果。與完全微調、LoRA和VPT相比,TOAST顯著提高了FGVC細分類上的性能(例如,在平均準確率上比完全微調提高了5%)。TOAST還優于完全微調的Alpaca和Vicuna模型,用于指令遵循語言生成。這些觀察加強了作者的觀點,即重新聚焦注意力是遷移學習的關鍵,并為該領域的未來探索提供了啟發。
3 算法設計流程
論文提出了自上而下注意力引導(TOAST),這是一種新的遷移學習方法,它給預訓練模型添加一個自上而下的注意力模塊,并只在遷移到下游任務時調整自上而下的注意力。論文首先簡要介紹自上而下注意力(第3.1節),然后描述TOAST的詳細流程(第3.2節)。注意,盡管TOAST適用于不同的模型體系結構,如transformer和Convnets,但在下面的討論中,論文假設是一個transformer骨干網絡。
3.1 自上而下注意力transformer的預備知識
transformer模型通常是自下而上的,即它的注意力僅取決于輸入,因此,它通常會突出輸入信號中的所有顯著特征。與自下而上注意力相反,自上而下注意力具有根據高層目標或任務調整注意力的能力,即它只關注與任務相關的特征,同時忽略其他特征。
圖2
本設計遵循圖2(a)所示的自上而下注意力設計。具體來說,對于一個純前饋transformer,論文添加一個特征選擇模塊和一個反饋路徑用于自上而下注意力。網絡推理包含四個步驟:(i)輸入經過前饋路徑獲得初始輸出,(ii)選擇輸出中的對當前工作有用的特征,(iii)選擇的特征通過反饋路徑發送回每個自注意力模塊,(iv)再次運行前饋傳遞,但每個自注意力都接收附加的自上而下輸入。通過這種方式,任務相關信息在每個層中被增強,實現自上而下注意力。
在網絡中,前饋路徑是一個常規transformer,其余部分如下所述:
特征選擇(步驟(ii))。從前饋骨干網絡的輸出中,該模塊選擇對當前任務有用的特征。這包括選擇與任務相關的標記和通道。圖2(b)說明了該過程。具體來說,表示前饋傳遞的第一個輸出為,其中是第i個輸出標記,特征選擇對每個標記運算,并輸出,其中和是特定于任務的參數,sim(·,·)是限制在[0,1]之間的余弦相似度。這里,作為任務嵌入,編碼對任務重要的標記類型,每個標記由其與任務嵌入的相關性(用余弦相似度測量)重新加權,模擬標記選擇。然后,通過的線性變換執行每個標記的通道選擇。
反饋路徑(步驟(iii))。在特征選擇之后,輸出標記通過反饋路徑發送回網絡。反饋路徑包含與前饋路徑相同數量的層,每層是一個簡單的線性變換。每層的輸出經過另一個線性變換,作為第二次前饋中的自上而下輸入發送到自注意力模塊。
帶自上而下輸入的自注意力(步驟(iv))。在第二次前饋傳遞中,每個自注意力模塊接收一個額外的自上而下輸入。如圖2(c)所示,論文簡單地將其添加到值矩陣中,同時保持查詢和鍵不變,即,其中是自注意力模塊的常規自下而上輸入,是自上而下輸入。然后是對的常規自注意力。
3.2 自上而下注意力引導
給定一個預訓練transformer,TOAST隨機初始化一個自上而下的注意力模塊,并遵循兩階段流程:(i)在通用公共數據集(例如視覺的ImageNet或語言的OpenWebText)上預調整自上而下的注意力以獲得更好的初始化,(ii)在下游任務上調整自上而下的注意力。在兩階段中,論文凍結預訓練骨干網絡,僅調整自上而下的注意力模塊(圖2(a))。
預調整階段。由于自上而下的注意力模塊是隨機初始化的,因此直接在下游任務上調整可能會導致次優性能。為此,論文提出先在通用公共數據集(如ImageNet或OpenWebText)上預調整自上而下的注意力以獲得更好的初始化。在預調整過程中,除了常規的有監督或無監督損失之外,論文還添加了的變分損失,它鼓勵反饋路徑從輸出重構輸入,作為反饋權重的正則化。
調整階段。遷移到下游任務時,TOAST僅調整自上而下注意力模塊中的參數。在這種情況下,更新了大約15%的參數。論文注意到大多數可調參數來自反饋層,每個反饋層都包含一個矩陣,當特征維度d很高時,這個矩陣很大。為進一步提高參數效率,論文還提出了TOAST-Lite,它對反饋層應用LoRA。通過這種方式,調整的參數不到1%。論文通過經驗證明,盡管TOAST-Lite調整的參數比TOAST少得多,但在某些任務上的性能與TOAST相當,而在其他任務上略差。
4 TOAST中的注意力重新聚焦分析
從相似的角度,我們來解釋來為什么TOAST比其他基準模型性能優越。如圖3所示,對于鳥類分類,TOAST明確關注前景鳥,而其他方法要么具有關注噪聲,要么完全忽略前景對象。在汽車分類中,TOAST傾向于集中在車頭燈和徽標上,這有助于區分不同品牌的汽車,而其他方法具有更少可解釋性并且容易被噪聲干擾。
5 效果展示
語言生成效果展示:
6 結論
這項工作的靈感來自于經驗性觀察到以前的遷移學習方法通常無法關注與任務相關的信號,這可能導致下游任務的次優性能。論文展示了重新聚焦注意力方法是實現更好遷移學習性能的關鍵。論文提出了自上而下的注意力引導(TOAST),它通過將注意力引導到特定任務的特征來遷移到新任務。具體來說,TOAST凍結預訓練骨干網絡,并在下游任務上調整附加的自上而下注意力模塊以引導注意力。與以前的基線相比,TOAST能夠在細分類視覺分類以及指令遵循語言生成上實現最先進的結果,同時僅調整很小一部分參數。
前言
最近閱讀了一篇名為《TOAST:Transfer Learning via Attention Steering》的論文,論文中,作者使用了一個遷移學習模型,既可以實現圖像分類算法的遷移,又可以實現文本生成算法的遷移,令人振奮的是:這兩種遷移都展示了驚艷的效果。
1.遷移學習的概念
遷移學習是指在一個領域(源領域)學習到的知識,用來幫助另一個領域(目標領域)的學習,從而減少目標領域所需的數據量和訓練時間。
傳統的機器學習方法往往需要大量的數據和時間來從零開始學習,這樣既不高效也不靈活。相反,遷移學習可以借鑒已經存在的模型的能力,利用已有的相關知識,加速和優化新問題的解決。傳統機器學習方法和遷移學習方法對比如下圖所示。
img
(圖片來源:A Comprehensive Hands-on Guide to Transfer Learning with Real-World Applications in Deep Learning,Dipanjan (DJ) Sarkar)
2.遷移學習的分類
(1)根據源領域和目標領域之間的關系,分為同構遷移學習和異構遷移學習。
同構遷移學習是指源領域和目標領域具有相同的特征空間和標簽空間,只是數據分布不同。也就是說,它們的數據具有相同的屬性和類別,只是數據分布不同。例如,從一個圖像分類任務遷移到另一個圖像分類任務,如果它們都使用相同的像素值作為特征,且都有相同的類別標簽,那么就是同構遷移學習。同構遷移學習的主要挑戰是如何處理源領域和目標領域之間的概率分布差異,即如何處理數據之間分布的差異。
異構遷移學習是指源領域和目標領域具有不同的特征空間或標簽空間,或者兩者都不同。也就是說,它們的數據具有不同的屬性或類別。例如,從一個文本分類任務遷移到一個圖像分類任務,如果它們使用不同的特征表示方法,如詞向量和像素值,且有不同的類別標簽,那么就是異構遷移學習。異構遷移學習的主要挑戰是如何建立源領域和目標領域之間的特征映射或標簽對應關系,即處理不同數據之間的語義的差異。
(2)根據所要遷移的知識類型,分為基于實例的遷移學習、基于特征的遷移學習、基于模型的遷移學習、基于關系的遷移學習和基于對抗的遷移學習。
基于實例的遷移學習是指利用特定的權重調整策略,從源領域中選擇部分實例作為目標領域訓練集的補充的方法。這種方法的假設是源領域和目標領域中存在一部分相似或相關的實例,在這部分實例上,源領域和目標領域的數據分布是一致或接近的。這種方法通常適用于獨立同分布的數據,即每個數據點都是獨立生成的。這種方法的優點是方法簡單,容易實現;缺點是權重選擇與相似度的度量過于依賴經驗,且源域與目標域的數據分布往往不同。因此對差異稍大的數據集泛化能力較差。
基于特征的遷移學習是指尋找或構造一個共享的特征空間,使得源領域和目標領域在該空間中具有相似的數據分布,從而減少數據分布不匹配帶來的負面影響的方法。這種方法的假設是源領域和目標領域存在一部分公共的特征,在這部分公共特征上,源領域和目標領域的數據分布是一致或相近的。這種方法通常適用于領域適應,也就是源領域和目標領域具有相同的標簽空間,但是不同的特征空間或特征分布。例如,在文本分類中,可以利用詞嵌入或主題模型等方法,將不同語言或不同風格的文本映射到一個共享的語義空間中,從而進行跨語言或跨風格的文本分類。這種方法的優點是對大多數方法適用,效果好;缺點是難以求解,容易發生過擬合。
基于模型的遷移學習是指利用源領域已經訓練好的模型或參數來初始化或約束目標領域的模型,從而提高目標領域學習效果的方法。這種方法的假設是源領域和目標領域在模型層面有共同的知識,可以通過共享模型或參數來實現知識轉移。這種方法通常適用于任務遷移學習,也就是源領域和目標領域具有相同的特征空間和標簽空間,但是不同的任務。例如,在圖像分類中,可以利用在大規模數據集上預訓練好的卷積神經網絡模型,通過微調或剪枝等方法來適應新的圖像分類任務 。這種方法優點是可以充分利用模型之間存在的相似性;缺點是模型參數不易收斂。
基于關系的遷移學習是指利用源領域和目標領域之間的關系知識來進行知識遷移的方法。這種方法的假設是源領域和目標領域中,數據之間的聯系關系是相同或相似的,可以通過類比或推理等方式來實現知識轉移。這種方法通常適用于非獨立同分布的數據,即每個數據點都與其他數據點存在關聯。例如,在推薦系統中,可以利用用戶和物品之間的評分矩陣,將一個域中的用戶或物品映射到另一個域中,從而進行跨域推薦。這種方法的優點是可以處理源域和目標域之間分布差異較大的情況,可以處理類別不平衡的問題,并且對少量標注數據也能取得不錯的效果;缺點是需要構建類別之間的關系網絡,關系提取不準確會對遷移產生負面影響,計算關系網絡的空間和時間復雜度較高。
基于對抗的遷移學習是指利用生成對抗網絡(GAN)或其他對抗性技術來縮小源域和目標域之間的差異,從而提高目標域學習效果的方法。這種方法的假設是“為了有效的遷移,良好的表征應該是對主要學習任務的區別性,以及對源域和目標域的不加區分。”基于對抗性的深度遷移學習是指在生成對抗性網絡 (GAN)的啟發下,引入 對抗性技術 ,尋找既適用于源域又適用于目標域的可遷移表達。它基于這樣的假設:“為了有效的遷移,良好的表征應該是對主要學習任務的區別性,以及對源域和目標域的不加區分。”例如,在圖像轉換中,可以利用CycleGAN等方法,將一個域中的圖像風格轉換為另一個域中的圖像風格。這種方法的優點是可自動適應不同分布,無需目標域標注;缺點是訓練穩定性差,難以收斂,效果不穩定。
3.遷移學習的應用
為了幫助大家更好地理解遷移學習,這里舉了兩個常見的例子 ^ v ^
圖像分類:圖像分類是指根據圖像的內容,將其分為不同的類別,如貓、狗、飛機等。圖像分類是計算機視覺中的一個基本任務,但是對于一些特定的領域,如醫學圖像、衛星圖像等,可能沒有足夠的標注數據來訓練一個有效的分類器。這時,可以利用遷移學習,將一個在大規模通用數據集(如ImageNet)上訓練好的分類器,遷移到目標領域上,通過微調或者特征提取等方法,來提高目標領域的分類效果。例如,使用遷移學習將在ImageNet上訓練好的ResNet模型遷移到醫學圖像上,實現肺炎檢測、皮膚癌診斷等工作。
自然語言處理:自然語言處理(NLP)是指讓計算機理解和生成自然語言(如中文、英文等)的技術。NLP涉及很多子任務,如情感分析、機器翻譯、文本摘要等。由于不同的語言或者不同的領域(如新聞、社交媒體、法律等)有著不同的語法和語義規則,因此需要大量的數據來訓練一個通用的NLP模型。遷移學習可以幫助解決這個問題,通過將一個在大量文本上預訓練好的NLP模型(如BERT、GPT等),遷移到目標語言或者目標領域上,通過微調或者適配等方法,來提高目標任務的效果。例如,使用遷移學習將在英文文本上預訓練好的BERT模型遷移到中文文本上,實現命名實體識別、情感分析等任務。
4.遷移學習的常見模型
基于實例的遷移學習:TrAdaBoost1、BIW2等。
基于特征的遷移學習:TCA3、DAN4等。
基于模型的遷移學習:fine-tuning5、LwF等。
基于模型的遷移學習:GraphMix、MetaMIML等。
基于對抗的遷移學習:DANN、CycleGAN等。
5.遷移學習的優勢
遷移學習的主要優勢可歸納如下:
提高模型泛化能力:遷移學習通過從相關任務中獲取先驗知識,可以提高模型在目標任務上泛化的能力,避免從頭訓練。
減少標注數據依賴:遷移學習可以在目標任務標注數據不足時,利用源任務的知識提高模型性能,減少對大規模標注數據的依賴。
加速模型訓練:基于預訓練模型的遷移學習可以跳過模型初始化和預訓練過程,直接進行微調,大大加速模型的訓練。
提高性能上限:遷移學習通過引入外部信息,可以使模型超越僅從目標任務數據中學習的性能上限。
擴展模型應用范圍:遷移學習訓練出的模型可以超越源數據集和目標數據集,應用到更廣泛的領域。
更好引導特征學習:遷移學習可以更好地引導模型學習任務相關的特征表示,并抑制無關特征的負面影響。
6.算法實例詳解
下面,我將根據不同的模型分類,分別提供對應的代碼詳解。
6.1實例遷移
直接重用源域數據,可以對源域樣本進行重新加權,使其分布適應目標域。
#源域數據 source_data=[圖片數據] #目標域數據 target_data=[圖片數據] #計算源域數據在目標域中的權重 weights=compute_weight(source_data,target_data) #加權源域數據 weighted_source_data=[w*imgforw,imginzip(weights,source_data)] #合并源域和目標域數據進行訓練 combined_data=target_data+weighted_source_data
6.2特征遷移
使用源域模型提取特征,轉移到目標模型中。
#源域模型 source_model=pretrain_model() #固定源域模型參數 source_model.trainable=False #提取源域模型最后一層前的特征 target_features=source_model(target_data) #目標模型,將源域特征作為輸入 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)) #訓練 target_model.compile(optimizer='adam',loss='categorical_crossentropy') target_model.fit(target_features,target_labels)
6.3參數遷移
初始化目標模型的參數為源模型的參數。
#源域模型 source_model=pretrain_model() #目標模型,結構與源域模型相同 target_model=Model() #初始化目標模型的參數 target_model.set_weights(source_model.get_weights()) #訓練 target_model.compile(optimizer='adam',loss='categorical_crossentropy') target_model.fit(target_data,target_labels)
6.4關系遷移
建模源域和目標域之間的相關性,加入目標模型的損失函數中。
#源域數據 source_data=[圖片數據] #目標域數據 target_data=[圖片數據] #源域模型 source_model=Model() #目標模型 target_model=Model() #相關性損失 correlation_loss=compute_correlation_loss(source_model,target_model) #目標域損失 target_loss=compute_target_loss(target_model) #總損失 total_loss=target_loss+λ*correlation_loss #訓練 target_model.compile(loss=total_loss) target_model.fit(target_data,target_labels)
6.5模式遷移
在目標模型中加入正則項,使其學習到源模型的部分特征模式。
#源域模型 source_model=pretrain_model() #目標模型 target_model=Model() #定義模式正則項 pattern_reg=compute_pattern_reg(target_model,source_model) #目標域損失 target_loss=compute_target_loss(target_model) #總損失 total_loss=target_loss+λ*pattern_reg #訓練 target_model.compile(loss=total_loss) target_model.fit(target_data)
6.6多任務遷移
同時優化源域任務和目標域任務的損失。
#源域模型 source_model=Model() #源域數據 source_data=[圖片數據] #目標模型 target_model=Model() #目標域數據 target_data=[圖片數據] #源域任務損失 source_loss=compute_source_loss(source_model,source_data) #目標域任務損失 target_loss=compute_target_loss(target_model,target_data) #多任務損失 total_loss=source_loss+target_loss #訓練 model.compile(loss=total_loss) model.fit(source_data+target_data)
6.7對抗遷移
使用對抗訓練,使模型適應目標域。
#源域數據 source_data=[圖片數據] #目標域數據 target_data=[圖片數據] #特征提取器 feature_extractor=Model() #源域判別器 source_discriminator=Discriminator() #目標域判別器 target_discriminator=Discriminator() #對抗損失 adversarial_loss=compute_adversarial_loss(feature_extractor,source_discriminator)+compute_adversarial_loss(feature_extractor,target_discriminator) #訓練 model.compile(loss=adversarial_loss) model.fit(source_data+target_data)
7. 從圖像分類到目標檢測的實戰
最后,我用訓練好的ResNet50作為被遷移源對象,在其基礎上增加目標檢測模塊,之后在PASCAL VOC數據集進行訓練,實現目標檢測任務的遷移學習。
具體代碼如下:
importtensorflowastf fromtensorflow.keras.applicationsimportResNet50 fromtensorflow.keras.layersimportConv2D,Flatten,Dense #加載預訓練模型作為特征提取器 feature_extractor=ResNet50(weights='imagenet',include_top=False) #凍結預訓練模型所有層 forlayerinfeature_extractor.layers: layer.trainable=False #構建檢測模型 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個檢測目標 model=tf.keras.Model(inputs=inputs,outputs=predictions) #編譯模型 model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) #加載PASCALVOC數據并訓練 voc_data=#加載PASCALVOC數據集 model.fit(voc_data,voc_labels,epochs=5)
這里我們加載了在ImageNet上預訓練的ResNet50作為特征提取器,凍結了其權重不更新。然后在它之上構建了一個新的卷積和全連接層來進行目標分類。這樣通過遷移ResNet50提取的圖像特征,可以減少目標檢測模型對大量標注數據的需求。只需要小量樣本訓練全連接分類層即可。這種做法屬于遷移學習中的特征遷移和Fine Tuning技術,是目標檢測領域中非常常用的遷移學習實踐。
8.遷移學習的前景
多源遷移學習的探索:現有方法主要基于單一源域進行遷移,未來可研究如何有效集成多個源域的信息。
異構遷移學習的發展:研究如何在源域和目標域特征空間、分布差異大的情況下進行有效遷移。
遷移學習理論的完善:加強對遷移學習內在機理的理解,建立更統一完備的理論指導框架。
遷移學習算法的優化:提出更有效的遷移學習算法,縮小理論和實踐的差距。
9.文章總結
本文介紹了遷移學習的概念、分類、應用、模型、優勢、代碼示例、項目示例和發展前景。目前,遷移學習仍有很多值得探索的方向,未來它將推動人工智能技術向通用和自動化方向發展。最后,由于本人知識范圍有限,有疏漏之處,麻煩大家指出。
-
算法
+關注
關注
23文章
4629瀏覽量
93193 -
機器學習
+關注
關注
66文章
8438瀏覽量
132928 -
數據集
+關注
關注
4文章
1209瀏覽量
24793 -
遷移學習
+關注
關注
0文章
74瀏覽量
5575
原文標題:(收藏)一文搞定遷移學習!原理+分類+代碼+實戰全都有!
文章出處:【微信號:GiantPandaCV,微信公眾號:GiantPandaCV】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論