BERT輕量化:最優(yōu)參數(shù)子集Bort,大小僅為BERT-large16%
來自亞馬遜 Alexa 團(tuán)隊
鄭集楊 發(fā)自 凹非寺
量子位 報道 | 公眾號 QbitAI
近期,亞馬遜 Alexa 團(tuán)隊發(fā)布了一項研究成果:研究人員對BERT模型進(jìn)行參數(shù)選擇,獲得了BERT的最優(yōu)參數(shù)子集——Bort。
研究結(jié)果表明,Bort大小僅為BERT-large的16%,但是在CPU上的速度卻快了7.9倍,在NLU基準(zhǔn)測試上的性能也優(yōu)于BERT-large。
這是在NLP模型快速“膨脹”,模型輕量化迫切需求的背景下,一次比較成功的結(jié)果。
NLP模型大小?△圖源:DistilBERT
與ALBERT、MobileBERT進(jìn)行的模型結(jié)構(gòu)優(yōu)化不同,Bort是在原本的模型架構(gòu)上進(jìn)行最優(yōu)子集選擇。
簡單來說就是:「瘦身」。
那么,研究人員又是怎么給BERT「瘦身」的呢?
接下來便讓我們帶大家來仔細(xì)看看。
FPTAS助力「瘦身」
首先需要明確的是,這并不是研究人員第一次嘗試給BERT「瘦身」了。
因為BERT的規(guī)模大,推理速度慢,并且預(yù)處理過程復(fù)雜,所以先前已經(jīng)有部分研究人員便嘗試對其進(jìn)行瘦身,取得了一定的成果:保持了其前身的相同性能、簡化了預(yù)訓(xùn)練過程同時減少了推理時間。
不過,在準(zhǔn)確性上,瘦身后的子集總是不太盡如人意——達(dá)不到原本BERT的性能。
而這次的研究,研究人員使用了完全多項式時間近似算法(FPTAS)進(jìn)一步優(yōu)化這個問題,因為該算法最近被證明:在某些條件下,能夠有效地提取此類最優(yōu)子集。
對此,研究人員說道:
這種條件被稱為strong AB^nC propert,我們證明了BERT滿足了這一組條件。
研究人員列舉了三個指標(biāo):推理速度,參數(shù)大小和錯誤率,在使用FPTAS下,從一個高性能的BERT中提取一個最優(yōu)子集,這便是Bort。
在隨后初步的測試中,Bort有著不俗的表現(xiàn)。在CPU上,其執(zhí)行推理的速度比BERT-large快了7.9倍。
此外,在相同的硬件上,對相同的數(shù)據(jù)集進(jìn)行預(yù)訓(xùn)練,Bort只花費(fèi)了288個GPU hours。而相比之下,BERT-large花費(fèi)了1153個GPU hours,而RoBERTa-large則需要25764個GPU hours。
「瘦身」成功!
變「瘦」了,也變強(qiáng)了
瘦身后,是不是就像之前類似的研究一樣,能力下降了呢?這是一個非常關(guān)鍵的問題。
為了驗證Bort的泛化能力,研究人員在GLUE和SuperGLUE基準(zhǔn)以及RACE數(shù)據(jù)集上對Bort同其他模型進(jìn)行了測試。
首先是在GLUE上測試:
Bort在幾乎所有任務(wù)中都取得了優(yōu)異的成績:除了QQP和QNLI之外,它的性能都比其他幾個同樣基于BERT的同類模型好得多。
值得一提的是,對于BERT-large而言,Bort的性能提高了0.3%至31%。
其次是在SuperGLUE上的測試:
Bort同樣取得了不錯的成績,除了一項任務(wù)(ReCoRD)之外,其他所有任務(wù)上都展現(xiàn)了優(yōu)于或等同于BERT-large的性能。
最后,是在RACE上的測試:
總的來說,Bort獲得了良好的結(jié)果,在這兩項任務(wù)上的性能比BERT-large高出9-10%。
對于NLU測試結(jié)果,研究人員總結(jié)道:
在GLUE,SuperGLUE和RACE的NLU基準(zhǔn)測試上,Bort相對于BERT-large在各個方面的性能都有著提升,范圍從0.3%到31%不等。
最后,研究人員還在Github公布了Bort的代碼。論文和代碼地址如下,需要的讀者自取哦。
論文鏈接:
https://arxiv.org/pdf/2010.10499.pdf
代碼地址:
https://github.com/alexa/bort