小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

2021年如何科學(xué)的“微調(diào)”預(yù)訓(xùn)練模型?

 520jefferson 2021-04-12

圖片
圖片

前言

筆者剛剛?cè)腴TNLP的時(shí)候,其實(shí)還和朋友們調(diào)侃過(guò)“attention is all you need'這么絕對(duì)的標(biāo)題也敢發(fā)出來(lái)?當(dāng)然似乎后來(lái)還有一個(gè)paper是“cnn is all you need”?但2021年,我再看深度學(xué)習(xí)領(lǐng)域,無(wú)論是自然語(yǔ)言處理、音頻信號(hào)處理、圖像處理、推薦系統(tǒng),似乎都看到attention混得風(fēng)生水起,只不過(guò)更多時(shí)候看到的是它的另一個(gè)代號(hào):Transformer。

我想大部分深度學(xué)習(xí)的同學(xué)除了在各大paper里看到Transformer,平常與Transformer打交道最多的時(shí)候,大概率都是在用一個(gè)叫做:HuggingFace/Transformers的Github代碼庫(kù)。用過(guò)的同志都說(shuō):真香。

那么我們用這個(gè)Transformers庫(kù)里的模型都是在干什么?歡迎大家評(píng)論、私聊筆者來(lái)探討你的用途。

我想大部分同學(xué)都是在“微調(diào)”(fine-tune)基于Transformers的“預(yù)訓(xùn)練“模型(比如BERT、Roberta),期望在自己的任務(wù)上(比如閱讀理解、實(shí)體識(shí)別、情感分類)取得新的SOTA吧?當(dāng)然也有少數(shù)土豪朋友們在不斷訓(xùn)練出新的“預(yù)訓(xùn)練“模型,幫助蒼生,提高SOTA。

那么如何科學(xué)的“微調(diào)”“預(yù)訓(xùn)練模型”自然而然便成為了一個(gè)重要的研究課題/方向/必備知識(shí)啦。

圖片
圖片

什么是“微調(diào)”Fine-tune?

為了講清楚今天的話題,首先得和讀者朋友們對(duì)齊一下背景知識(shí),即什么是“微調(diào)”?如果讀者朋友看章節(jié)題目就明白了,可以直接跳到下一章節(jié)繼續(xù)閱讀。

圖片

圖1 引用動(dòng)手學(xué)深度學(xué)習(xí)中的Fine-tune示意圖

“微調(diào)”這個(gè)詞并不是NLP的專用名詞,早在CV起飛的年代,“微調(diào)”就已經(jīng)被廣泛使用了,當(dāng)時(shí)將深度學(xué)習(xí)模型在ImageNet上預(yù)訓(xùn)練,然后在自己的任務(wù)上“微調(diào)”模型的部分參數(shù),便是當(dāng)年CV模型訓(xùn)練的常規(guī)方法。

“微調(diào)”/fine-tune通常指:一種深度學(xué)習(xí)模型的訓(xùn)練方式/步驟。

  1. 如圖1左邊所示,假設(shè)我們有一個(gè)Source model(左邊淺藍(lán)色框的Layer組成),先在Source data上進(jìn)行訓(xùn)練(Pre-train,預(yù)訓(xùn)練)。

  2. 如圖1右邊所示,假設(shè)我們還有一個(gè)Target model (右邊淺藍(lán)色框的Layer+深藍(lán)色的Output Layer組成)。

  3. Target model的淺藍(lán)色框Layer和Source model一樣,意味著可以直接復(fù)制Source model中訓(xùn)練好的模型參數(shù)。

  4. 而右邊的深藍(lán)色Output Layer左邊淺藍(lán)色Output Layer其實(shí)有兩種可能:

  5. A、如圖中所示,不相同,意味著Target model的任務(wù)類型/目標(biāo)類型與Source model不一致;

    B、圖中未展示,相同,意味著Target model的任務(wù)類型/目標(biāo)類型與Source model一致;

  6. 如果是情況A,那么Output Layer只能隨機(jī)初始化,意味著在Target data上需要一定的樣本,才能將Target model中的Output Layer訓(xùn)練好。

    當(dāng)然我們可以固定淺藍(lán)色的Layer 1-Layer L - 1,也可以微調(diào)這些Layers。

  7. 如果是情況B,那么Target model和Source model完全一樣,意味著在Target data上即使沒(méi)有任何樣本,Target model也是可以直接使用的(zero-shot,當(dāng)然效果可能不好),也可以在Target data上將Target model中的部分/全部參數(shù)進(jìn)行“微調(diào)”。

所以“微調(diào)”也像字面意思一樣,對(duì)模型參數(shù)“微微”調(diào)整。

如果是隨機(jī)初始化并從頭開(kāi)始訓(xùn)練網(wǎng)絡(luò)則!=“微調(diào)”。


因此常規(guī)的“微調(diào)”通常也使用更小的learning rate對(duì)模型進(jìn)行訓(xùn)練。

上面的“微調(diào)”示意圖也告訴我們,任何模型結(jié)構(gòu)都可以進(jìn)行微調(diào),包括不限于:Transformer、CNN、LSTM等。

圖片
圖片

預(yù)訓(xùn)練模型和常見(jiàn)NLP訓(xùn)練任務(wù)

如圖1所示,只要Target model中的全部/部分參數(shù)在見(jiàn)到Target data之前被訓(xùn)練過(guò),其實(shí)都可以叫做“預(yù)訓(xùn)練”。

預(yù)訓(xùn)練方法包括但不限于:語(yǔ)言模型無(wú)監(jiān)督預(yù)訓(xùn)練(BERT),目標(biāo)類似的其他數(shù)據(jù)集預(yù)訓(xùn)練,目標(biāo)不類似但相關(guān)的其他數(shù)據(jù)集預(yù)訓(xùn)練等。

NLP里常見(jiàn)的訓(xùn)練目標(biāo):句子分類、句子相似判斷、實(shí)體識(shí)別、閱讀理解(start、end token預(yù)測(cè))、語(yǔ)言模型等。

由于訓(xùn)練目標(biāo)不同,往往Output Layer參數(shù)的維度也不同。


假設(shè)進(jìn)入Output Layer層的維度是H,那么句子2分類就是Hx2,實(shí)體10分類就是Hx10,這也是Output Layer在不同的目標(biāo)上能否復(fù)用的原因。畢竟,一個(gè)Hx10維的矩 != Hx2的矩陣。

圖片

圖2 幾個(gè)常見(jiàn)的NLP訓(xùn)練目標(biāo),不同任務(wù)往往有著不同的output layer

學(xué)習(xí)了什么是“微調(diào)”,什么是“預(yù)訓(xùn)練”之后,我們來(lái)看看近些年“微調(diào)”預(yù)訓(xùn)練的方法都有哪些。

圖片
圖片

“微調(diào)”預(yù)訓(xùn)練模型

我們知道微調(diào)的時(shí)候存在兩種情況:預(yù)訓(xùn)練任務(wù)和目標(biāo)任務(wù)相同、不相同。

我們也知道常見(jiàn)的預(yù)訓(xùn)練可以有這么幾種情況:

  1. 無(wú)監(jiān)督+大規(guī)模數(shù)據(jù)預(yù)訓(xùn)練(例如BERT、Roberta、XLNet等);

  2. 無(wú)監(jiān)督+domian數(shù)據(jù)預(yù)訓(xùn)練(例如我們要對(duì)wikipedia的數(shù)據(jù)做問(wèn)答,那可以先用wikipedia的數(shù)據(jù)預(yù)訓(xùn)練一下模型);

  3. 有監(jiān)督+相似任務(wù)預(yù)訓(xùn)練(例如我們要對(duì)句子做2分類,那么我們可以先用短語(yǔ)2分類、文檔2分類的數(shù)據(jù)進(jìn)行預(yù)訓(xùn)練);

  4. 有監(jiān)督+相關(guān)數(shù)據(jù)/任務(wù)預(yù)訓(xùn)練(例如我們要對(duì)數(shù)據(jù)X做句法分析,由于這個(gè)數(shù)據(jù)X同時(shí)還標(biāo)注實(shí)體,那么我們可以用實(shí)體標(biāo)注進(jìn)行預(yù)訓(xùn)練);

  5. 多任務(wù)學(xué)習(xí) ,多任務(wù)學(xué)習(xí)進(jìn)行預(yù)訓(xùn)練的常規(guī)方法是:將多個(gè)相關(guān)的有監(jiān)督/無(wú)監(jiān)督任務(wù)放在一起對(duì)模型參數(shù)進(jìn)行預(yù)訓(xùn)練。關(guān)于多任務(wù)學(xué)習(xí),讀者可以參考我前面寫的文章。

于是我們得到了這樣一張表格:每一列我們都可以選1個(gè)或者多個(gè)任務(wù)進(jìn)行預(yù)訓(xùn)練,看著這個(gè)表格應(yīng)該可以想到各種花式預(yù)訓(xùn)練排列組合啦吧哈哈哈。

如何微調(diào)預(yù)訓(xùn)練模型

A 目標(biāo)任

務(wù)相同

B 目標(biāo)任

務(wù)不相同

1 無(wú)監(jiān)督+大規(guī)模數(shù)據(jù)預(yù)訓(xùn)練yesyes
2 無(wú)監(jiān)督+domain數(shù)據(jù)預(yù)訓(xùn)練yesyes
3 有監(jiān)督+相似任務(wù)預(yù)訓(xùn)練yesno
4 有監(jiān)督+相關(guān)數(shù)據(jù)/任務(wù)預(yù)訓(xùn)練yesyes
5 多任務(wù)學(xué)習(xí)yesyes

這么多花式組合就不一一介紹了,下面終點(diǎn)介紹幾種最常用的組合吧:

圖片

圖3 最常用的Fine-tune:1B(BERT)+ 目標(biāo)任務(wù)(例如句子情感分類)

1B的含義:1無(wú)監(jiān)督+大規(guī)模數(shù)據(jù)預(yù)訓(xùn)練,B目標(biāo)任務(wù)和預(yù)訓(xùn)練任務(wù)不同。

圖3展示了最常用的“微調(diào)”預(yù)訓(xùn)練模型的方法,通俗的講就是:我們拿一個(gè)在大規(guī)模數(shù)據(jù)上訓(xùn)練好的BERT過(guò)來(lái),直接在BERt上添加一個(gè)Task-specific的Head/網(wǎng)絡(luò)層,然后在自己的數(shù)據(jù)集上稍加訓(xùn)練一下,得到新模型,跑出新SOTA。

圖片

圖4  Adaptive Fine-tune:1B+2B+目標(biāo)任務(wù)

圖4是圖3的一個(gè)加強(qiáng)版本,通俗的講:假設(shè)我們要對(duì)Wikipedia的問(wèn)題做閱讀理解,由于大部分大規(guī)模預(yù)訓(xùn)練模型并不只用wikipedia作為訓(xùn)練數(shù)據(jù),所以數(shù)據(jù)分布與wikipedia存在一定的差異,因此我們先在wikipedia數(shù)據(jù)上跑一下語(yǔ)言模型預(yù)訓(xùn)練,再對(duì)wikipedia數(shù)據(jù)上的問(wèn)答數(shù)據(jù)進(jìn)行訓(xùn)練。就像一個(gè)全能的新員工,咱們先帶著參觀一下工位、水吧、食堂,再開(kāi)始訓(xùn)練干活唄。

圖片

圖5: Behavior Fine-tune:1B+3A+目標(biāo)任務(wù)

圖5和圖4有一定的區(qū)別,還是以BERT為例,先將BERT+output layer在相關(guān)任務(wù)上預(yù)訓(xùn)練一下,再上在目標(biāo)任務(wù)上進(jìn)行訓(xùn)練。這種情況常常存在于:目標(biāo)任務(wù)的數(shù)據(jù)十分少,并且我們隨機(jī)初始化了一個(gè)output layer。

那么這個(gè)output layer十分不容易被訓(xùn)好,并且參數(shù)量大大的BERT也十分容易過(guò)擬合小數(shù)據(jù)集,因此效果很糟糕,那么我們先找點(diǎn)相關(guān)/相似的任務(wù),把BERT和output layer朝我們想要的方向調(diào)整調(diào)整,再對(duì)目標(biāo)任務(wù)進(jìn)行訓(xùn)練。

圖片

圖6: prefix fine-tune:1A+目標(biāo)任務(wù)

圖6是一種非常有趣的預(yù)訓(xùn)練+finetune的方式。也是2020/2021開(kāi)始熱起來(lái)的一種。

意思是:我們給預(yù)訓(xùn)練模型一點(diǎn)prefix/prompt(提示),讓模型通過(guò)這個(gè)prefix來(lái)區(qū)分不同的任務(wù),同時(shí)我們又將目標(biāo)任務(wù)改造成預(yù)訓(xùn)練模型一樣的目標(biāo)(比如將分類問(wèn)題轉(zhuǎn)化為seq2seq問(wèn)題)。


由于預(yù)訓(xùn)練目標(biāo)和最終目標(biāo)一致,那么我們可以不需要新的數(shù)據(jù)就可以進(jìn)行預(yù)測(cè),同時(shí)也可以使用更多的數(shù)據(jù)進(jìn)行fine-tune。

舉個(gè)例子:

圖片

圖7 目標(biāo)任務(wù)改造成預(yù)訓(xùn)練任務(wù)

如圖7所示,我們的目標(biāo)任務(wù)是:通過(guò)閱讀Passage,然后對(duì)Question做二分類判斷(yes/no);那么我們可以將這個(gè)任務(wù)改造成一個(gè)seq2seq的MLM任務(wù)。

passage(綠色)+ prefix/prompt(紅色)+Qeustion(藍(lán)色)+MASKED(黃色)。MASKED詞庫(kù)包含yes/no。

因此自然而然,原先的分類任務(wù)就變成了一個(gè)Mask Language Model啦。so far so cool!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多