1. 程式人生 > 其它 >BERT 模型的知識蒸餾: DistilBERT 方法的理論和機制研究

BERT 模型的知識蒸餾: DistilBERT 方法的理論和機制研究

如果你曾經訓練過像 BERT 或 RoBERTa 這樣的大型 NLP 模型,你就會知道這個過程是極其漫長的。由於其龐大的規模,訓練此類模型可能會持續數天。當需要在小型裝置上執行它們時,就會發現正在以巨大的記憶體和時間成本為日益增長的效能付出代價。

有一些方法可以減輕這些痛苦並且對模型的效能影響很小,這種技術稱為蒸餾。在本文中,我們將探討 DistilBERT [1] 方法背後的機制,該方法可用於提取任何類似 BERT 的模型。

首先,我們將討論一般的蒸餾以及我們為什麼選擇 DistilBERT 的方法,然後如何初始化這個過程,以及在蒸餾過程中使用的特殊損失,最後是一些需要注意的細節。

簡單介紹DistilBERT

什麼是知識蒸餾?

蒸餾的概念是相當直觀的:它是訓練一個小的學生模型,模仿一個更大的教師模型並儘可能接近的過程。如果我們只將他用在叢集上進行機器學習模型的微調時,那麼知識蒸餾的作用並不大。但是當我們想要將一個模型移植到更小的硬體上時,比如一臺有限的膝上型電腦或手機,知識蒸餾的好處是顯而易見的,因為蒸餾的模型在保證效能的情況下,引數更少、執行得更快、佔用的空間更少。

BERT蒸餾的必要性

基於bert的模型在NLP中非常流行,因為它們最初是在[2]中引入的。隨著效能的提高,出現了很多很多的引數。準確地說,BERT的引數超過了1.1億,這裡還沒有討論BERT-large。對知識蒸餾的需要是明顯的,因為 BERT 非常通用且效能良好,還有就是後來的模型基本上以相同的方式構建,類似於 RoBERTa [3],所以能夠正確的提取和使用BERT裡面包含的內容可以讓我們達到一舉兩得的目的。

DistilBERT 方法

第一篇關於 BERT 提煉的論文是給我們靈感的論文,即 [1]。但是其他方法也會陸續介紹,例如 [4] 或 [5],所以我們很自然地想知道為什麼將自己限制在 DistilBERT 上。答案有三點:第一,它非常簡單,是對蒸餾的一個很好的介紹;其次,它帶來了良好的結果;第三,它還允許提煉其他基於 BERT 的模型。

DistilBERT 的蒸餾有兩個步驟,我們將在下面詳細介紹。

完整文章請訪問 :BERT 模型的知識蒸餾: DistilBERT 方法的理論和機制研究