日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【BERT】BERT模型压缩技术概览

發布時間:2025/3/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【BERT】BERT模型压缩技术概览 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由于BERT參數眾多,模型龐大,推理速度較慢,在一些實時性要求較高、計算資源受限的場景,其應用會受到限制。因此,討論如何在不過多的損失BERT性能的條件下,對BERT進行模型壓縮,是一個非常有現實意義的問題。

本文先介紹模型壓縮的概念及常見方法;隨后,對目前出現的BERT剪枝的技術做一個整體的介紹。在后面的文章中,挑選一些典型的例子再進行深度的介紹。

作者&編輯 | 小Dream哥

1 模型壓縮?

所謂模型壓縮,就是在盡可能不改變模型效果的情況下,減少模型的尺寸,使得模型有更快的推理速度。

隨著深度學習技術越來越多的得到應用,模型壓縮越來越受到重視,因為當模型的準確度達到一定程度后,如何用更少的硬件成本去達到相同的效果,就變得很有價值;另一方面,隨著深度學習模型變得越來越“大”,在很多涉及邊緣計算的嵌入式設備中部署就變得困難,模型壓縮就變成一個必須的事情。

目前,模型壓縮主要有4種方法,包括如下:

1.parameter pruning and quantization

參數剪枝(parameter pruning),顧名思義,就是對模型的參數進行刪減;

量化(quantization)是一種通過降低數值精度來提高模型推理速度的方法,例如將通常的64位浮點型,轉化為16位浮點型進行運算。

2.low-rank factorization

通過低秩因式分解,將參數矩陣分解成兩個較小矩陣的乘積來逼近原始參數矩陣,降低模型的參數量,ALBERT中就用了這種方法。

3.transferred/compact convolutional filters

設計特殊結構的卷積濾波器以減少存儲和計算的復雜度。

4.knowledge distillation?

知識蒸餾,即先訓練一個大模型得到較好的效果;再設計和訓練一個小模型來獲得與大模型相當的效果。

[1] Cheng Y , Wang D , Zhou P , et al. A Survey of Model Compression and Acceleration for Deep Neural Networks[J]. 2017.

[2] ?Cheng J , Wang P S , Gang L I , et al. Recent advances in efficient computation of deep convolutional neural networks[J]. Frontiers of Information Technology & Electronic Engineering, 2018, 19(01):64-77.

[3]?Liu Z , Sun M , Zhou T , et al. Rethinking the Value of Network Pruning[J]. 2018.

[4]?Frankle J , Carbin M . The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks[J]. 2018.

2 BERT模型壓縮

BERT模型的參數量巨大,這導致幾乎沒有BERT或者 BERT-Large 模型可直接在GPU及智能手機上應用,因此模型壓縮方法對于BERT的未來的應用前景非常有價值。下面介紹一些BERT模型壓縮的工作,可作參考。

(1) BERT剪枝

去掉BERT中不必要的部分,剪枝的內容包括權重大小剪枝、注意力剪枝、網絡層以及其他部分的剪枝等。還有一些方法也通過在訓練期間采用正則化的方式來提升剪枝能力(layer dropout)。

BERT模型包括輸入層(嵌入層),self-attention層,feed-forward等,針對BERT系列模型的結構,可采取的剪枝策略如下:

1)減少層數

在BERT模型的應用中,我們一般取第12層的hidden向量用于下游任務。可以根據不同的任務,接不同層進行finetune。

2)維度剪枝[1]

可以通過因式分解等方法,降低BERT隱藏層的維度,從而降低BERT的參數量。

3)Attention剪枝

在多頭注意力中,每頭維度是64,最終疊加注意力向量共768維。有研究[2]表明:在推理階段,大部分頭在被單獨去掉的時候,效果不會損失太多;將某一層的頭只保留1個,其余的頭去掉,對效果基本不會有什么影響。

[1] Compressing BERT: Studying the Effects of Weight Pruning on Transfer Learning

[2] Are Sixteen Heads Really Better than One?

[3] Pruning a BERT-based Question Answering Model

[4] Reducing Transformer Depth on Demand with Structured Dropout

[5] Reweighted Proximal Pruning for Large-Scale Language Representation

2) BERT權重因子分解

通過低秩因式分解,將參數矩陣分解成兩個較小矩陣的乘積來逼近原始參數矩陣,降低模型的參數量。最典型的就是ALBERT模型,其提出者認為,詞向量只是記憶了相對少量的詞語的信息,更多的語義和句法等信息時由隱藏層記憶的。因此,他們認為,詞嵌入的維度可以不必與隱藏層的維度一致,可以通過降低詞嵌入的維度的方式來減少參數量。

感興趣的同學看這篇博文詳細了解ALBERT的內容:

【NLP】ALBERT:更輕更快的NLP預訓練模型

[1] Structured Pruning of Large Language Models

[2] ALBERT: A Lite BERT for Self-supervised Learning of Language Representations

3)BERT知識蒸餾

知識蒸餾的本質是讓超大線下teacher模型來協助線上student模型的訓練,本質上是一種超大模型的知識遷移過程。

對Bert的知識蒸餾,研究的是如何將一個大型網絡的泛化能力,遷移到一個相對小型的網絡,從而達到以下兩個目標:

1) 不需要從零開始訓練小模型;

2) 蒸餾學習得到的模型效果優于直接訓練。

理論上來說,模型在訓練的時候需要盡可能多的神經元連接,而一旦訓練完成,其中的部分連接其實是冗余的,可以用一個相對緊湊的結構來代替。

[1] DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter

[2] Distilling Task-Specific Knowledge from BERT into Simple Neural Networks

[3] Distilling Transformers into Simple Neural Networks with Unlabeled Transfer Data

[4] Attentive Student Meets Multi-Task Teacher: Improved Knowledge Distillation for Pretrained Models

[5] Patient Knowledge Distillation for BERT Model Compression

[6] TinyBERT: Distilling BERT for Natural Language Understanding

[7] MobileBERT: Task-Agnostic Compression of BERT by Progressive Knowledge Transfer

4)BERT量化

量化(quantization)是一種通過降低數值精度來提高模型推理速度的方法,例如將通常的64位浮點型,轉化為8位浮點型進行運算,BERT的量化的基本理論也是如此。

Q-BERT模型微調后的 BERT_BASE 模型同樣包含三部分:嵌入、基于 Transformer 的編碼器層、輸出層。BERT_BASE 模型不同層的參數大小為:嵌入 91MB、編碼器 325MB、輸出 0.01MB,減少了非常多。

量化過程更多涉及具體的工程化問題,想了解同學可以參考如下的論文了解。

[1]? Q8BERT: Quantized 8Bit BERT

[2] Q-BERT: Hessian Based Ultra Low Precision Quantization of BERT

總結

BERT模型在多種下游任務表現優異,但龐大的模型結果也帶來了訓練及推理速度過慢的問題,難以滿足對實時響應速度要求高的場景,模型輕量化就顯得非常重要。

后續我們分別詳細介紹不同類型的BERT模型壓縮方法。

下期預告:暫無

知識星球推薦

掃描上面的二維碼,就可以加入我們的星球,助你成長為一名合格的自然語言處理算法工程師。

知識星球主要有以下內容:

(1) 聊天機器人。

(2) 知識圖譜。

(3) NLP預訓練模型。

轉載文章請后臺聯系

侵權必究

往期文章

  • 【完結】 12篇文章帶你完全進入NLP領域,掌握核心技術

  • 【年終總結】2019年有三AI NLP做了什么,明年要做什么?

  • 【NLP-詞向量】詞向量的由來及本質

  • 【NLP-詞向量】從模型結構到損失函數詳解word2vec

  • 【NLP-NER】什么是命名實體識別?

  • 【NLP-NER】命名實體識別中最常用的兩種深度學習模型

  • 【NLP-NER】如何使用BERT來做命名實體識別

  • 【NLP-ChatBot】我們熟悉的聊天機器人都有哪幾類?

  • 【NLP-ChatBot】搜索引擎的最終形態之問答系統(FAQ)詳述

  • 【NLP-ChatBot】能干活的聊天機器人-對話系統概述

  • 【知識圖譜】人工智能技術最重要基礎設施之一,知識圖譜你該學習的東西

  • 【知識圖譜】知識表示:知識圖譜如何表示結構化的知識?

  • 【知識圖譜】如何構建知識體系:知識圖譜搭建的第一步

  • 【知識圖譜】獲取到知識后,如何進行存儲和便捷的檢索?

  • 【知識圖譜】知識推理,知識圖譜里最“人工智能”的一段

  • 【文本信息抽取與結構化】目前NLP領域最有應用價值的子任務之一

  • 【文本信息抽取與結構化】詳聊文本的結構化【上】

  • 【文本信息抽取與結構化】詳聊文本的結構化【下】

  • 【信息抽取】NLP中關系抽取的概念,發展及其展望

  • 【信息抽取】如何使用卷積神經網絡進行關系抽取

  • 【NLP實戰】tensorflow詞向量訓練實戰

  • 【NLP實戰系列】樸素貝葉斯文本分類實戰

  • 【NLP實戰系列】Tensorflow命名實體識別實戰

  • 【NLP實戰】如何基于Tensorflow搭建一個聊天機器人

  • 【NLP實戰】基于ALBERT的文本相似度計算

總結

以上是生活随笔為你收集整理的【BERT】BERT模型压缩技术概览的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。