1. 程式人生 > 實用技巧 >效能媲美BERT,但引數量僅為1/300,這是谷歌最新的NLP模型

效能媲美BERT,但引數量僅為1/300,這是谷歌最新的NLP模型

點選上方,選擇星標置頂,不定期資源大放送

閱讀大概需要15分鐘

Follow小博主,每天更新前沿乾貨

在最新的部落格文章中,谷歌公佈了一個新的 NLP 模型,在文字分類任務上可以達到 BERT 級別的效能,但引數量僅為 BERT 的 1/300。

在過去的十年中,深度神經網路從根本上變革了自然語言處理(NLP)領域的發展,但移動端有限的記憶體和處理能力對模型提出了更高的要求。人們希望它們可以變得更小,但效能不打折扣。

去年,谷歌釋出了一種被稱為 PRADO 的神經架構,該架構當時在許多文字分類問題上都實現了 SOTA 效能,並且引數量少於 200K。大多數模型對每個 token 使用固定數目的引數,而 PRADO 模型使用的網路結構只需要很少的引數即可學習與任務最相關或最有用的 token。

論文連結:https://www.aclweb.org/anthology/D19-1506.pdf

在最新的部落格文章中,谷歌的研究者宣佈它們改進了 PRADO,並將改進後的模型稱為 pQRNN。新模型以最小的模型尺寸達到了 NLP 任務的新 SOTA。pQRNN 的新穎之處在於,它將簡單的投影運算與 quasi-RNN 編碼器相結合,以進行快速、並行的處理。該研究表明,pQRNN 模型能夠在文字分類任務上實現 BERT 級別的效能,但引數量僅為原來的 1/300

PRADO 的工作原理

在一年前開發該模型時,PRADO 在文字分割上充分利用特定領域的 NLP 知識,以降低模型大小和提升模型效能。通常來說,首先通過將文字分割成與預定義通用詞典中的值相對應的 token,將 NLP 模型的文字輸入處理成適用於神經網路的形式。然後,神經網路使用可訓練引數向量(包括嵌入表)來唯一識別每個文字片段。但是,文字分割的方式對模型效能、大小和延遲都有顯著的影響。

下圖展示了 NLP 社群使用的各種文字分割方法及其相應的優缺點:

由於文字片段的數量是影響模型效能和壓縮的重要引數,因此引出了一個問題,即 NLP 模型是否需要能夠清楚地識別每個可能的文字片段。為了回答這個問題,研究者探索了 NLP 任務的固有複雜性。

只有語言建模和機器翻譯等少數 NLP 任務需要了解文字片段之間的細微差異,因此可能需要唯一識別所有可能的文字片段。其他大多數任務僅通過了解這些文字片段的子集即可解決。此外,任務相關的文字片段子集並不一定是頻率最高的部分,因為可能很大一部分是專用的冠詞,如 a、an 和 the,而這些對很多工來說並不重要。

所以,允許網路決定給定任務的最相關片段可以實現更好的效能。並且,網路不需要唯一識別這些文字片段,只需要識別出文本片段的聚類即可。舉例而言,情感分類器只需要瞭解與文字中的情感強相關的片段聚類就行了。

基於此,PRADO 被設計成從詞(word)中學習文字片段的聚類,而不是 word piece 或字元,從而使它能夠在低複雜度 NLP 任務中實現良好的效能。由於 word unit 更有意義,而且與大多數任務最相關的詞並不多,所以學習相關詞聚類的簡化子集所需要的模型引數就少了很多。

改進 PRADO

谷歌研究者在 PRADO 的基礎上開發了一個更強的 NLP 模型——pQRNN。該模型由三個構建塊組成——一個是將文字中的 token 轉化為三元向量序列的投影運算元、一個密集 bottleneck 層和若干 QRNN 編碼器

pQRNN 中投影層的實現與 PRADO 中所用到的一致,幫助模型學習相關性最強的 token,但沒有一組固定的引數來定義這些 token。它首先對文字中的 token 進行識別,然後使用一個簡單的對映函式將其轉換為三元特徵向量。這將產生一個三元向量序列,該序列具有平衡對稱分佈,用來表示文字。這種表示沒有直接用途,因為它不包含解決感興趣任務所需的任何資訊,而且網路無法控制這種表示。

研究者將其與一個密集 bottleneck 層結合在一起,以使網路可以學習到一個與手頭任務相關的逐詞表示。bottleneck 層產生的表示仍然沒有考慮到詞的上下文。因此,研究者利用若干雙向 QRNN 編碼器學習了一個上下文表示。這樣可以得到一個僅從文字輸入就能學到上下文表示的網路,並且無需任何預處理。

pQRNN 的效能

研究者在 civil_comments 資料集上評估了 pQRNN,並將其與 BERT 模型在相同的任務中進行了比較。模型的大小與其引數量成正比,因此 pQRNN 比 BERT 小得多

此外,pQRNN 還進行了量化處理(quantized),因此模型體積進一步縮小到原來的 1/4。公開訓練的 BERT 在本文的任務中表現不好,因此拿來對比的 BERT 其實是在幾個不同的相關多語言資料來源上進行預訓練得到的,以使其達到最好的表現。

在實驗中,研究者得到了兩個模型的 AUC 資訊。在沒有任何預訓練、只在監督資料訓練的情況下,pQRNN 的 AUC 是 0.963,用到了 130 萬個量化(8-bit)引數。在幾個不同資料來源進行預訓練並在監督資料上進行微調之後,BERT 模型得到的 AUC 是 0.976,用到了 1.1 億個浮點引數。

為了鼓勵社群在谷歌研究成果的基礎上做出進一步改進,谷歌還開源了 PRADO 模型。

專案地址:https://github.com/tensorflow/models/tree/master/research/sequence_projection

部落格連結:https://ai.googleblog.com/2020/09/advancing-nlp-with-efficient-projection.html

重磅!自然語言處理技術交流群已成立!

歡迎各位NLPer加入自然語言處理技術交流群,本群旨在交流文字分類、語音識別、閱讀理解、機器翻譯、情感分析、資訊檢索、問答系統自然語言處理領域內容。自然語言處理領域前沿資訊將會第一時間在群裡釋出!歡迎大家進群一起交流學習!

麻煩大家進群后請備註:研究方向+學校/公司+暱稱(如文字分類+浙大+小民)

廣告商、博主請繞道!

????長按識別新增,邀請您入群!