機器之心編輯部
在最新的博客文章中,谷歌公布了一個新的 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