EMNLP'21 | 让压缩语言模型自动搜索最优结构!
文 | Cheney
編 | 智商掉了一地
既讓模型跑得快又好,又要空間占用少,真的有這樣效果爆表的操作存在嗎?
在當(dāng)前疫情反復(fù)的情況下,大家平時(shí)出門用健康寶刷臉的頻率變得越來(lái)越高。如果每次人臉識(shí)別都需要等很久的話,那也太讓人焦慮啦,甚至?xí)性沂謾C(jī)的沖動(dòng)。而且我們還想讓模型的識(shí)別效果好,不能經(jīng)常出錯(cuò),就得用一些跑起來(lái)很慢的大模型來(lái)提升效果。那么問(wèn)題來(lái)了,咋在這兩者之間做個(gè)平衡呢,既讓模型跑得又快又好,又要占用空間夠少,還能效果爆表?那就不得不提模型壓縮和最近興起的自動(dòng)機(jī)器學(xué)習(xí)技術(shù)了,在壓縮模型的同時(shí)還能自動(dòng)搜索出效果更優(yōu)的結(jié)構(gòu),豈不美哉。
在NLP領(lǐng)域,預(yù)訓(xùn)練語(yǔ)言模型(如BERT等)在大量任務(wù)上都取得了不錯(cuò)的效果,但是它們有著過(guò)大的體積以及推理時(shí)間,這嚴(yán)重限制了實(shí)際的部署。為了解決這個(gè)問(wèn)題,很多模型壓縮方法被提出,例如知識(shí)蒸餾(Knowledge Distillation,KD)技術(shù)。雖然用于預(yù)訓(xùn)練模型壓縮的知識(shí)蒸餾方向取得了很大的進(jìn)展,但針對(duì)Transformer結(jié)構(gòu)中的前饋神經(jīng)網(wǎng)絡(luò)(Feed-forward Network, FFN)壓縮和改進(jìn)方面的研究還很少,其計(jì)算代價(jià)是多頭注意力(Multi-head Attention,MHA)模塊的2-3倍;同時(shí)[1]也指出,前饋網(wǎng)絡(luò)里的多層感知器(Multilayer Perceptron,MLP)結(jié)構(gòu)可以防止自注意機(jī)制帶來(lái)的秩崩塌(rank collapse)的問(wèn)題,可以幫助模型的優(yōu)化。因此,如何在最大限度壓縮前饋網(wǎng)絡(luò)的同時(shí),尋找到具有更優(yōu)秀非線性的前饋網(wǎng)絡(luò)結(jié)構(gòu),進(jìn)而提升模型效果,是個(gè)很值得關(guān)注的問(wèn)題。
此外,自動(dòng)機(jī)器學(xué)習(xí)技術(shù),特別是模型架構(gòu)自動(dòng)化搜索(Neural Architecture Search,NAS),在計(jì)算機(jī)視覺(jué)和自然語(yǔ)言處理領(lǐng)域已經(jīng)嶄露頭角,可以自動(dòng)地從龐大的搜索空間中搜索出比人工設(shè)計(jì)的結(jié)構(gòu)效果更優(yōu)的模型。因此可以很自然地想到利用這類技術(shù)搜索出符合需求的前饋網(wǎng)絡(luò)結(jié)構(gòu)。但由于搜索空間往往極其龐大和復(fù)雜,如何高效地進(jìn)行模型架構(gòu)搜索也是亟待解決的問(wèn)題。
基于網(wǎng)絡(luò)架構(gòu)搜索的模型壓縮方法之前也有很多人進(jìn)行研究,比如AdaBERT[2]基于卷積神經(jīng)網(wǎng)絡(luò)搜索任務(wù)自適應(yīng)的小模型。然而,這些方法沒(méi)有針對(duì)Transformer中前饋網(wǎng)絡(luò)的非線性進(jìn)行探究;搜索空間受限于人工設(shè)計(jì),不夠靈活;泛化性也值得考究。
為了解決上述問(wèn)題,今天我們介紹一篇收錄于Findings of EMNLP 2021的工作EfficientBERT。在搜索空間方面,該方法主要針對(duì)Transformer中前饋網(wǎng)絡(luò)的數(shù)學(xué)表達(dá)式進(jìn)行搜索,以發(fā)現(xiàn)具有更優(yōu)非線性的模型結(jié)構(gòu);同時(shí)也將網(wǎng)絡(luò)的堆疊層數(shù)和中間通道數(shù)加入進(jìn)來(lái),以綜合平衡模型的參數(shù)量和推理時(shí)間。在搜索方法方面,該文提出了一種由粗到細(xì)的搜索策略,漸進(jìn)地對(duì)搜索空間中的每個(gè)部分進(jìn)行搜索,以提升搜索效率;同時(shí)提出了一種熱啟動(dòng)知識(shí)蒸餾(Warm-up KD)策略,使每個(gè)搜索子結(jié)構(gòu)在訓(xùn)練時(shí)可以更快地收斂,并提升模型的泛化性能。
論文標(biāo)題
EfficientBERT: Progressively Searching Multilayer Perceptron via Warm-up Knowledge Distillation
論文鏈接
https://arxiv.org/abs/2109.07222
開(kāi)源代碼
https://github.com/cheneydon/efficient-bert
1 方法
本文提出的方法主要分成兩個(gè)部分:搜索空間的設(shè)計(jì),以及基于熱啟動(dòng)知識(shí)蒸餾的漸進(jìn)搜索方法。
▲EfficientBERT搜索整體框架1.1 搜索空間
搜索空間設(shè)計(jì)方面,首先對(duì)前饋網(wǎng)絡(luò)的數(shù)學(xué)表達(dá)式進(jìn)行搜索,以此反映網(wǎng)絡(luò)的非線性能力,并為其定義了如下幾種基本的數(shù)學(xué)操作符號(hào):
▲候選數(shù)學(xué)操作符號(hào)同時(shí)該文也對(duì)前饋網(wǎng)絡(luò)的堆疊層數(shù)和中間通道擴(kuò)增比例進(jìn)行搜索,以平衡模型的參數(shù)量和推理時(shí)間,分別從{1, 2, 3, 4}和{1, 1/2, 1/3, 1/4}中選取。在搜索時(shí),每個(gè)前饋網(wǎng)絡(luò)結(jié)構(gòu)通過(guò)一個(gè)有向無(wú)環(huán)圖構(gòu)建,且上述操作被放入中間節(jié)點(diǎn)中來(lái)處理輸入特征。
值得一提的是,正如上述框架圖所示,該文對(duì)每層前饋網(wǎng)絡(luò)整體的數(shù)學(xué)表達(dá)式進(jìn)行搜索,包括激活函數(shù)以及一些復(fù)雜的嵌套或組合表達(dá),且各層網(wǎng)絡(luò)的表達(dá)式也各不相同。比如該文搜到的EfficientBERT模型第4, 5層的表達(dá)式為linear2_2(gelu(linear2_2(max(x,tanh(x)),wb1)),wb2)和linear1_2(relu(mul(linear1_2(x,wb1),x)),wb2),其中l(wèi)inear x_y表示其所在的前饋網(wǎng)絡(luò)的堆疊層數(shù)為x、中間通道擴(kuò)增比例為1/y,wb i表示第i個(gè)線性層的權(quán)重和偏置。
1.2 搜索方法
首先是基礎(chǔ)搜索模型(Base Model)結(jié)構(gòu)的設(shè)計(jì)。該文綜合采用了之前工作的一些壓縮方法,比如嵌入層因子分解(embedding factorization),減少模型寬度、深度、中間通道擴(kuò)增比例等。
接下來(lái)是搜索過(guò)程,整個(gè)搜索過(guò)程被分為三個(gè)階段:
在第一階段,對(duì)整個(gè)搜索空間進(jìn)行聯(lián)合搜索,其基于上述基礎(chǔ)搜索模型結(jié)構(gòu)。每個(gè)搜索子模型通過(guò)LaNAS[3]中提出的一種可學(xué)習(xí)的采樣決策樹(shù)進(jìn)行采樣,使得更具有潛力的子模型可以以更大的概率被采樣到。為了避免不同數(shù)學(xué)表達(dá)式之間參數(shù)干擾的問(wèn)題,在這個(gè)階段不同的子模型被單獨(dú)地進(jìn)行訓(xùn)練。同時(shí),為了使每個(gè)子模型的訓(xùn)練更快地收斂,該文提出一種熱啟動(dòng)知識(shí)蒸餾方法。首先建立一個(gè)熱啟動(dòng)超級(jí)網(wǎng)絡(luò),該網(wǎng)絡(luò)有著最大的堆疊層數(shù)和中間通道擴(kuò)增比例。將該超級(jí)網(wǎng)絡(luò)通過(guò)知識(shí)蒸餾預(yù)訓(xùn)練好之后固定其權(quán)重,在搜索時(shí)每個(gè)子模型從對(duì)應(yīng)位置繼承其權(quán)重,之后利用知識(shí)蒸餾只需要少量的預(yù)訓(xùn)練和微調(diào)步數(shù)即可達(dá)到收斂,節(jié)省了大量搜索時(shí)間。
在第二階段,對(duì)數(shù)學(xué)表達(dá)式進(jìn)行單獨(dú)搜索,以發(fā)掘其更多樣化的表達(dá)并評(píng)估其對(duì)模型最終效果的影響,并將其它兩個(gè)部分的結(jié)構(gòu)固定住(即堆疊層數(shù)和中間通道擴(kuò)增比例)。該階段基于第一階段搜索到的結(jié)構(gòu)進(jìn)行搜索,并采用和第一階段相同的知識(shí)蒸餾方式。
在第三階段,對(duì)堆疊層數(shù)和中間通道擴(kuò)增比例進(jìn)行聯(lián)合搜索。該階段基于第二階段搜索到的結(jié)構(gòu)進(jìn)行搜索,其數(shù)學(xué)表達(dá)式被固定,但使用了不同的堆疊層數(shù)和中間通道擴(kuò)增比例組合,以增加搜索多樣性。由于無(wú)需對(duì)數(shù)學(xué)表達(dá)式進(jìn)行搜索,該階段采用權(quán)重共享方法加速搜索。在該階段的熱啟動(dòng)知識(shí)蒸餾過(guò)程中,將熱啟動(dòng)超級(jí)網(wǎng)絡(luò)預(yù)訓(xùn)練好之后,其權(quán)重不再被固定;在搜索時(shí),每個(gè)搜索子模型被均勻采樣,繼承超級(jí)網(wǎng)絡(luò)參數(shù)后進(jìn)行訓(xùn)練,且不同子模型的參數(shù)可以共享。為了提高模型的泛化性,在訓(xùn)練時(shí)采用了多任務(wù)訓(xùn)練的方法,讓每個(gè)子模型在不同種類的下游任務(wù)上進(jìn)行微調(diào)。其中嵌入層和Transformer層的參數(shù)在所有任務(wù)上共享,但不對(duì)預(yù)測(cè)層參數(shù)進(jìn)行共享。
2 實(shí)驗(yàn)
首先是在GLUE test和SQuAD dev數(shù)據(jù)集上與之前的模型壓縮方法進(jìn)行比較:
▲GLUE test數(shù)據(jù)集比較結(jié)果▲SQUAD dev數(shù)據(jù)集比較結(jié)果并在GLUE dev數(shù)據(jù)集上與之前相關(guān)的利用架構(gòu)搜索進(jìn)行模型壓縮的方法進(jìn)行比較:
▲GLUE dev數(shù)據(jù)集比較結(jié)果可以看到,在相似的參數(shù)量下,本文搜索到的模型EfficientBERT效果遠(yuǎn)遠(yuǎn)超過(guò)了之前效果最好的模型壓縮方法(TinyBERT[4], MobileBERT[5], MiniLM[6]等),也超過(guò)了之前利用架構(gòu)搜索的模型壓縮方法(AdaBERT[2],NAS-BERT[7]等)。
接下來(lái),本文也給出各階段搜索到模型的最終性能,驗(yàn)證提出的漸進(jìn)架構(gòu)搜索方法、以及搜索空間中各個(gè)部分的有效性:
▲不同搜索階段模型最終性能本文也給出各個(gè)階段的搜索時(shí)間,驗(yàn)證提出的漸進(jìn)搜索方法的加速能力:
▲由粗到細(xì)搜索方法各階段搜索時(shí)間可以看到,本文提出的漸進(jìn)搜索方法不僅可以搜索出更具有潛力的模型結(jié)構(gòu),而且可以加速搜索進(jìn)程。
為了測(cè)試搜到的模型結(jié)構(gòu)的泛化能力,EfficientBERT結(jié)構(gòu)隨后被遷移到了TinyBERT上:
▲模型結(jié)構(gòu)遷移效果此外,本文也給出各個(gè)子模型在搜索階段和最終測(cè)試階段預(yù)測(cè)結(jié)果的相關(guān)性結(jié)果,驗(yàn)證所提出的熱啟動(dòng)知識(shí)蒸餾方法對(duì)不同子模型效果的預(yù)測(cè)排序能力:
▲熱啟動(dòng)知識(shí)蒸餾排序能力可以看到,使用熱啟動(dòng)知識(shí)蒸餾方法,子模型在各個(gè)下游任務(wù)上都可以在搜索和最終測(cè)試階段的預(yù)測(cè)結(jié)果之間保持很高的正相關(guān)性。
為了直觀地評(píng)估模型的非線性能力,本文對(duì)搜索到的前饋網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行了可視化:
▲前饋網(wǎng)絡(luò)非線性能力可視化其中(d)-(f)是隨機(jī)采樣出的效果更差的幾個(gè)搜索子模型。從上圖可以看出,(a)-(c)相比于(d)-(f)曲線更加流暢且異常突增區(qū)域更少;并且從(a)到(c),曲線的復(fù)雜程度越來(lái)越低,顯示了搜索到的模型EfficientBERT優(yōu)秀的非線性能力。
最后,本文將各個(gè)階段搜索到的模型整體結(jié)構(gòu)進(jìn)行了可視化:
▲模型整體結(jié)構(gòu)圖從最終階段搜到的EfficientBERT結(jié)構(gòu)中可以發(fā)現(xiàn)一些有趣的規(guī)律:
由于多數(shù)前饋網(wǎng)絡(luò)中間通道擴(kuò)增比例為1/2,且多數(shù)前饋網(wǎng)絡(luò)堆疊層數(shù)少于2,因此搜索得到的EfficientBERT非常輕量;
更低層有著更大的堆疊層數(shù)或中間通道擴(kuò)增比例(如第1, 2層),以最大程度地豐富模型的語(yǔ)義表達(dá)能力;
更高層有著更復(fù)雜的數(shù)學(xué)表達(dá)式(如第4, 5層),以提高模型的非線性表達(dá)能力。
3 總結(jié)
本文主要針對(duì)前饋網(wǎng)絡(luò)的尺寸和非線性能力進(jìn)行壓縮和提升,設(shè)計(jì)了一種非常靈活龐大的搜索空間進(jìn)行自動(dòng)化架構(gòu)搜索。為了提高搜索效率,本文提出了一種由粗到細(xì)的架構(gòu)搜索方法,并在每個(gè)搜索階段采用了一種熱啟動(dòng)知識(shí)蒸餾方法來(lái)加速搜索并提高模型的泛化能力。大量實(shí)驗(yàn)證明了搜索到的模型EfficientBERT的有效性。
后臺(tái)回復(fù)關(guān)鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
后臺(tái)回復(fù)關(guān)鍵詞【頂會(huì)】
獲取ACL、CIKM等各大頂會(huì)論文集!
?
[1] Yihe Dong, et al. Attention is not all you need: Pure attention loses rank doubly exponentially with depth. ICML 2021.
[2] Daoyuan Chen, et al. AdaBERT: Task-adaptive bert compression with differentiable neural architecture search. IJCAI 2020.
[3] Linnan Wang, et al. Sample-efficient neural architecture search by learning action space. TPAMI 2021.
[4] Xiaoqi Jiao, et al. TinyBERT: Distilling BERT for natural language understanding. Findings of EMNLP 2020.
[5] Zhiqing Sun, et al. MobileBERT: a compact task-agnostic BERT for resource-limited devices. ACL 2020.
[6] Wenhui Wang, et al. MiniLM: Deep self-attention distillation for task-agnostic compression of pre-trained transformers. NeurIPS 2020.
[7] Jin Xu, et al. NAS-BERT: Task-agnostic and adaptive-size bert compression with neural architecture search. KDD 2021.
總結(jié)
以上是生活随笔為你收集整理的EMNLP'21 | 让压缩语言模型自动搜索最优结构!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 谢撩,人在斯坦福打SoTA
- 下一篇: Attention模型:我的注意力跟你们