讓BERT飛一會

[TOC]


1. 模型蒸餾

1. DistilBERT(2019.10.2)

知識蒸餾的基礎(chǔ)原理:

定義兩個網(wǎng)絡(luò)稼锅,teacher網(wǎng)絡(luò)和student網(wǎng)絡(luò),teacher網(wǎng)絡(luò)是預(yù)訓(xùn)練得到的大模型,student模型是想要學(xué)習(xí)和遷移得到的小模型。根據(jù)Hinton的文章鹦牛,一般的蒸餾模式是:把teacher網(wǎng)絡(luò)的輸出作為soft-label,student網(wǎng)絡(luò)學(xué)習(xí)的目標(biāo)是hard-label脊髓,交叉構(gòu)造三種loss來聯(lián)合訓(xùn)練,目的是時student網(wǎng)絡(luò)具備與teacher網(wǎng)絡(luò)同樣的推理目標(biāo)栅受。

模型簡述:

student的網(wǎng)絡(luò)解決與teacher的網(wǎng)絡(luò)結(jié)構(gòu)相同将硝,都是Bert。主要改動有:

  1. 對student網(wǎng)絡(luò)的構(gòu)造屏镊,就是從teacher網(wǎng)絡(luò)每兩層去掉一層依疼。因?yàn)椋髡哒{(diào)研發(fā)現(xiàn)而芥,隱層維度的變化比層數(shù)的變化對性能的影響較小律罢,所以只改變網(wǎng)絡(luò)層數(shù)。
  2. 因?yàn)閟tudent網(wǎng)絡(luò)的層數(shù)減少兩倍棍丐,所以去掉token type embedding和pooler误辑。
  3. 使用teacher網(wǎng)絡(luò)每兩層的一層的參數(shù)來初始化student網(wǎng)絡(luò)。
  4. 使用更大的batch歌逢,使用dynamic masking,去掉NSP任務(wù)巾钉。這幾點(diǎn)是從RoBERTa中取的經(jīng)。

三個loss:

  1. L_{ce}, teacher模型得到的目標(biāo)概率分布是t_i,student模型得到的目標(biāo)概率分布是s_i秘案,然后計(jì)算兩個分布的KL散度:L_{ce} = \sum_i{t_i * \log{s_i}}砰苍。KL散度是衡量兩個分布的相關(guān)度,使用這個loss阱高,在訓(xùn)練的時候赚导,就可以把teacher網(wǎng)絡(luò)中豐富的先驗(yàn)知識帶進(jìn)訓(xùn)練過程。
    這里使用softmax-temperature,使用T來控制輸出概率的平滑度赤惊,在inference時吼旧,設(shè)置為1。
  2. L_{mlm}荐捻,就是bert中的masked語言模型的loss黍少。
  3. L_{cos},計(jì)算teacher網(wǎng)絡(luò)的hidden state和teacher網(wǎng)絡(luò)的hidden state的余弦相似度。

然后將三個loss加權(quán)想和:

Loss= 5.0*L_{ce}+2.0* L_{mlm}+1.0* L_{cos}

實(shí)驗(yàn):

inference時間對比处面,大概提升了60%:


Ablation test結(jié)果厂置,可以看出Lce、Lcos魂角、參數(shù)初始化為結(jié)果影響較大:


2. TinyBert (2019.11.23)

主要貢獻(xiàn)

  1. 提出的蒸餾方法昵济,增加了對Transformer中attention層考量。
  2. 提出two-stage的蒸餾模式野揪,在pre-training和fine-tuning階段進(jìn)行相同的蒸餾访忿,驗(yàn)證效果更好。
  3. 實(shí)驗(yàn)證明結(jié)果很好斯稳。

模型簡述:

問題定義:
teacher模型(m)和student模型(n)的層通過一個n=g(m)函數(shù)映射海铆。student學(xué)teacher的過程就是通過最小化下面的目標(biāo)函數(shù):

各種loss的定義:

  1. Transformer-layer Distillation
  2. Embedding-layer Distillation
  3. Hidden-Layer Distillation
  4. Prediction-Layer Distillation

根據(jù)上面的定義,就可以最終得到student網(wǎng)絡(luò)的完整的loss:

實(shí)驗(yàn):

TinyBERT在經(jīng)驗(yàn)上是有效的挣惰,其性能能夠超過基線BERT的96%卧斟,容量小7.5倍,推理速度快9.4倍憎茂。同時珍语,TinyBERT要比基線DistillBERT也明顯更優(yōu),只有其28%的參數(shù)竖幔,31%的推理時間:


在 GLUE 基準(zhǔn)上實(shí)現(xiàn)了與 BERT 相當(dāng)(下降 3 個百分點(diǎn))的效果:


paper
code

2. 模型結(jié)構(gòu)上的優(yōu)化

1.《Deformer:Decomposing Pre-trained Transformers for Faster Question Answering》

BERT模型做QA問題板乙,比如問答或者閱讀理解,需要將query和document拼接作為模型輸入拳氢,然后使用self-attention對輸入文本進(jìn)行多層的交互編碼募逞,之后使用線性分類器在document中尋找可能的答案序列。而通常document都非常的長馋评,所以就會有大量的計(jì)算凡辱。
這篇文章提出,將BERT模型做成兩段式的結(jié)構(gòu)栗恩,提前進(jìn)行一些運(yùn)算透乾。
有研究表明,在多層Transformer模型中磕秤,低層(low layers)的編碼主要關(guān)注一些局部的預(yù)言表層特征(比如詞性乳乌,語法等),到了高層(upper layer)才逐漸關(guān)注與下游任務(wù)相關(guān)的全局語義信息市咆。所以汉操,在low layers, ”文檔編碼能夠不依賴于問題“的假設(shè)是正確的。所以蒙兰,這篇文章的思路具體來說:在底層先對問題和文檔各自編碼磷瘤,在高層拼接問題和文檔的隱層表征再進(jìn)行交叉編碼芒篷。如下圖:

另外,作者實(shí)驗(yàn)發(fā)現(xiàn)這種結(jié)構(gòu)在SQuAD上精度損失比較大采缚,所以作者添加了兩個蒸餾損失項(xiàng)针炉。目的是最小化Defomer的高層表征和分類層logits與原始BERT模型的差異

實(shí)驗(yàn):
在三個QA任務(wù)上扳抽,BERT和XLNet采用DeFormer分解后篡帕,取得了2.7-3.5倍的加速,節(jié)省內(nèi)存65.8-72.0%贸呢,效果損失只有0.6-1.8%镰烧。但還是很慢,達(dá)不到實(shí)時的效果楞陷。


2.《AlBert》

主要三個改變怔鳖,

  1. 使embedding層的維度(E)設(shè)置為遠(yuǎn)小于隱層的維度(H),然后通過矩陣分解,將H*V的矩陣分解為V*E,E*H固蛾,其中H<<H, V為字典大小败砂,就是先將embedding的矩陣,映射到小維度的矩陣魏铅,然后再映射到大維度的隱層矩陣昌犹。這樣就可以使embedding層參數(shù)大大減小。
  2. 共享emcoder中的所有參數(shù)览芳。
  3. 將NSP任務(wù)改為SOP任務(wù)斜姥。
  • 《》
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市沧竟,隨后出現(xiàn)的幾起案子铸敏,更是在濱河造成了極大的恐慌,老刑警劉巖悟泵,帶你破解...
    沈念sama閱讀 221,331評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杈笔,死亡現(xiàn)場離奇詭異,居然都是意外死亡糕非,警方通過查閱死者的電腦和手機(jī)蒙具,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來朽肥,“玉大人禁筏,你說我怎么就攤上這事『庹校” “怎么了篱昔?”我有些...
    開封第一講書人閱讀 167,755評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我州刽,道長空执,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,528評論 1 296
  • 正文 為了忘掉前任穗椅,我火速辦了婚禮辨绊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘房待。我一直安慰自己邢羔,他們只是感情好驼抹,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,526評論 6 397
  • 文/花漫 我一把揭開白布桑孩。 她就那樣靜靜地躺著,像睡著了一般框冀。 火紅的嫁衣襯著肌膚如雪流椒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,166評論 1 308
  • 那天明也,我揣著相機(jī)與錄音宣虾,去河邊找鬼。 笑死温数,一個胖子當(dāng)著我的面吹牛绣硝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播撑刺,決...
    沈念sama閱讀 40,768評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼鹉胖,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了够傍?” 一聲冷哼從身側(cè)響起甫菠,我...
    開封第一講書人閱讀 39,664評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎冕屯,沒想到半個月后寂诱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,205評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡安聘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,290評論 3 340
  • 正文 我和宋清朗相戀三年痰洒,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浴韭。...
    茶點(diǎn)故事閱讀 40,435評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡带迟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出囱桨,到底是詐尸還是另有隱情仓犬,我是刑警寧澤,帶...
    沈念sama閱讀 36,126評論 5 349
  • 正文 年R本政府宣布舍肠,位于F島的核電站搀继,受9級特大地震影響窘面,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜叽躯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,804評論 3 333
  • 文/蒙蒙 一财边、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧点骑,春花似錦酣难、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至袁辈,卻和暖如春菜谣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背晚缩。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工尾膊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人荞彼。 一個月前我還...
    沈念sama閱讀 48,818評論 3 376
  • 正文 我出身青樓冈敛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鸣皂。 傳聞我的和親對象是個殘疾皇子抓谴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,442評論 2 359