12层的bert参数量_只需一个损失函数、一个超参数即可压缩BERT,MSRA提出模型压缩新方法...
機(jī)器之心報(bào)道,參與:魔王。
論文鏈接:https://arxiv.org/pdf/2002.02925.pdf
這篇論文提出了一種新型模型壓縮方法,能夠通過逐步模塊替換(progressive module replacing)有效地壓縮 BERT。該方法首先將原版 BERT 分割成多個(gè)模塊,并構(gòu)建更加緊湊的替代模塊;然后,用替代模塊隨機(jī)替換原始模塊,訓(xùn)練替代模塊來模仿原始模塊的行為。在訓(xùn)練過程中,研究者逐步增加模塊的替換概率,從而實(shí)現(xiàn)原始模型與緊湊模型之間的更深層次交互,使得訓(xùn)練過程流暢進(jìn)行。
與之前用于 BERT 壓縮的知識蒸餾方法相比,該方法僅利用一個(gè)損失函數(shù)和一個(gè)超參數(shù),將開發(fā)者從調(diào)參這一繁瑣過程中解放出來。該方法在 GLUE 基準(zhǔn)上的性能優(yōu)于現(xiàn)有的知識蒸餾方法,為模型壓縮開啟了新方向。
模型壓縮方法知多少
隨著深度學(xué)習(xí)的流行,很多巨大的神經(jīng)模型誕生,并在多個(gè)領(lǐng)域中取得當(dāng)前最優(yōu)性能。尤其是在自然語言處理(NLP)領(lǐng)域中,預(yù)訓(xùn)練和調(diào)參已經(jīng)成為其中大多數(shù)任務(wù)的新規(guī)范。基于 Transformer 的預(yù)訓(xùn)練模型在自然語言理解(NLU)和自然語言生成(NLG)領(lǐng)域中成為主流。這些模型從其「過參數(shù)化」屬性中獲益,它們往往包含數(shù)百萬甚至數(shù)十億個(gè)參數(shù),這就使得此類模型計(jì)算成本高昂,且從內(nèi)存消耗和高延遲的角度來看其計(jì)算是低效的。這一缺陷極大地阻礙了此類模型在生產(chǎn)環(huán)境中的應(yīng)用。
為了解決該問題,研究者提出很多神經(jīng)網(wǎng)絡(luò)壓縮技術(shù)。一般而言,這些技術(shù)可分為三類:量化、權(quán)重剪枝和知識蒸餾(KD)。其中,KD 能夠壓縮預(yù)訓(xùn)練語言模型,并因此得到了極大關(guān)注。KD 利用大型教師模型「教」緊湊的學(xué)生模型模仿教師的行為,從而將教師模型中嵌入的知識遷移到較小的模型中。但是,學(xué)生模型的性能狀況取決于設(shè)計(jì)良好的蒸餾損失函數(shù),正是這個(gè)函數(shù)使得學(xué)生模型模仿教師行為。近期關(guān)于 KD 的研究甚至利用更復(fù)雜的模型特定蒸餾損失函數(shù),以實(shí)現(xiàn)更好的性能。
模型壓縮新思路——Theseus 壓縮
與顯式地利用蒸餾損失函數(shù)來最小化教師模型與學(xué)生模型距離的 KD 不同,該研究提出一種新型模型壓縮方法。研究者受到著名哲學(xué)思想實(shí)驗(yàn)「忒修斯之船」的啟發(fā)(如果船上的木頭逐漸被替換,直到所有的木頭都不是原來的木頭,那這艘船還是原來的那艘船嗎?),提出了 Theseus Compression for BERT (BERT-of-Theseus),該方法逐步將 BERT 的原始模塊替換成參數(shù)更少的替代模塊。研究者將原始模型叫做「前輩」(predecessor),將壓縮后的模型叫做「接替者」(successor),分別對應(yīng) KD 中的教師和學(xué)生。
該方法的工作流程如下圖 1 所示:首先為每個(gè)前輩模塊(即前輩模型中的模塊)指定一個(gè)替代(接替者)模塊;然后在訓(xùn)練階段中以一定概率用替代模塊隨機(jī)替換對應(yīng)的前輩模塊,并按照新舊模塊組合的方式繼續(xù)訓(xùn)練;模型收斂后,將所有接替者模塊組合成接替者模型,進(jìn)而執(zhí)行推斷。這樣,就可以將大型前輩模型壓縮成緊湊的接替者模型了。
圖 1:BERT-of-Theseus 的工作流程。Theseus 壓縮與 KD 的思路有些類似,都鼓勵(lì)壓縮模型模仿原始模型的行為,但 Theseus 壓縮有很多獨(dú)特的優(yōu)勢。
首先,Theseus 壓縮在壓縮過程中僅使用任務(wù)特定的損失函數(shù)。而基于 KD 的方法除了使用任務(wù)特定的損失函數(shù)外,還把一或多個(gè)蒸餾損失函數(shù)作為優(yōu)化目標(biāo)。Theseus 方法在整個(gè)壓縮過程中僅使用一個(gè)損失函數(shù),從而聯(lián)結(jié)不同的階段,使壓縮以完全端到端的形式進(jìn)行。此外,為不同任務(wù)和數(shù)據(jù)集選擇多個(gè)損失函數(shù)并平衡每個(gè)損失函數(shù)的權(quán)重,通常是一件耗時(shí)費(fèi)力的事。
其次,與近期研究 [15] 不同,Theseus 壓縮不使用 Transformer 特定特征進(jìn)行壓縮,這就為壓縮廣泛模型提供了可能性。
第三,與 KD 僅使用原始模型執(zhí)行推斷不同,該方法允許前輩模型與壓縮后的接替者模型共同訓(xùn)練,從而實(shí)現(xiàn)更深層次的梯度級交互,并簡化訓(xùn)練過程。此外,混合了前輩模塊和接替者模塊的不同模塊組合添加了額外的正則化項(xiàng)(類似于 Dropout)。該方法還基于課程學(xué)習(xí)(Curriculum Learning)方法來驅(qū)動(dòng)模塊替換,將模塊替換概率從低到高逐漸增加,從而實(shí)現(xiàn)優(yōu)異的 BERT 壓縮性能。
該研究的貢獻(xiàn)如下:
- 提出新方法 Theseus 壓縮。該方法僅使用一個(gè)損失函數(shù)和一個(gè)超參數(shù),為模型壓縮提供了新方向。
- 利用該方法壓縮得到的 BERT 模型運(yùn)算速度是之前的 1.94 倍,并且保留了原始模型超過 98% 的性能,優(yōu)于其它基于 KD 的壓縮基線。
BERT-of-Theseus
接下來,我們來看模塊替換和課程學(xué)習(xí)方法。BERT-of-Theseus 方法的工作流程參見圖 1。
在該示例中,研究者將一個(gè) 6 層的前輩模型 P = {prd_1, .., prd_3} 壓縮成 3 層的接替者模型 S = {scc_1, .., scc_3}。prd_i 和 scc_i 分別包含兩個(gè)層和一個(gè)層。(a) 在模塊替換訓(xùn)練階段,以概率 p 將每個(gè)前輩模塊 prd_i 替換成對應(yīng)的接替者模塊 scc_i。(b) 在接替者微調(diào)和推斷階段,把所有接替者模塊 scc_1..3 組合到一起,以執(zhí)行計(jì)算。
圖 2:恒定模塊替換率和替換調(diào)度器的替換曲線。該圖用不同灰度表示 Theseus 壓縮的兩個(gè)階段:1)模塊壓縮,2)接替者微調(diào)。實(shí)驗(yàn)
現(xiàn)在,我們來看 Theseus Compression for BERT 的實(shí)驗(yàn)結(jié)果。研究者對比了 BERT-of-Theseus 和其它壓縮方法,并通過進(jìn)一步實(shí)驗(yàn)來分析結(jié)果。
基線
如表 1 所示,研究者對比了新方法與現(xiàn)有方法的層數(shù)、參數(shù)量、損失函數(shù)、外部數(shù)據(jù)使用和模型無關(guān)性。
表 1:不同 BERT 壓縮方法的對比。「CE」和「MSE」分別表示交叉熵和均方差,「KD」表示知識蒸餾的損失函數(shù),「CETASK」和「CEMLM」分別表示在下游任務(wù)上和在遮蔽語言建模預(yù)訓(xùn)練任務(wù)中計(jì)算得到的交叉熵。其它損失函數(shù)參見相關(guān)論文。
實(shí)驗(yàn)結(jié)果
表 2 展示了模型在 GLUE 開發(fā)集上的實(shí)驗(yàn)結(jié)果。研究者將其預(yù)測結(jié)果提交至 GLUE 測試服務(wù)器,得到了官方排行榜結(jié)果,詳見表 3。
表 2:在 GLUE 開發(fā)集上的實(shí)驗(yàn)結(jié)果。每個(gè)數(shù)據(jù)集下的數(shù)字表示數(shù)據(jù)集中的訓(xùn)練樣本數(shù)量。表 3:在 GLUE 服務(wù)器測試集上的實(shí)驗(yàn)結(jié)果。每個(gè)數(shù)據(jù)集下的數(shù)字表示數(shù)據(jù)集中的訓(xùn)練樣本數(shù)量。通用模型
作者也提供了一個(gè)在 MNLI 上壓縮的 6 層繼承者模型權(quán)重,可供直接微調(diào)使用,在 GLUE 上也取得了超過 DistillBERT 的表現(xiàn)。借助 transformers 庫可以輕松使用三行代碼加載這個(gè)模型權(quán)重:
from transformers import AutoTokenizer, AutoModel tokenizer = AutoTokenizer.frompretrained("canwenxu/BERT-of-Theseus-MNLI") model = AutoModel.frompretrained("canwenxu/BERT-of-Theseus-MNLI")模型壓縮后,研究者在其它句子分類任務(wù)上微調(diào)接替者模型,并與 DistillBERT 的性能進(jìn)行對比(參見表 4)。這一通用模型在 MRPC 上實(shí)現(xiàn)了同等性能,且在其它句子級任務(wù)中的性能顯著優(yōu)于 DistillBERT。
表 4:該研究訓(xùn)練出的通用模型在 GLUE-dev 上的實(shí)驗(yàn)結(jié)果。 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的12层的bert参数量_只需一个损失函数、一个超参数即可压缩BERT,MSRA提出模型压缩新方法...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 铺砖问题JAVA_java彩色瓷砖编程题
- 下一篇: linux协议栈劫持,Linux系统优化