1. 程式人生 > 實用技巧 >獨家 | 用spaCy蒸餾BERT模型

獨家 | 用spaCy蒸餾BERT模型


作者:YVES PEIRSMAN

翻譯:詹榮輝

校對:閆曉雨

本文約2800字,建議閱讀7分鐘

本文為大家介紹了用spaCy對BERT進行模型蒸餾,其效能也能接近BERT。

Photo onBlog

序列化和反序列化

遷移學習是自然語言處理領域最有影響力的最新突破之一。在其釋出不到一年的時間裡,谷歌的BERT及其後代(RoBERTa,XLNet等)主導了大多數NLP排行榜。雖然將這些龐大的模型投入生產可能令人頭疼,但存在各種解決方案來顯著減小其尺寸。在NLPTown,我們成功地應用了模型蒸餾技術來訓練spaCy的文字分類器,使其在產品評論的情感分析方面的表現與BERT幾乎一樣優秀。

最近,自然語言處理的標準方法發生了巨大變化。直到一年前,幾乎所有NLP模型都是完全從頭開始訓練的(通常經過預訓練的單詞嵌入除外),而如今,最保險的方法是下載諸如BERT這樣的預訓練模型,並對其進行微調以適應特定的NLP任務。因為這些遷移學習模型已經學習到了大量未標記的文字,所以它們已經獲得了許多有關語言的知識:它們瞭解單詞和句子的含義,共指,語法等。令人興奮的是,像BERT這樣的模型具有如此眾多的引數,它們相當緩慢且佔用大量資源。至少對於某些NLP任務,調BERT就像殺雞用牛刀一樣。

大錘模型

大多數遷移學習模型都很龐大。BERT的基本模型和多語言模型都具有12層,每層隱藏層的神經元大小為768,並具有12個自注意力頭——總引數不少於110M。BERT-large擁有高達340M的引數。儘管如此,BERT與更近期的模型相比還是相形見絀,例如具有665M引數的FacebookXLM和具有774M的OpenAI的GPT-2。顯然,朝著更大模型的發展將持續一段時間。

Generalmodels like BERT can be finetuned for particular NLP tasks (from:Devlin et al. 2018).

當然,語言是一種複雜的現象。很明顯,引數相對較少,更傳統,更小的模型無法處理您向它們丟擲的所有NLP任務。但是,對於單獨的文字分類或序列標記任務,是否確實需要BERT及其同類的所有表達能力是值得懷疑的。這就是研究人員開始研究如何減小這些模型的尺寸的原因。出現了三種可能的方法:通過量化以較少的位進行編碼來降低模型中權重的精度,通過修剪來完全刪除模型的某些部分(連線權重,神經元甚至是全權重矩陣),而蒸餾的目的是訓練一個小模型來模仿大模型的行為。

用模型蒸餾進行情感分析

在NLP Town的一個暑期專案中,我們與實習生SimonLepercq一起研究了模型蒸餾在情感分析中的有效性。像龐(Pang),李(Lee)和威賽亞娜(Vaithyanathan)在他們的開創性論文中一樣,我們的目標是建立一個能夠區分正面和負面評論的NLP模型。我們收集了六種語言的產品評論:英語,荷蘭語,法語,德語,義大利語和西班牙語。我們將帶有1或2顆星的評論貼上負面標籤,帶有4或5顆星的評論則視為正面。我們使用了1000個示例進行培訓,1000個示例用於開發(提前停止)和1000個示例進行測試。

第一步是確定我們任務的基準。在我們的每個資料集中有相同數量的陽性和陰性例項,隨機基線平均將獲得50%的準確度。作為一個簡單的機器學習基線,我們訓練了spaCy文字分類模型:詞袋模型和一個相當簡單的卷積神經網路的堆疊整合,具有均值合併和注意力。在此基礎上,我們添加了一個節點的輸出層,並讓模型輸出得分高於0.5時預測為正,否則為負。在測試資料上,此基準達到了79.5%(對於義大利語)和83.4%(對於法語)之間的準確性——不錯,但結果也不是很好。

BERT gives anaverage error reduction of 45% over our simpler spaCy models.

由於訓練集小,我們的挑戰非常適合遷移學習。即使訓練資料中沒有測試詞(例如,很棒的書),BERT也已經知道它與出色的小說,奇妙的讀物或訓練集中很可能出現的另一個類似的片語相似。因此,與從頭開始訓練的簡單模型相比,它應該能夠更加可靠地預測從來沒見過的評論的評分。

為了微調BERT,我們改進了PyTorch-Transformers庫中的BERTForSequenceClassification類,以用於二進位制分類。對於所有六種語言,我們都微調了BERT-multilingual-cased,這是Google目前推薦的多語言模型。結果證實了我們的期望:BERT的準確度在87.2%(荷蘭語)和91.9%(西班牙語)之間,平均比我們最初的spaCy模型高出8.4%。這意味著BERT幾乎將測試集上的錯誤數量減半。

模型蒸餾

不幸的是,BERT並非沒有缺點。我們的六個微調模型中的每個模型都佔用了將近700MB的磁碟空間,其推理時間比spaCy的要長得多。這使得它們難以部署在資源有限的裝置上,或者難以同時部署給許多使用者。為了解決這些挑戰,我們轉向模型蒸餾:我們將經過微調的BERT模型作為教師,而spaCy的簡單卷積模型則作為學習模仿老師行為的學生。我們遵循Tang (2019)等人描述的模型蒸餾方法。他們展示了將BERT蒸餾成簡單的BiLSTM是可能的,並獲得類似於具有100倍以上引數的ELMo模型的結果。

The processof model distillation.

在我們開始訓練我們的小型模型之前,我們需要更多的資料。為了學習和模仿BERT的行為,我們的學生需要檢視比原始訓練集更多的示例。Tang等人採用了三種方法進行資料擴充(在原始訓練資料的基礎上建立合成訓練資料):

  • 遮蔽訓練資料中的隨機單詞。例如,我現在喜歡這本書成為我[MASK]這本書。

  • 用相同詞性的另一個單詞替換訓練資料中的其他隨機單詞。例如,我喜歡這本書就變成我喜歡這個螢幕。

  • 從訓練示例中隨機抽樣一個長度為1到5的n-gram。

  • 由於我們資料集中的產品評論可能相當長,因此我們在上述三個方法中添加了第四個方法:

  • 從訓練示例中隨機抽取一個句子。

這些增強方法不僅幫助我們建立了一個比原始訓練集大很多倍的訓練集;通過取樣和替換訓練資料的各個部分,它們還向學生模型告知哪些單詞或短語對其教師的輸出有影響。此外,為了給它儘可能多的資訊,我們不會向學生顯示其老師為某項物品預測的標籤,而是顯示它的精確輸出值。通過這種方式,小型模型可以瞭解最佳類別到底有多準確,以及與其他類別的比較。Tang等(2019)用老師的對數訓練了小模型,但是我們的實驗表明使用概率也可以得到很好的結果。

蒸餾結果

模型蒸餾的最大優點之一是它與模型無關:教師模型可以是一個黑匣子,而學生模型可以具有我們喜歡的任何架構。為使實驗簡單,我們選擇了與基線相同的spaCy文字分類器作為學生。訓練過程也保持不變:我們使用相同的批次大小,學習速率,退出和損失函式,並在訓練資料的準確性停止上升時停止訓練。我們使用上述的擴充方法將每種語言的大約60,000個示例的合成數據集組合在一起。然後,我們收集了經過微調的BERT模型針對這些資料的預測。連同原始訓練資料,這已成為我們較小spaCy模型的訓練資料。

The distilledspaCy models perform almost as well as the original BERT models.

儘管設定很簡單,蒸餾後的spaCy模型卻明顯優於我們的初始spaCy基線。平均而言,它們的精度提高了7.3%(僅比BERT模型低1%),誤差減少了39%。他們的表現表明,對於諸如情感分析之類的特定任務,我們並不需要BERT提供的所有表達能力。訓練一個性能幾乎與BERT相同但引數少得多的模型是完全可能的。

結論

隨著大型遷移學習模型的日益普及,將NLP解決方案投入生產變得越來越具有挑戰性。但是,諸如模型蒸餾之類的方法表明,對於許多工而言,不需要數億個引數即可實現高精度。我們用六種語言進行情感分析的實驗表明,訓練spaCy的卷積神經網路來與更復雜的模型架構(例如BERT的模型)相匹敵,是可能的。將來,我們希望在NLP Town更詳細地研究模型蒸餾。例如,我們旨在找出什麼是最有效的資料增強方法,或者需要多少合成數據來訓練一個較小的模型。

原文標題:

Distilling BERT Models with spaCy

原文連結:

https://towardsdatascience.com/distilling-bert-models-with-spacy-277c7edc426c

編輯:黃繼彥

校對:林亦霖

譯者簡介

詹榮輝,美國天普大學福克斯商學院金融專業本科畢業生,對關於計算機的一切事物感興趣,自學了程式設計,網站開發,自動駕駛,深度學習等等的不同技術,並且也有深度學習相關的從業經驗。希望能夠結實更多志同道合的夥伴,畢竟這個世界不是由一個人建立起來的。

翻譯組招募資訊

工作內容:需要一顆細緻的心,將選取好的外文文章翻譯成流暢的中文。如果你是資料科學/統計學/計算機類的留學生,或在海外從事相關工作,或對自己外語水平有信心的朋友歡迎加入翻譯小組。

你能得到:定期的翻譯培訓提高志願者的翻譯水平,提高對於資料科學前沿的認知,海外的朋友可以和國內技術應用發展保持聯絡,THU資料派產學研的背景為志願者帶來好的發展機遇。

其他福利:來自於名企的資料科學工作者,北大清華以及海外等名校學生他們都將成為你在翻譯小組的夥伴。

點選文末“閱讀原文”加入資料派團隊~

轉載須知

如需轉載,請在開篇顯著位置註明作者和出處(轉自:資料派ID:DatapiTHU),並在文章結尾放置資料派醒目二維碼。有原創標識文章,請傳送【文章名稱-待授權公眾號名稱及ID】至聯絡郵箱,申請白名單授權並按要求編輯。

釋出後請將連結反饋至聯絡郵箱(見下方)。未經許可的轉載以及改編者,我們將依法追究其法律責任。



點選“閱讀原文”擁抱組織