BERT輕量化:最優參數子集Bort,大小僅為BERT-large16%

2020-12-04 澎湃新聞

鄭集楊 發自 凹非寺

量子位 報導 | 公眾號 QbitAI

近期,亞馬遜 Alexa 團隊發布了一項研究成果:研究人員對BERT模型進行參數選擇,獲得了BERT的最優參數子集——Bort。

研究結果表明,Bort大小僅為BERT-large的16%,但是在CPU上的速度卻快了7.9倍,在NLU基準測試上的性能也優於BERT-large。

這是在NLP模型快速「膨脹」,模型輕量化迫切需求的背景下,一次比較成功的結果。

NLP模型大小 △圖源:DistilBERT

與ALBERT、MobileBERT進行的模型結構優化不同,Bort是在原本的模型架構上進行最優子集選擇。

簡單來說就是:「瘦身」。

那麼,研究人員又是怎麼給BERT「瘦身」的呢?

接下來便讓我們帶大家來仔細看看。

FPTAS助力「瘦身」

首先需要明確的是,這並不是研究人員第一次嘗試給BERT「瘦身」了。

因為BERT的規模大,推理速度慢,並且預處理過程複雜,所以先前已經有部分研究人員便嘗試對其進行瘦身,取得了一定的成果:保持了其前身的相同性能、簡化了預訓練過程同時減少了推理時間。

不過,在準確性上,瘦身後的子集總是不太盡如人意——達不到原本BERT的性能。

而這次的研究,研究人員使用了完全多項式時間近似算法(FPTAS)進一步優化這個問題,因為該算法最近被證明:在某些條件下,能夠有效地提取此類最優子集。

對此,研究人員說道:

這種條件被稱為strong AB^nC propert,我們證明了BERT滿足了這一組條件。

研究人員列舉了三個指標:推理速度,參數大小和錯誤率,在使用FPTAS下,從一個高性能的BERT中提取一個最優子集,這便是Bort。

在隨後初步的測試中,Bort有著不俗的表現。在CPU上,其執行推理的速度比BERT-large快了7.9倍。

此外,在相同的硬體上,對相同的數據集進行預訓練,Bort只花費了288個GPU hours。而相比之下,BERT-large花費了1153個GPU hours,而RoBERTa-large則需要25764個GPU hours。

「瘦身」成功!

變「瘦」了,也變強了

瘦身後,是不是就像之前類似的研究一樣,能力下降了呢?這是一個非常關鍵的問題。

為了驗證Bort的泛化能力,研究人員在GLUE和SuperGLUE基準以及RACE數據集上對Bort同其他模型進行了測試。

首先是在GLUE上測試:

Bort在幾乎所有任務中都取得了優異的成績:除了QQP和QNLI之外,它的性能都比其他幾個同樣基於BERT的同類模型好得多。

值得一提的是,對於BERT-large而言,Bort的性能提高了0.3%至31%。

其次是在SuperGLUE上的測試:

Bort同樣取得了不錯的成績,除了一項任務(ReCoRD)之外,其他所有任務上都展現了優於或等同於BERT-large的性能。

最後,是在RACE上的測試:

總的來說,Bort獲得了良好的結果,在這兩項任務上的性能比BERT-large高出9-10%。

對於NLU測試結果,研究人員總結道:

在GLUE,SuperGLUE和RACE的NLU基準測試上,Bort相對於BERT-large在各個方面的性能都有著提升,範圍從0.3%到31%不等。

最後,研究人員還在Github公布了Bort的代碼。論文和代碼地址如下,需要的讀者自取哦。

論文連結:

https://arxiv.org/pdf/2010.10499.pdf

代碼地址:

https://github.com/alexa/bort

— 完 —

本文系網易新聞•網易號特色內容激勵計劃籤約帳號【量子位】原創內容,未經帳號授權,禁止隨意轉載。

量子位年度智能商業峰會啟幕,

李開復等AI大咖齊聚,

邀你共探新形勢下智能產業發展之路

▽限時早鳥優惠,掃碼鎖定席位▽

量子位 QbitAI · 頭條號籤約作者

վ'ᴗ' ի 追蹤AI技術和產品新動態

原標題:《BERT輕量化:最優參數子集Bort,大小僅為BERT-large16%》

閱讀原文

相關焦點

  • BERT輕量化:最優參數子集Bort
    鄭集楊 發自 凹非寺 量子位 報導 | 公眾號 QbitAI近期,亞馬遜 Alexa 團隊發布了一項研究成果:研究人員對BERT模型進行參數選擇,獲得了BERT的最優參數子集——Bort。研究結果表明,Bort大小僅為BERT-large的16%,但是在CPU上的速度卻快了7.9倍,在NLU基準測試上的性能也優於BERT-large。這是在NLP模型快速「膨脹」,模型輕量化迫切需求的背景下,一次比較成功的結果。
  • 亞馬遜:我們提取了BERT的一個最優子架構,只有Bert-large的16%,CPU...
    近日,來自亞馬遜 Alexa 團隊的研究者細化 BERT 子架構提取過程,並提取了一個最優子架構 Bort,它的大小僅為 BERT-large 的 16%,CPU 上的推理速度卻提升到了原來的八倍。在自然語言處理領域,BERT 是一個裡程碑式的進展。只需要添加一個單層線性分類器和一個簡單的微調策略,它就能在多項任務中達到優異的性能。
  • 大神教程乾貨:使用BERT的多類別情感分析!(附代碼)
    [0], 『text』: data_train[1].replace(r』\n』, 『 『, regex=True)})df_bert.head()數據符合BERT要求的格式將數據拆分為訓練和開發或評估數據集# Splitting training data file into *train* and *test*df_bert_train,
  • 教你用BERT進行多標籤文本分類
    Google Research最近公開了BERT 的tensorflow部署代碼,並發布了以下預訓練模型:BERT-Base, Uncased: 12層,768個隱藏單元,自注意力的 head數為12,110M參數BERT-Large, Uncased:24層,1024個隱藏單元,自注意力的 head數為16,340M參數BERT-Base, Cased:12
  • 乾貨| BERT fine-tune 終極實踐教程
    其中run_classifier.py適用的任務為分類任務。如CoLA、MRPC、MultiNLI這些數據集。而run_squad.py適用的是閱讀理解(MRC)任務,如squad2.0和squad1.1。預訓練是BERT很重要的一個部分,與此同時,預訓練需要巨大的運算資源。
  • 使用BERT和TensorFlow構建搜尋引擎
    為了證明這一點,將使用BERT特徵提取為文本構建最近鄰搜尋引擎。另外,查看為BERT實驗設置的存儲庫:它包含獎勵內容。 為了配置和優化圖形以進行推理,將使用令人敬畏的bert-as-a-service存儲庫。此存儲庫允許通過TCP為遠程客戶端提供BERT模型。 擁有遠程BERT伺服器在多主機環境中是有益的。但是在實驗的這一部分中,將專注於創建一個本地 (進程中)特徵提取器。如果希望避免客戶端 - 伺服器體系結構引入的額外延遲和潛在故障模式,這將非常有用。
  • 中文最佳,哈工大訊飛聯合發布全詞覆蓋中文BERT預訓練模型
    數據集論文採用了維基百科作為語料進行預訓練,並同時使用了簡體和繁體中文。清洗數據後,採用了 1360 萬條數據作為輸入。研究人員分別設置了兩組預訓練樣本,一組設置的最長樣本長度為 128,另一組為 512。除了使用全詞 mask 方式以外,其他的數據清洗方式和原版 BERT 相同。
  • 谷歌最強NLP模型BERT,為何炫酷又強大?騰訊程式設計師給你從頭講起
    通過 Mask 掉某個 head,對比模型前後表現的差異來研究這個 head 對模型有什麼樣的作用(對訓練好的 bert 做 head-mask,不重新訓練,對比測試集的表現)。bert-base 模型共 12 層每層有 12 個 head,下面實驗各個 head 提取的特徵是否有明顯的模式(Bert 模型為在 query-title 數據上 finetune 好的中文字模型)2.1 Attention-Head 比較冗餘標準大小的 bert 一共有 12*12 共 144 個 head.我們嘗試對訓練好的 bert 模型,隨機 mask
  • 谷歌搜索:幾乎所有的英文搜索都用上BERT了
    機器之心報導機器之心編輯部在前段時間舉辦的「Search On」活動中,谷歌宣布,BERT 現在幾乎為谷歌搜尋引擎上的每一個基於英文的查詢提供支持。而在去年,這一比例僅為 10%。
  • Keras 教程:BERT 文本摘要
    paramters and configuration for BERT設置BERT分詞器# Save the slow pretrained tokenizerslow_tokenizer = BertTokenizer.from_pretrained
  • MIND:高質量的新聞推薦數據集
    目前,許多有關新聞推薦的研究是在私有數據集上開展的,而已有的公開數據集往往規模較小。高質量基準數據集的缺乏限制了新聞推薦領域的研究進展。因此,微軟亞洲研究院聯合微軟新聞產品團隊在 ACL 2020上發布了一個大規模的英文新聞推薦數據集 MIcrosoft News Dataset (MIND[1]),並於2020年7月-9月在condalab平臺舉辦了MIND新聞推薦比賽。
  • NLP之文本分類:「Tf-Idf、Word2Vec和BERT」三種模型比較
    我將介紹一些有用的Python代碼,這些代碼可以輕鬆地應用在其他類似的案例中(僅需複製、粘貼、運行),並對代碼逐行添加注釋,以便你能復現這個例子(下面是全部代碼的連結)。for bert language modelimport transformers該數據集包含在一個jason文件中,所以我們首先將其讀取到一個帶有json的字典列表中,然後將其轉換為pandas的DataFrame。
  • 詞向量詳解:從word2vec、glove、ELMo到BERT
    目前,詞向量(又叫詞嵌入)已經成為NLP領域各種任務的必備一步,而且隨著bert elmo,gpt等預訓練模型的發展,詞向量演變為知識表示方法,但其本質思想不變。學習各種詞向量訓練原理可以很好地掌握NLP各種方法。生成詞向量的方法有很多種,本文重點介紹word2vec,glove和bert。
  • 性能媲美BERT,參數量僅為1/300,谷歌最新的NLP模型
    該研究表明,pQRNN 模型能夠在文本分類任務上實現 BERT 級別的性能,但參數量僅為原來的 1/300。PRADO 的工作原理在一年前開發該模型時,PRADO 在文本分割上充分利用特定領域的 NLP 知識,以降低模型大小和提升模型性能。通常來說,首先通過將文本分割成與預定義通用詞典中的值相對應的 token,將 NLP 模型的文本輸入處理成適用於神經網絡的形式。
  • 如何可視化BERT?你需要先理解神經網絡的語言、樹和幾何性質
    論文:https://arxiv.org/pdf/1906.02715.pdf博客:https://pair-code.github.io/interpretability/bert-tree/語言的結構是離散的,而神經網絡則基於連續數據運作:高維空間中的向量。成功的語言處理網絡必須要能將語言的符號信息轉譯為某種幾何表徵——但是這種表徵該是怎樣的形式呢?
  • 超越BERT 和 GPT,微軟亞洲研究院開源新模型 MASS!
    統一的預訓練框架MASS 有一個重要的超參數 k(被掩蔽的片段的長度)。通過調整 k 值,MASS 可以將 BERT 中掩蔽的語言建模和 GPT 中的標準語言建模結合起來,從而將 MASS 擴展成一個通用的預訓練框架。
  • 谷歌親兒子BERT的王者榮耀,僅用一年雄霸谷歌搜索頭牌!
    加入谷歌搜索剛一年,BERT「佔領」幾乎所有英語查詢2019年10月,BERT首次亮相谷歌搜索時,這一比例僅為10%。2019年12月,谷歌將 BERT 的使用擴展到70多種語言。2015年,RankBrain部署到了蜂鳥中,短短幾個月時間,RankBrain 就迅速成長為搜索查詢結果的第三重要的信號。
  • 76分鐘訓練BERT!谷歌大腦新型優化器LAMB加速大批量訓練
    但是,大批量訓練難度很大,因為它會產生泛化差距(generalization gap),直接優化通常會導致測試集準確率受損。BERT [4] 是當前最優的深度學習模型,它基於用於語言理解的深度雙向 transformer 而構建。當我們擴展批量大小時(比如批量大小超過 8192),之前的大批量訓練技術在 BERT 上的執行性能並不好。