多快好省的预训练模型:你丢我也丢
?AI學術前沿原創 ·?作者?|?IanChi
研究方向?|?機器學習、NLP
本文將羅列幾篇通過 Drop 一些組件來提升預訓練模型效率的工作。
▍STRUCTURED DROPOUT Pruning
論文標題:
Reducing Transformer Depth on Demand with Structured Dropout
論文鏈接:
https://arxiv.org/abs/1909.11556
代碼鏈接:
https://github.com/pytorch/fairseq/tree/master/examples/layerdrop
idea 非常簡單,類似 Huang Gao 的 Stochastic Depth,在 Train 和 Test 階段利用結構化的 Dropout,對網絡結構的一些 layer 進行丟棄操作。
文章提出了三種丟棄策略:
1. Every Other:每隔幾層丟一層;
2. Search on Valid:在valid set搜索一些layer丟棄組合;
2. Data Driven Pruning:將丟棄任務建模成一個函數擬合任務,來學習如何丟棄。
結果發現最簡單的 Every Other 效果最好,簡單太秀了……
這里起名字為 DropLayer,和一般的 Dropout 不同,是丟棄 weight 的(DropConnect),本質上就是在權重矩陣中乘個 Mask 矩陣({0,1} 矩陣)。
很多問題的本質都是一個 subset selection 的問題,包括一些工作是做 sparse attention,提高 Transformer 的時間和空間效率。
▍Dynamic Early Exiting
論文標題:
DeeBERT: Dynamic Early Exiting for Accelerating BERT Inference
論文鏈接:
https://arxiv.org/abs/2004.12993
代碼鏈接:
https://github.com/castorini/DeeBERT
這個工作乍一看和上面的思路一模一樣,同樣也是受啟發于 Huang Gao 的工作。大概的思路是,作者認為 BERT 中堆疊了這么多的 Transformer Layer,有很多的冗余。所以,想嘗試著,在每個 Transformer 之后,都做一次預測,試試看是不是 ok,這里 ok 不 ok 是用 prediction entropy 來度量的(手動設定個閾值,一頓調)。如果 ok 直接給出預測,后面的 transformer 就不計算了,所以可以省下不少 inference time。?
當然作者也嘗試了 ensemble 一下多個 layer 的 prediction,貌似沒啥效果。
實驗方面,也和論文 1 中的 LayerDrop 進行了對比,在有限的對比實驗中,提升效率上不如 LayerDrop。
這個工作有點像更加粗糙的 LayerDrop,人家 drop 的是 layer,這里 drop 的 transfomer,粒度更大一些。
▍Scheduled DropHead
論文標題:
Scheduled DropHead: A Regularization Method for Transformer Models
論文鏈接:
https://arxiv.org/abs/2004.13342
本文也是 Drop 的思想,不同于上面的兩篇文章,這里關注的是 Head 的位置。多頭是 Transformer 成功的重要原因之一,有些研究表明只有一部分 attention 對于結果影響很大,其他的 attention 是冗余的,所以 drop 掉一些 attention 一方面可以 prevent overfitting,另一方面可以達到 prune 的效果,提升 efficiency。?
當然這里,drop 的時候,顆粒度比較大,直接對整個 head attention 進行 drop。除了這個點之外,本文另一個重要的點,是提出了一種 V 字 dropout rate scheduler,而不是 fixed rate,通過燒蝕實驗驗證了這種 scheduler 的作用。
▍Big Bird Transformers
論文標題:
Big Bird: Transformers for Longer Sequences
論文鏈接:
https://arxiv.org/abs/2007.14062
代碼鏈接:
https://github.com/google-research/bigbird
這個工作不同于文章 3 的粗暴,而是更加細膩的做 sparse attention,drop 的更加精細,self-attention 也好,encoder-decoder attention 也罷,最大的問題是效率問題,但其實并不是所有的 token 都有直接聯系,這里存在著巨大的冗余。此次作為一個引子,回頭專門針對 sparse attention 寫一篇文章,這里先不贅述。
▍總結
簡單總結幾句,因為 transformer based models 已經橫掃了這么多 NLP task,也包括 CV 和 speech 的一些 task,那么 More Efficient Transformer 一定是個大趨勢。本文節選了幾篇通過 drop 的思路來 improve transformer 的工作,肯定不夠全面,但基本上說清了一個趨勢。?
如果我們將 neural network 從結構上拆解成不同粒度的組件來看,可以寫個簡單的偽代碼如下:?
for?component?in?[neuron,?weight,?layer,?block,?head,?attention,?...]: performance,?time?=?drop(component) if?performance?is?sota: a?novel?drop?based?transformer?is?proposed elif?time?is?sota: a?novel?prune?method?of?transformer?is?proposed elif?performance?and?time?both?sota: a?big?news?is?coming?soon else: continue Auto?Drop?will?be?a?new?direction?to?follow.調侃完了之后,說句公道話,不管是黑貓還是白貓,抓住老鼠就是好貓咪。?
抖個機靈,Transformer 最大的瓶頸在于芝麻街的主人公太少,快不夠用了。
·
總結
以上是生活随笔為你收集整理的多快好省的预训练模型:你丢我也丢的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对抗攻击公开课第二弹来啦,真题演练 +
- 下一篇: 2021年下半年,你还可以把论文投给这