老板让我用少量样本 finetune 模型,我还有救吗?急急急,在线等!
文 | ????????????????
編 | 王蘇
今天介紹的是一篇 NAACL'21 新鮮出爐的工作!NAACL 上周四出的結(jié)果,這篇工作本周一上傳 arxiv,周二被王蘇小哥哥發(fā)現(xiàn),周三拜讀了一下,今天就來(lái)和大家分享啦!!
給大家提個(gè)問(wèn)題:如果訓(xùn)練樣本只有幾百條,這時(shí)候我們?cè)撛趺崔k呢?
傳統(tǒng)的 RNN 在這個(gè)樣本大小下很難被訓(xùn)練好,自然地,我們會(huì)想到使用預(yù)訓(xùn)練模型,在其基礎(chǔ)上進(jìn)行 finetune。具體來(lái)講,就是將預(yù)訓(xùn)練模型作為模型的底層,在上面添加與當(dāng)前任務(wù)特點(diǎn)相關(guān)的網(wǎng)絡(luò)結(jié)構(gòu)。這樣就引入了預(yù)訓(xùn)練的知識(shí),對(duì)當(dāng)前任務(wù)能產(chǎn)生很大的幫助。
除了預(yù)訓(xùn)練的知識(shí),是不是還有其他的信息我們沒(méi)有用上呢?近年來(lái),越來(lái)越多的人在使用另一種 finetune 方法,即結(jié)合具體場(chǎng)景,設(shè)計(jì)新的 finetune 任務(wù)形式,從而將與當(dāng)前任務(wù)相關(guān)的提示信息(prompt)引入模型。我們大名鼎鼎的 GPT 系列就是這么干的。比如我們拿 GPT3 做 QA 的 finetune,直接喂給他一串“Question:問(wèn)題內(nèi)容 Answer:”,剩下的答案部分就讓 GPT3 自己填完。
這類 finetune 技巧雖然陸續(xù)被使用,但并沒(méi)有人論證:這種做法相比于傳統(tǒng)的 finetune 方法,真的能帶來(lái)提升嗎?如果答案是肯定的,那么究竟能提升多少呢(能否量化這種提升)?
今天這篇來(lái)自 Huggingface 的文章就填補(bǔ)了上述兩個(gè)問(wèn)題的答案。他們通過(guò)大量實(shí)驗(yàn)證明:引入提示信息和多標(biāo)注幾百條數(shù)據(jù)帶來(lái)的性能提升是相當(dāng)?shù)?/strong>!所以,下次老板只給少量樣本,就要你 finetune 模型——不要慌!我們今天又多學(xué)了一個(gè) trick!
論文題目:
How Many Data Points is a Prompt Worth?
論文鏈接:
https://arxiv.org/abs/2103.08493
Arxiv訪問(wèn)慢的小伙伴也可以在 【夕小瑤的賣萌屋】訂閱號(hào)后臺(tái)回復(fù)關(guān)鍵詞 【0318】 下載論文PDF~
方法
前文提到,這一類 finetune 是將任務(wù)對(duì)應(yīng)的輸入改寫成新的完形填空格式,讓模型預(yù)測(cè) <MASK> 部分的詞,作為抽取任務(wù)的答案或者生成任務(wù)的結(jié)果。這種方法不需要改變模型結(jié)構(gòu)、沒(méi)有額外的參數(shù),簡(jiǎn)直不要太方便!
引入描述集合
本文對(duì)這類方法進(jìn)行了進(jìn)一步簡(jiǎn)化:不要求 <MASK> 處生成任意的文本,而是只需要完成類似于有選項(xiàng)的完形填空任務(wù)。這里的選項(xiàng)是固定的幾個(gè)詞,我們稱之為描述集合(verbalizer),不同任務(wù)會(huì)有不同的描述集合。
比如,對(duì)于判斷題的閱讀理解任務(wù),就可以將閱讀文本、問(wèn)題和 <MASK> 拼接,讓預(yù)訓(xùn)練模型直接預(yù)測(cè) <MASK> 屬于描述集合 {yes, no} 中的哪一種描述:
小明天天碼代碼碼到天明 [SEP] 小明有女朋友嗎? <MASK>
其中前半部分是閱讀文本,后面加粗的部分是問(wèn)題。模型只需要判斷 <MASK> 屬于描述集合 {yes, no} 中的哪一種。
可能讀到這里,大家會(huì)疑惑:直接拼起來(lái)搞一個(gè) True / False 的二分類不就好了嘛,何必讓模型填空呢?嘿嘿,這恰好是作者的用意:通過(guò)讓模型填空,模型可以習(xí)得描述集合中標(biāo)簽文本的語(yǔ)義信息。
引入提示信息
直接拼接是最樸素的,但這能讓模型知道自己在做什么任務(wù)嘛?為此,作者引入了提示信息(prompt)。
還是判斷題的閱讀理解任務(wù),對(duì)文章 和問(wèn)題 ,作者將他們與一些固定的詞進(jìn)行整合,以此輸入模型,讓模型預(yù)測(cè) <MASK> 。作者提出了三種整合方式:
沒(méi)錯(cuò),就是這么簡(jiǎn)單!這些固定的詞作為提示信息,讓模型了解當(dāng)前在做的任務(wù);同時(shí),提示詞文本的含義也對(duì)于模型的理解產(chǎn)生了一定的幫助。
除了單選閱讀理解,這篇文章還關(guān)注了文本蘊(yùn)含、多選閱讀理解、指代銷歧等共六個(gè)任務(wù)。對(duì)于不同的任務(wù),有不同的提示信息與輸入格式:
對(duì)于文本蘊(yùn)含任務(wù),可以將前提 (premise, ) 與假設(shè) (hyphothesis, ) 通過(guò)提示信息整合,作者提出了兩種整合方式:
這樣就只需要讓模型預(yù)測(cè) <MASK> 屬于描述集合 {yes, no, maybe} 中的哪一種,以此判斷前提能否支撐假設(shè)。
對(duì)于指代銷歧任務(wù),可以將句子 、帶標(biāo)記的介詞 與名詞 通過(guò)提示信息整合:
這樣就只需要讓模型預(yù)測(cè) <MASK> ,以此判斷介詞是否指代名詞。這里的描述集合是不受限制的,即讓模型在 <MASK> 處預(yù)測(cè)指代的名詞 。
其他任務(wù)也采用類似的整合方式,感興趣可以參考原文~
實(shí)驗(yàn)
作者發(fā)現(xiàn),這種使用提示信息的整合方式,在低資源的情況下對(duì)模型性能有非常大的提升!
比如在閱讀理解任務(wù)的 BoolQ 數(shù)據(jù)集上,作者將使用提示信息整合的 finetune 方法與增加一層分類層的 finetune 方法進(jìn)行了對(duì)比。下圖是在使用不同數(shù)量的樣本訓(xùn)練時(shí),模型準(zhǔn)確率的對(duì)比。
可以發(fā)現(xiàn),在數(shù)據(jù)量比較小的時(shí)候,使用提示信息整合的 finetune 方法(黃色)比增加一層分類層的 finetune 方法(紫色)有更好的表現(xiàn)。
在某些任務(wù)上,這種表現(xiàn)的提升是驚人的:
這是在指代銷歧任務(wù)的 WSC 數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果。在水平方向看,僅使用 25 個(gè)樣本,就達(dá)到傳統(tǒng) fintune 方法使用 300 個(gè)樣本才能達(dá)到的效果!
此外,作者還進(jìn)行了一系列的消融實(shí)驗(yàn),得到一些有意思的結(jié)論:
模型通過(guò)預(yù)測(cè) <MASK> 屬于描述集合中的哪種,以此完成任務(wù)。如果將這里改為不帶語(yǔ)義的單純的分類,性能也會(huì)有所下降。
作者為每個(gè)任務(wù)都提供了多種整合提示信息的方式,但是發(fā)現(xiàn),不同方式的區(qū)別對(duì)性能影響甚微。
總結(jié)
這篇文章對(duì)基于提示信息的 finetune 方法在進(jìn)行了大量實(shí)驗(yàn),證明了這類方法在低資源的情況下性能大幅優(yōu)于傳統(tǒng)方法。這種 finetune 的思路應(yīng)該是可以應(yīng)用于各類 NLP 下游任務(wù)的。尤其是低資源場(chǎng)景下,應(yīng)該會(huì)非常有幫助。如果老板真的只給幾百條數(shù)據(jù)讓訓(xùn)練模型,這樣的方法說(shuō)不定就有奇效!
后臺(tái)回復(fù)關(guān)鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
后臺(tái)回復(fù)關(guān)鍵詞【頂會(huì)】
獲取ACL、CIKM等各大頂會(huì)論文集!
總結(jié)
以上是生活随笔為你收集整理的老板让我用少量样本 finetune 模型,我还有救吗?急急急,在线等!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 无需人工!无需训练!构建知识图谱 BER
- 下一篇: 卖萌屋原创专辑首发,算法镇魂三部曲!