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

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

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

Adapter在finetune全模型參數(shù)的效果

深度學(xué)習(xí)自然語言處理 ? 來源:NLP日志 ? 作者:NLP日志 ? 2022-08-24 16:19 ? 次閱讀

1 簡介

目前在大規(guī)模預(yù)訓(xùn)練模型上進(jìn)行finetune是NLP中一種高效的遷移方法,但是對于眾多的下游任務(wù)而言,finetune是一種低效的參數(shù)更新方式,對于每一個下游任務(wù),都需要去更新語言模型的全部參數(shù),這需要龐大的訓(xùn)練資源。進(jìn)而,人們會嘗試固定語言預(yù)訓(xùn)練模型大部分網(wǎng)絡(luò)的參數(shù),針對下游任務(wù)只更新一部分語言模型參數(shù)。大部分情況下都是只更新模型最后幾層的參數(shù),但是我們知道語言模型的不同位置的網(wǎng)絡(luò)聚焦于不同的特征,針對具體任務(wù)中只更新高層網(wǎng)絡(luò)參數(shù)的方式在不少情形遭遇到精度的急劇下降。

在這個篇章介紹的Adapter會針對每個下游任務(wù)在語言模型的每層transformer中新增2個帶有少量參數(shù)的模塊,稱之為adapter,針對下游任務(wù)訓(xùn)練時只更新adapter模塊參數(shù),而凍結(jié)原有語言模型的參數(shù),從而實現(xiàn)將強(qiáng)大的大規(guī)模語言模型的能力高效遷移到諸多下游任務(wù)中去,同時保證模型在下游任務(wù)的性能。

2 Adapter

Adapter的結(jié)構(gòu)一目了然,transformer的每層網(wǎng)絡(luò)包含兩個主要的子模塊,一個attention多頭注意力層跟一個feedforward層,這兩個子模塊后續(xù)都緊隨一個projection操作,將特征大小映射回原本的輸入的維度,然后連同skip connection的結(jié)果一同輸入layer normalization層。而adapter直接應(yīng)用到這兩個子模塊的輸出經(jīng)過projection操作后,并在skip-connection操作之前,進(jìn)而可以將adapter的輸入跟輸出保持同樣的維度,所以輸出結(jié)果直接傳遞到后續(xù)的網(wǎng)絡(luò)層,不需要做更多的修改。每層transformer都會被插入兩個adapter模塊。

9c08b63c-22c5-11ed-ba43-dac502259ad0.png

圖1: Adapter框架

下面我們來看看adapter的具體結(jié)構(gòu),首先通過一個feedforward down-project的矩陣乘法將特征維度降到一個更低的水平,然后通過一個非線形層,再利用一個feedforward up-project層將特征維度升到跟輸入一樣的水平,同時通過一個skip connection來將adpter的輸入重新加到最終的輸出中去,這樣可以保證保證即便adapter一開始的參數(shù)初始化接近0,adapter也有由于skip connection的設(shè)置而初始化接近于一個恒等映射,從而保證訓(xùn)練的有效性。

至于adapter引進(jìn)的模型參數(shù),假設(shè)adapter的輸入的特征維度是d,而中間的特征維度是m,那么新增的模型參數(shù)有:down-project的參數(shù)d*m+m,up_project的參數(shù)m*d+d,總共2md+m+d,由于m遠(yuǎn)小于d,所以真實情況下,一般新增的模型參數(shù)都只占語言模型全部參數(shù)量的0.5%~8%。同時要注意到,針對下游任務(wù)訓(xùn)練需要更新的參數(shù)除了adapter引入的模型參數(shù)外,還有adapter層后面緊隨著的layer normalization層參數(shù)需要更新,每個layer normalization層只有均值跟方差需要更新,所以需要更新的參數(shù)是2d。(由于插入了具體任務(wù)的adapter模塊,所以輸入的均值跟方差發(fā)生了變化,就需要重新訓(xùn)練)

通過實驗,可以發(fā)現(xiàn)只訓(xùn)練少量參數(shù)的adapter方法的效果可以媲美finetune語言模型全部參數(shù)的傳統(tǒng)做法,這也驗證了adapter是一種高效的參數(shù)訓(xùn)練方法,可以快速將語言模型的能力遷移到下游任務(wù)中去。同時,可以看到不同數(shù)據(jù)集上adapter最佳的中間層特征維度m不盡相同。

9c1c65d8-22c5-11ed-ba43-dac502259ad0.png

圖2: adapter跟finetune的效果對比

為了進(jìn)一步探究adapter的參數(shù)效率跟模型性能的關(guān)系,論文做了進(jìn)一步的實驗,同時比對了finetune的方式(只更新最后幾層的參數(shù)或者只更新layer normalization的參數(shù)),從結(jié)果可以看出adapter是一種更加高效的參數(shù)更新方式,同時效果也非??捎^,通過引入0.5%~5%的模型參數(shù)可以達(dá)到不落后先進(jìn)模型1%的性能。

9cb4a0d2-22c5-11ed-ba43-dac502259ad0.png

圖3:adapter跟finetune的效率對比

3Adapter fusion

這是一種融合多任務(wù)信息的adapter的變種,首先看下它的任務(wù)背景。假設(shè)C是N個分類任務(wù)的集合,這些分類任務(wù)的監(jiān)督數(shù)據(jù)的大小跟損失函數(shù)不盡相同。C={(D1, L1), …, (DN, LN)},其中D是標(biāo)注數(shù)據(jù),L是損失函數(shù),我們的任務(wù)是通過這N個任務(wù)加上某個任務(wù)m的數(shù)據(jù)跟損失函數(shù)(Dm, Lm)去提升這個特定任務(wù)m的效果。如圖所示,就是期望先從N個任務(wù)中學(xué)到一個模型參數(shù)(最右邊參數(shù)),然后利用該參數(shù)來學(xué)習(xí)特定任務(wù)m下的一個模型參數(shù)(最左邊參數(shù))。

9cec5e8c-22c5-11ed-ba43-dac502259ad0.png

圖4:學(xué)習(xí)目標(biāo)

為了實現(xiàn)這個目標(biāo),adapter fusion提出一個兩階段的學(xué)習(xí)策略,其中第一階段是knowledge extraction stage,在不同任務(wù)下引入各自的adapter模塊,用于學(xué)習(xí)特定任務(wù)的信息,而第二階段是knowledge composition step,用于學(xué)習(xí)聚合多個任務(wù)的adapter。

對于第一階段有兩種訓(xùn)練方式,分別如下:

a)Single-Task Adapters(ST-A)

對于N個任務(wù),模型都分別獨立進(jìn)行優(yōu)化,各個任務(wù)之間互不干擾,互不影響。對于其中第n個任務(wù)而言,相應(yīng)的目標(biāo)函數(shù)如下圖所示,其中最右邊兩個參數(shù)分別代表語言模型的模型參數(shù)跟特定任務(wù)需要引入的adapter參數(shù)。

9cf51ebe-22c5-11ed-ba43-dac502259ad0.png

圖5:ST-A目標(biāo)函數(shù)

b)Multi-Task Adapters(MT-A)

N個任務(wù)通過多任務(wù)學(xué)習(xí)的方式,進(jìn)行聯(lián)合優(yōu)化,相應(yīng)的目標(biāo)函數(shù)如下。

9d014a40-22c5-11ed-ba43-dac502259ad0.png

圖6:MT-A目標(biāo)函數(shù)

對于第二階段,就是adapter fusion大展身手的時候了。為了避免通過引入特定任務(wù)參數(shù)而帶來的災(zāi)難性遺忘問題,adapter fusion提出了一個共享多任務(wù)信息的結(jié)構(gòu)。針對特定任務(wù)m,adapter fusion聯(lián)合了第一階段訓(xùn)練的到的N個adapter信息。固定語言模型的參數(shù)跟N個adapter的參數(shù),新引入adapter fusion的參數(shù),目標(biāo)函數(shù)也是學(xué)習(xí)針對特定任務(wù)m的adapter fusion的參數(shù)。

9d16e7ba-22c5-11ed-ba43-dac502259ad0.png

圖7:adapter fusion的目標(biāo)函數(shù)

Adapter fusion的具體結(jié)構(gòu)就是一個attention,它的參數(shù)包括query,key, value的矩陣參數(shù),在transformer的每一層都存在,它的query是transformer每個子模塊的輸出結(jié)果,它的key跟value則是N個任務(wù)的adapter的輸出。通過adapter fusion,模型可以為不同的任務(wù)對應(yīng)的adapter分配不同的權(quán)重,聚合N個任務(wù)的信息,從而為特定任務(wù)輸出更合適的結(jié)果。

9d29189a-22c5-11ed-ba43-dac502259ad0.png

圖8:adapter fusion結(jié)構(gòu)

通過實驗,可以看到第一階段采用ST-A+第二階段adapter fusion是最有效的方法,在多個數(shù)據(jù)集上的平均效果達(dá)到了最佳。關(guān)于MT-A+adapter fusion沒有取得最佳的效果,在于第一階段其實已經(jīng)聯(lián)合了多個任務(wù)的信息了,所以adapter fusion的作用沒有那么明顯,同時MT-A這種多任務(wù)聯(lián)合訓(xùn)練的方式需要投入較多的成本,并不算一種高效的參數(shù)更新方式。另外,ST-A的方法在多個任務(wù)上都有提升,但是MT-A的方法則不然,這也表明了MT-A雖然可以學(xué)習(xí)到一個通用的表征,但是由于不同任務(wù)的差異性,很難保證在所有任務(wù)上都取得最優(yōu)的效果。

9d674bc4-22c5-11ed-ba43-dac502259ad0.png

圖9:adapter fusion實驗結(jié)果

4 總結(jié)

Fusion是一種高效的參數(shù)更新方式,能在引入少量參數(shù),只訓(xùn)練少量參數(shù)的情況下達(dá)到媲美finetune全模型參數(shù)的效果,只訓(xùn)練少量參數(shù)也意味著對訓(xùn)練數(shù)據(jù)量更低的要求以及更快的訓(xùn)練速度,是一種將大規(guī)模預(yù)訓(xùn)練語言模型能力遷移到下游任務(wù)的高效方案,跟目前火熱的prompt learning有異曲同工之妙。而adapter fusion則跟MOE很像,可以聯(lián)合多個任務(wù)的信息,從而提升特定任務(wù)的性能。但相比于其他的parameter-efficient的方法,adapter是在原語言模型上加入了新的模塊,在推理時會進(jìn)一步增加延遲。

審核編輯:彭靜

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

    關(guān)注

    3

    文章

    4256

    瀏覽量

    62223
  • Adapter
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    7646
  • 訓(xùn)練模型
    +關(guān)注

    關(guān)注

    1

    文章

    35

    瀏覽量

    3794

原文標(biāo)題:Parameter-efficient transfer learning系列之Adapter

文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    tcpip_adapter_start_api 函數(shù)的功能是什么?

    #define TCPIP_ADAPTER_IPC_CALL(_if, _mac, _ip, _data, _fn) do { tcpip_adapter_api_msg_t msg
    發(fā)表于 06-26 07:08

    轎車參數(shù)化分析模型的構(gòu)造研究及應(yīng)用

    的分析方法的具體實現(xiàn)在結(jié)合開發(fā)過程特點的基礎(chǔ)上提出分析用的參數(shù)化簡化模型和概念設(shè)計階段的車身開發(fā)平臺利用高效的分析模型和統(tǒng)一的開發(fā)環(huán)境加快車身早期開發(fā)過程本文充分研究國外早期車身開發(fā)
    發(fā)表于 04-16 13:40

    Pytorch模型訓(xùn)練實用PDF教程【中文】

    本教程以實際應(yīng)用、工程開發(fā)為目的,著重介紹模型訓(xùn)練過程中遇到的實際問題和方法。機(jī)器學(xué)習(xí)模型開發(fā)中,主要涉及三大部分,分別是數(shù)據(jù)、模型和損失函數(shù)及優(yōu)化器。本文也按順序的依次介紹數(shù)據(jù)、
    發(fā)表于 12-21 09:18

    adapter模式是如何去定義的

    adapter模式定義adapter 將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口。使用場景,兩個類所做的事情相同或者相似,但是具有不同的接口時要使用它。target這是客戶所期望的接口,目標(biāo)可以
    發(fā)表于 01-03 06:54

    志V853 NPU 轉(zhuǎn)換 YOLO V3 模型

    志V853開發(fā)板購買鏈接:KFB-V853_Allwinner的KFB-V853_KFB-V853[參數(shù) 價格 pdf 中文資料]_華秋商城NPU 轉(zhuǎn)換 YOLO V3 模型YOLO 全稱
    發(fā)表于 12-19 10:36

    不能同時使用lpuart_adapter和uart_adapter嗎?

    與 RS485 收發(fā)器一起使用。 過去,我已經(jīng)編寫了一個簡單的代碼來使用 uart_adapter 通過帶有緩沖區(qū)機(jī)制的 UART 發(fā)送和獲取字節(jié)。然后 MCUExpresso 上, SDK 組件上,我添加
    發(fā)表于 03-24 07:36

    TOOLSTICK DEBUG ADAPTER USER’S

    TOOLSTICK DEBUG ADAPTER USER’S GUIDE:To enable development, the ToolStick Base Adapter and daughter
    發(fā)表于 09-09 12:39 ?6次下載

    什么是Host bus adapter

    什么是Host bus adapter  英文縮寫: Host bus adapter 中文譯名: 主機(jī)總線適配器 分  類: 網(wǎng)絡(luò)與交換 解  釋:
    發(fā)表于 02-23 10:03 ?1260次閱讀

    參數(shù)域邊界平直化的模型表面參數(shù)化方法

    別使用文中方法和已有參數(shù)化方法進(jìn)行比較。使用缺省參數(shù)情況下,文中方法面積和角度扭曲都處于合理范圍將不同參數(shù)化方法得到的帶紋理模型簡化到相同
    發(fā)表于 04-27 14:19 ?7次下載
    <b class='flag-5'>參數(shù)</b>域邊界平直化的<b class='flag-5'>模型</b>表面<b class='flag-5'>參數(shù)</b>化方法

    如何實現(xiàn)更綠色、經(jīng)濟(jì)的NLP預(yù)訓(xùn)練模型遷移

    NLP中,預(yù)訓(xùn)練大模型Finetune是一種非常常見的解決問題的范式。利用在海量文本上預(yù)訓(xùn)練得到的Bert、GPT等模型,在下游不同任務(wù)上分別進(jìn)行finetune,得到下游任務(wù)的
    的頭像 發(fā)表于 03-21 15:33 ?2130次閱讀

    遷移學(xué)習(xí)Finetune的四種類型招式

    遷移學(xué)習(xí)廣泛地應(yīng)用于NLP、CV等各種領(lǐng)域,通過源域數(shù)據(jù)上學(xué)習(xí)知識,再遷移到下游其他目標(biāo)任務(wù)上,提升目標(biāo)任務(wù)上的效果。其中,Pretrain-Finetune(預(yù)訓(xùn)練+精調(diào))模式是最為常見的一種
    的頭像 發(fā)表于 04-02 17:35 ?3053次閱讀

    微調(diào)前給預(yù)訓(xùn)練模型參數(shù)增加噪音提高效果的方法

    為了減輕上述問題,提出了NoisyTune方法,即,finetune前加入給預(yù)訓(xùn)練模型參數(shù)增加少量噪音,給原始模型增加一些擾動,從而提高
    的頭像 發(fā)表于 06-07 09:57 ?2402次閱讀

    變壓器參數(shù)模型射頻電路中的作用

    得到變壓器模型后,可直接在UltraEM?的高速三維波仿真引擎仿真提取S參數(shù)。以設(shè)計的工作區(qū)間0.8GHz-2GHz之間的變壓器為例,參數(shù)
    的頭像 發(fā)表于 07-08 09:34 ?1219次閱讀

    從統(tǒng)一視角看各類高效finetune方法實現(xiàn)最優(yōu)tuning框架設(shè)計

    降維進(jìn)一步縮小參數(shù)量,經(jīng)過內(nèi)部的NN后再將維度還原,形成一種bottleneck的結(jié)構(gòu)。finetune過程中,原預(yù)訓(xùn)練Bert模型參數(shù)
    的頭像 發(fā)表于 11-29 11:13 ?3344次閱讀

    百度千帆大模型2.0一天可跑通大模型效果驗證

    百度千帆大模型2.0一天可跑通大模型效果驗證 今天的2023百度云智大會上,百度智能云宣布千帆大模型平臺2.0全面升級,百度千帆大模型2.0
    的頭像 發(fā)表于 09-05 16:17 ?920次閱讀