做者|PURVA HUILGOL
編譯|VK
來源|Analytics Vidhya網絡
咱們正站在語言和機器的交匯處,這個話題我很感興趣。機器能像莎士比亞同樣寫做嗎?機器能提升我本身的寫做能力嗎?機器人能解釋一句諷刺的話嗎?架構
我確定你之前問過這些問題。天然語言處理(NLP)也致力於回答這些問題,我必須說,在這個領域已經進行了突破性的研究,促使彌合人類和機器之間的鴻溝。機器學習
文本分類是天然語言處理的核心思想之一。若是一臺機器可以區分名詞和動詞,或者它可以在客戶的評論中檢測到客戶對產品的滿意程度,咱們能夠將這種理解用於其餘高級NLP任務。函數
這就是咱們在文本分類方面看到不少研究的本質。遷移學習的出現可能促進加速研究。咱們如今可使用構建在一個巨大的數據集上的預訓練的模型,並進行優化,以在另外一個數據集上實現其餘任務。性能
遷移學習和預訓練模型有兩大優點:學習
它下降了每次訓練一個新的深度學習模型的成本優化
這些數據集符合行業公認的標準,所以預訓練模型已經在質量方面獲得了審查編碼
你能夠理解爲何通過預訓練的模特會大受歡迎。咱們已經看到像谷歌的BERT和OpenAI的GPT-2這樣的模型真的很厲害。在這裏中,我將介紹6種最早進的文本分類預訓練模型。.net
XLNet翻譯
ERNIE
Text-to-Text Transfer Transformer(T5)
BPT
NABoE
Rethinking Complex Neural Network Architectures for Document Classification
咱們不能不說起XLNet!
谷歌的最新模型XLNet在文本分類,情感分析,問答,天然語言推理等主要NLP任務上取得了最早進的性能,同時還爲英語提供了必要的GLUE基準。它的性能超過了BERT,如今已經鞏固了本身做爲模型的優點,既能夠用於文本分類,又能夠用做高級NLP任務。
XLNet背後的核心思想是:
語言理解的廣義自迴歸預訓練
Transformer-XL
若是這聽起來很複雜,別擔憂!我要把這些簡化。
自迴歸模型用於預測下一個單詞,使用的單詞在已有的單詞以前或以後出現。可是,不能同時處理前面和後面的單詞,只能處理一個方向。
雖然BERT確實處理了這方面的問題,但它也有其餘缺點,好比假設某些屏蔽詞之間沒有相關性。爲了解決這個問題,XLNet在訓練前階段提出了一種稱爲排列語言模型(Permutation Language Modeling)的技術。這項技術使用排列同時從正向和反向生成信息。
Transformer已經不是什麼祕密了。XLNet使用Transformer-XL。衆所周知,在容許不相鄰的標記也一塊兒處理的意義上,Transformer是循環神經網絡(RNN)的替代,由於它提升了對文本中遠距離關係的理解。
Transformer-XL是BERT中使用的Transformer的加強版本,由於添加了這兩個組件,:
句段層級的循環
相對位置編碼方案
正如我前面提到的,XLNet在幾乎全部任務上都超越BERT,包括文本分類,而且在其中18個任務上實現了SOTA性能!
如下是文本分類任務的摘要,以及XLNet如何在這些不一樣的數據集上執行,以及它在這些數據集上實現的高排名:
儘管ERNIE 1.0(於2019年3月發佈)一直是文本分類的流行模式,但在2019年下半年,ERNIE 2.0成爲熱門話題。由科技巨頭百度(Baidu)開發的ERNIE在英語GLUE基準上的表現超過了Google XLNet和BERT。
ERNIE 1.0以本身的方式開闢了道路——它是最先利用知識圖的模型之一。這一合併進一步增強了對高級任務(如關係分類和名稱識別)模型的訓練。
與它的前身同樣,ERNIE 2.0以連續增量多任務學習的形式帶來了另外一項創新。基本上,這意味着模型定義了7個明確的任務,而且
能夠同時生成多個任務的輸出。例如,完成「I like going to New …」->「I like going to New York」這句話,並將這句話歸類爲有積極的情緒。對於合併的任務,也相應地計算損失
將上一個任務的輸出增量地用於下一個任務。例如,任務1的輸出用做任務一、任務2的訓練;任務1和任務2的輸出用於訓練任務一、2和3等等
我真的很喜歡這個過程,他很是直觀,由於它遵循人類理解文本的方式。咱們的大腦不只認爲「I like going to New York"是一個積極的句子,它也同時理解名詞「New York」和「I」,理解動詞「like」,並推斷紐約是一個地方。
ERNIE在關係抽取任務中的 F1度量爲88.32。
老實說,與其餘模型相比,我在學習這個模型上得到了最大的樂趣。Google的Text-to-Text Transfer Transformer(T5)模型將遷移學習用於各類NLP任務。
最有趣的部分是它將每一個問題轉換爲文本輸入—文本輸出模型。因此,即便對於分類任務,輸入是文本,輸出也將是文本而不是一個標籤。這能夠歸結爲全部任務的單一模型。不只如此,一個任務的輸出能夠用做下一個任務的輸入。
該語料庫使用了Common Crawls的加強版本。這基本上是從網上刮來的文字。本文實際上強調了清理數據的重要性,並清楚地說明了這是如何作到的。雖然收集到的數據每個月產生20TB的數據,但這些數據中的大多數並不適合NLP任務。
即便只保留文本內容(包含標記、代碼內容等的頁面已被刪除),該語料庫的大小仍高達750GB,遠遠大於大多數數據集。
注意:這已經在TensorFlow上發佈了:https://www.tensorflow.org/datasets/catalog/c4。
將要執行的任務與輸入一塊兒編碼爲前綴。如上圖所示,不管是分類任務仍是迴歸任務,T5模型仍會生成新文本以獲取輸出。
T5在20多個已創建的NLP任務上實現了SOTA——這是不多見的,並且從度量標準來看,它儘量接近人類的輸出。
T5模型跟蹤了最近關於未標記數據的訓練趨勢,而後在標記文本上微調該模型。能夠理解的是,這個模型是巨大的,可是咱們頗有興趣看到進一步研究如何縮小這種模型的規模,以得到更普遍的使用和分佈。
正如咱們目前所看到的,Transformer架構在NLP研究中很是流行。BP Transformer再次使用了Transformer,或者更確切地說是它的一個加強版本,用於文本分類、機器翻譯等。
然而,使用Transformer仍然是一個昂貴的過程,由於它使用自我注意機制。自我注意只是指咱們對句子自己進行注意操做,而不是兩個不一樣的句子。自我注意有助於識別句子中單詞之間的關係。正是這種自我關注機制致使了使用Transformer的成本。
Binary-Partitioning Transformer (BPT)將Transformer看做一個圖形神經網絡,旨在提升自注意力機制的效率。實際上,此圖中的每一個節點都表示一個輸入標記。
BP Transformer的工做原理:
第一步:遞歸地把句子分紅兩部分,直到達到某個中止條件爲止。這稱爲二元分區。所以,例如,「I like going to New York」這句話將有如下幾個部分:
注意:一個包含n個單詞的句子將有2*n–1個分區,最後,你將獲得一個完整的二叉樹。
第二步:如今每一個分區都是圖神經網絡中的一個節點。能夠有兩種類型的邊:
第三步:對圖的每一個節點及其相鄰節點執行自注意:
BPT實現了:
我很欣賞這個模型,由於它使我從新審視了圖的概念,並使我勇於研究圖神經網絡。我確定會在不久的未來探索更多的圖形神經網絡!
神經網絡一直是NLP任務最受歡迎的模型,而且其性能優於更傳統的模型。此外,在從語料庫創建知識庫的同時用單詞替換實體能夠改善模型學習。
這意味着,咱們不是使用語料庫中的單詞來構建詞彙表,而是使用實體連接來構建大量實體。雖然已有研究將語料庫表示爲模型,但NABoE模型更進一步:
實體模型的神經注意包使用Wikipedia語料庫來檢測與單詞相關的實體。例如,單詞「Apple」能夠指水果、公司和其餘可能的實體。檢索全部這些實體後,使用基於softmax的注意力函數計算每一個實體的權重。這提供了只與特定文檔相關的實體的一個更小的子集。
最後,經過向量嵌入和與詞相關的實體的向量嵌入,給出了詞的最終表示。
NABoE模型在文本分類任務中表現得特別好:
如今,在研究了這麼多的高級的預訓練模型以後,咱們要反其道而行之,咱們要討論一個使用老的雙向LSTM的模型來實現SOTA性能。但這正是我最後決定介紹它的緣由。
咱們經常由於幾棵樹木而錯過森林。咱們每每忘記,一個簡單的調優的模型可能會得到與這些複雜的深度學習模型同樣好的結果。本文的目的就是要說明這一點。
雙向LSTM和正則化的組合可以在IMDb文檔分類任務上實現SOTA的性能。
本文最有趣和值得注意的方面是:
這個簡約的模型使用Adam優化器,temporal averaging和dropouts來達到這個高分。本文將這些結果與其餘深度學習模型進行了實證比較,證實了該模型簡單有效,而且結果說明了一切:
對於行業而言,這種模型能夠被認爲是一種新穎的方法,在該行業中,構建可用於生產的模型而且在指標上取得高分很是重要。
在這裏,咱們討論了最近在文本分類中達到最新基準的6種預訓練模型。這些NLP模型代表還有更多的模型,我將期待今年學習它們。
全部這些研究中的一個使人敬畏的要素是這些預訓練模型的可用性和開源性質。以上全部模型都有一個GitHub存儲庫,能夠用於實現。另外一個不可忽視的方面是它們在PyTorch上也可用。這強調了PyTorch正在快速取代TensorFlow做爲構建深度學習模型的平臺。
我鼓勵你在各類數據集上嘗試這些模型,並進行實驗以瞭解它們的工做原理。
原文連接:https://www.analyticsvidhya.com/blog/2020/03/6-pretrained-models-text-classification/
歡迎關注磐創AI博客站:
http://panchuang.net/
sklearn機器學習中文官方文檔:
http://sklearn123.com/
歡迎關注磐創博客資源彙總站:
http://docs.panchuang.net/