谷歌推出新模型「pQRNN」,少量參數(shù)下進行文本分類,性能堪比BERT
近日,谷歌推出了新模型「pQRNN」,它是由去年推出的「PRADO」進一步使用小模型改進而得,達到了SOTA結(jié)果。pQRNN的新穎之處在于,它可以結(jié)合一個簡單的映射和一個quasi-RNN編碼器來進行快速并行處理。同時,谷歌證明了該模型能在參數(shù)較少的情況下進行文本分類任務(wù),并達到BERT級別的性能表現(xiàn)。
深層神經(jīng)網(wǎng)絡(luò)的快速發(fā)展在過去的十年中徹底改變了自然語言處理(NLP)領(lǐng)域 。同時,諸如保護用戶隱私、消除網(wǎng)絡(luò)延遲、啟用離線功能以及降低運營成本等問題,迅速推動了可以在移動設(shè)備而不是在數(shù)據(jù)中心運行的 NLP 模型的發(fā)展。
然而,因為移動設(shè)備的內(nèi)存和處理能力有限,這就要求運行在移動設(shè)備上的模型體積小、效率高,而且不影響其結(jié)果的質(zhì)量。
去年,谷歌發(fā)表了一個名為「PRADO」的神經(jīng)結(jié)構(gòu),使用一個參數(shù)量小于200K 的模型,在許多文本分類問題上取得了SOTA的結(jié)果。雖然大多數(shù)模型對每個token使用固定數(shù)量的參數(shù),但是 PRADO 模型使用的網(wǎng)絡(luò)結(jié)構(gòu)需要極少的參數(shù)來學習任務(wù)最相關(guān)或最有用的token。
PRADO是如何工作的
在一年前開發(fā)時,PRADO 利用了 NLP 領(lǐng)域特有的文本分割來減少模型的大小并提高性能。
圖:PRADO的模型結(jié)構(gòu)
圖:PRADO和LSTM在Yelp數(shù)據(jù)集上的對比
通常,NLP 模型的文本輸入首先被處理成適合輸入神經(jīng)網(wǎng)絡(luò)的形式,將文本分割成與預定義的通用字典(包含所有可能的token列表)中的值相對應(yīng)的Segment。
然后,神經(jīng)網(wǎng)絡(luò)使用可訓練的參數(shù)惟一地識別每個Segment,該參數(shù)包括Embedding table。然而這種利用文本分割的方式對模型的性能、大小和延遲有很大的影響。
下圖顯示了使用各種的方法及其優(yōu)缺點:
由于文本片段的數(shù)量是模型性能和壓縮的一個重要參數(shù),從而產(chǎn)生了一個問題: NLP 模型是否需要能夠清楚地識別每一個可能的文本片段。為了回答這個問題,谷歌還研究了 NLP 任務(wù)的內(nèi)在復雜性。
只有少數(shù) NLP 任務(wù)(例如語言模型和機器翻譯)需要知道文本片段之間的細微差別,因此需要能夠唯一地識別所有可能的文本片段。相比之下,其他大多數(shù)任務(wù)可以通過了解這些片段的一個小子集來解決。
此外,與任務(wù)相關(guān)的片段的子集可能不是最常見的片段,如 a,an,the 等,這對于許多任務(wù)來說是無用的片段。因此,允許網(wǎng)絡(luò)為給定的任務(wù)確定最相關(guān)的部分可以帶來更好的性能。
此外,模型不需要能夠唯一地識別這些片段,只需要識別文本片段的簇。例如,情感分類器只需要知道與文本中的情感密切相關(guān)的簇即可。
利用這些發(fā)現(xiàn),PRADO 被設(shè)計用來學習來自單詞而不是單詞片段或字符的文本片段簇,這使它能夠在低復雜度的 NLP 任務(wù)中取得良好的表現(xiàn)。由于單詞粒度更有意義,而且對于大多數(shù)任務(wù)來說最相關(guān)的單詞數(shù)量很少,所以學習這樣一個相關(guān)單詞構(gòu)成的子集所需的模型參數(shù)就少得多。
pQRNND:改進PRADO
在 PRADO 成功的基礎(chǔ)上,我們提出了一種改進的NLP模型 pQRNN。該模型由三個構(gòu)建塊、一個將文本中的token轉(zhuǎn)換為三元向量序列的投影算子、一個稠密的bottleneck層和一堆 QRNN 編碼器組成。
pQRNN 中投影層的實現(xiàn)與 PRADO 中使用的相同,并幫助模型學習最相關(guān)的tokens,而不需要使用一組固定的參數(shù)來定義它們。它首先在文本中標記出tokens,并使用一個簡單的映射函數(shù)轉(zhuǎn)換成三元特征向量。
這使得這個三元向量序列具有平衡的對稱分布并且可以唯一地表示文本。這種表示并不直接有用,因為它沒有解決所關(guān)心的任務(wù)所需的任何信息,而且網(wǎng)絡(luò)也無法控制這種表示。
我們將它傳入一個密集的bottleneck層,使網(wǎng)絡(luò)能夠?qū)W習與當前的任務(wù)相關(guān)的單詞表示法,但bottleneck層產(chǎn)生的表示仍然沒有考慮到單詞的上下文。
接下來通過使用一堆雙向 QRNN 編碼器來學習上下文表示,其結(jié)果就是使得網(wǎng)絡(luò)能夠從沒有經(jīng)過預處理的輸入文本中學習到上下文表示。
pQRNN的性能表現(xiàn)
作者在civil-comments數(shù)據(jù)集上對 pQRNN 進行評估,并在同一任務(wù)上與 BERT 模型進行比較。
簡單地說,因為模型大小與參數(shù)數(shù)目成正比,故pQRNN參數(shù)比 BERT 小得多。此外,pQRNN 是量化處理過的,進一步減少了4倍的模型大小。
公開訓練的 BERT 版本在這項任務(wù)上表現(xiàn)不佳,因此將其與通過幾個不同相關(guān)多語種數(shù)據(jù)源預訓練后的BERT版本進行比較,以獲得盡可能好的性能。
結(jié)論:輕量級文本分類神器
通過使用上一代模型PRADO證明了它可以作為下一代最先進的輕量級文本分類模型的基礎(chǔ)。改進后的pQRNN模型表明這種新的體系結(jié)構(gòu)幾乎可以達到BERT級的性能,盡管只使用1/300的參數(shù)量和有監(jiān)督的數(shù)據(jù)。
為了促進這一領(lǐng)域的進一步研究,谷歌現(xiàn)在已經(jīng)開源了 PRADO 模型,并鼓勵社區(qū)使用它作為新模型架構(gòu)的起點。
項目地址:https://github.com/tensorflow/models/tree/master/research/sequence_projection