模型訓練語料少?知識蒸餾解決煩惱

做爲深度學習的基礎,人工神經網絡模型一直是人工智能的研究熱點,也在各個領域發揮着重要的做用。好的模型每每伴隨着龐大的體積和海量的參數,這不利於模型的復現和部署。算法

拿天然語言處理領域(NLP)中最多見的詞向量模型來舉例。想要訓練一個高質量的詞向量模型,就須要大量優質的語料來支持。對於使用普遍的語種,好比英語,獲取語料和訓練模型相對容易。反觀一些小語種,語料少,獲取難,縱有再好的網絡結構,訓練出來的模型性能也不盡人意。數據庫

難道小語種的NLP研究就沒辦法推動下去了嗎?markdown

知識蒸餾

知識蒸餾算法爲解決這類問題提供了一種新的思路。在化學中,蒸餾是一個有效的分離沸點不一樣的組分的方法,同理,簡單地理解知識蒸餾,它能將複雜模型(Teacher)中的知識提取出來,遷移到另外一個輕量級模型(Student),達到壓縮模型的目的。 這種作法既減小了對硬件的要求,縮短了計算時間,又能學到複雜模型中的泛化能力,實現近似原模型的效果。網絡

R-C.png

詞向量是什麼

一切天然語言處理任務都始於文本在計算機中的表示。隨着文本表示方法的不斷演變,目前最熱門的方法當屬詞向量模型。它的核心思想是經過大量的語料訓練,將詞轉化爲稠密的向量,映射到向量空間中,而且對於意思相近的詞,它們對應的向量也相近。框架

準確的詞向量模型是其餘下游任務(文本類似度、情感分類、信息抽取等)的基礎和保證。想要得到優質的詞向量模型,須要大量高質量的語料的支持。然而,絕大多數現有的詞向量方法都有一個共同點——它們只支持單語言,一般是英語。這使得它們沒法直接應用到其餘語言場景中。ide

diagram-20190710.png

上圖展現了一個詞向量的簡單例子:
詞向量模型能夠將「king」,「queen」,「man」,「woman」映射到一個向量空間中去,經過向量的基本運算(例如相加和相減),咱們能夠計算出這些詞之間的語義關係。 在這個例子中,queen=king-man+womanoop

詞向量+知識蒸餾=?

近年來,多語種的文本表示方法受到了普遍的關注,人們提出了不少方案試圖解決這個問題。常見的方法就是分別用每種語言來訓練對應的詞向量模型,但因爲有些語種的語料不多,難以知足模型訓練的要求。post

曾有學者提出使用經典的基於sequence-to-sequence的encoder-decoder框架,首先實現從一種語言到另外一種語言的機器翻譯模型,而後將encoder層的輸出做爲句子的向量(LASER模型)。性能

這種模型能夠很好地識別出被準確翻譯成不一樣語言的句子,可是對於沒有被準確翻譯的句子,該模型很難評估他們的類似度。另外,訓練這種模型也須要極高的硬件條件支持,獲得一個支持93種語言的詞向量模型,大約須要在16塊NVIDIA V100 GPUs上訓練5天時間。學習

R-C (1).png

最近,有相關研究人員想到了一個idea來解決這個問題:對於意思相同,可是翻譯成了不一樣語言的句子,他們映射到向量空間中的位置應該是一致的。基於此,他提出使用知識蒸餾的方法,將現有的單語言詞向量模型擴展到新的語言上去。

image3 (1).png

總體的解決思路以下:

咱們須要一個源語言的詞向量模型做爲teacher model,一個從源語言s到目標語言t的平行語料庫((s1,t1 ), … ,(sn , tn)),值得注意的是,ti能夠是不一樣的語種。而後,使用均方偏差做爲loss,訓練一個student model,使得student model的輸出儘量地靠近teacher model。

經過這樣的方式,student model能夠很好地學習到teacher model的泛化能力,而且擁有兩條很是重要的屬性:

A. 跨語言的向量空間也呈現出一致性。換言之,由同一個句子翻譯成的不一樣語言,它們的向量是很是接近的;

B. teacher model中所包含的向量空間的屬性能被很好地轉移到其餘語種中去。

相比於其餘的訓練多語言詞向量模型的方法,這種方法有以下幾個優勢:

A. 僅僅只須要很是少許的樣本,就能夠將已有的模型擴展到新的語言上去;

B. 它能夠更容易地在向量空間中確保達到預期的性能;

C. 整個訓練過程對硬件的要求很是低。

爲了驗證想法的可行性,相關科研人員作了如下的實驗:

在模型的選擇方面,主要使用英語的SBERT模型做爲teacher model,使用XLM-RoBERTa(XLM-R)做爲student model。英語的SBERT模型詞典包含了30k的英語tokens,在多個句向量任務中取得了state-of-the-art的效果。XLM-R使用了SentencePiece做爲文本分詞器,很好地迴避了某些語種所須要的特殊預處理,能夠直接應用到全部語言的原始文本上去,此外,它的詞典包含來自一百多種語言的250k的tokens,很是適合作多語言詞向量模型。

在訓練數據方面,主要使用瞭如下的數據集:

Snipaste_2021-08-10_10-00-21.png

對於某些資源較少的語言,獲取平行語料是很困難的,所以也使用了一些雙語詞典來擴充語料,本次實驗主要使用到的詞典有如下兩個:
• MUSE
• Wikititles

爲了驗證模型效果,研究人員主要在Multi- and Cross-lingual Semantic Textual Similarity (STS),Bitext Retrieval和Cross-lingual Similarity Search三個任務上進行了實驗。

STS任務的主要目標是爲一對句子輸出一個值來反映它們之間的語義類似度。 例如,能夠用0分表示兩個句子徹底無關,5分表示兩個句子的語義徹底一致。

在公開數據集STS 2017 dataset上,做者使用斯皮爾曼等級相關係數來評估不一樣模型的效果。將多個語種的得分取平均值,咱們能夠發現,蒸餾模型XLM-R←SBERT-paraphrases的結果(83.7)優於其餘傳統算法模型LASER(67.0),mUSE(81.1),LaBSE(73.5)。

Bitext Retrieval任務旨在從兩個不一樣語種的語料庫中識別出互爲翻譯的句子對。 做者使用BUCC mining task中的數據集來計算模型的F1值,蒸餾模型XLM-R←SBERT-paraphrases的結果(88.6)和其餘傳統算法模型LASER(93.0),mUSE(87.7),LaBSE(93.5)互有高低。因爲蒸餾模型會把某些語義類似可是缺失部分細節元素(例如日期,地點等)的句子也判斷成互爲翻譯的句子對,因此在這個任務下,它的結果不是最好的。可是這仍然可以說明,它很是適合尋找語義類似的句子對。

關於Cross-lingual Similarity Search任務,做者選擇了在Tatoeba數據庫上進行實驗。 這個任務須要找到與全部源語言的句子最類似的其餘語言的句子,結果以下:

image4.png

能夠看到在小語種上,蒸餾模型的效果要明顯好於傳統模型。

今天和你們分享了一種基於蒸餾思想的訓練詞向量模型的方法,能夠實現將一個高質量的單語言模型擴展到其餘語言上去。從實驗結果來看,對於常見問題,蒸餾模型也能有不錯的效果,在小語種上的表現尤其突出,同時蒸餾模型也節省了很大一部分的硬件開支,是很值得嘗試的一種方法。

後續咱們還會分享更多相關領域的文章,感興趣的小夥伴們不要忘了關注咱們的帳號 LigaAI@juejin,同時歡迎點擊咱們的官方網站 LigaAI-新一代智能研發管理平臺,瞭解咱們~

參考文獻:

[1] Reimers N , Gurevych I . Making Monolingual Sentence Embeddings Multilingual using Knowledge Distillation[J]. 2020.
[2] Artetxe M , Schwenk H . Massively Multilingual Sentence Embeddings for Zero-Shot Cross-Lingual Transfer and Beyond[J]. 2019.
[3] Chidambaram M , Yang Y , Cer D , et al. Learning Cross-Lingual Sentence Representations via a Multi-task Dual-Encoder Model[C]// Proceedings of the 4th Workshop on Representation Learning for NLP (RepL4NLP-2019). 2019.
[4] Yang Y , Cer D , Ahmad A , et al. Multilingual Universal Sentence Encoder for Semantic Retrieval[J]. 2019.
[5] Feng F , Yang Y , Cer D , et al. Language-agnostic BERT Sentence Embedding[J]. 2020.
圖源:www.ed.ac.uk/informatics…

相關文章
相關標籤/搜索