今天,百度 ERNIE 再升級,釋出持續學習語義理解框架 ERNIE 2.0,同時藉助飛槳高效分散式訓練優勢釋出了基於此框架的 ERNIE 2.0 預訓練模型。該模型在共計 16 箇中英文任務上超越了 BERT 和 XLNet,取得了 SOTA 效果。
近兩年,以 BERT、XLNet 為代表的無監督預訓練技術在多個自然語言處理任務上取得了技術突破。基於大規模資料的無監督預訓練技術在自然語言處理領域變得至關重要。
百度發現,之前的工作主要透過詞或句子的共現訊號,構建語言模型任務進行模型預訓練。例如,BERT 透過掩碼語言模型和下一句預測任務進行預訓練。XLNet 構建了全排列的語言模型,並透過自迴歸的方式進行預訓練。
然而,除了語言共現資訊之外,語料中還包含詞法、語法、語義等更多有價值的資訊。例如,人名、地名、機構名等詞語概念知識,句子間順序和距離關係等結構知識,文字語義相似度和語言邏輯關係等語義知識。那麼如果持續地學習各類任務,模型的效果能否進一步提升?這就是 ERNIE 2.0 希望探索的。
ERNIE 2.0 新一代升級
之前機器之心就曾介紹過百度開源的 ERNIE 1.0,今天百度也開源了 ERNIE 2.0 的 Fine-tuning 程式碼和英文預訓練模型。那麼相比 1.0,ERNIE 2.0 的升級包括哪些方面呢?
ERNIE 2.0 開源地址:https://github.com/PaddlePaddle/ERNIE
具體而言:
BERT、XLNet 等主流方法都強調透過強力的 Transformer 直接構建語言模型,而 ERNIE 2.0 透過多工預訓練的方法加強模型學到的語言知識。
ERNIE 2.0 透過增量學習的方式更新,也就是說可以透過自定義的 NLP 任務微調已訓練模型,加強預訓練效果。
ERNIE 2.0 模型在英語任務上很多都優於 BERT 和 XLNet,在 7 個 GLUE 任務上取得了最好的結果;中文任務上,ERNIE 2.0 模型在所有 9 箇中文 NLP 任務上全面優於 BERT。
當然這只是更新主要體現的方面,還有很多核心思想、調優技巧都隱藏在模型中。下面就讓我們看看 ERNIE 2.0 的主要思想及具體結構都是什麼樣的吧。
ERNIE 2.0 是什麼
如前所述,文字中還有很多非常有價值的資訊,為此百度提出持續學習語義理解框架 ERNIE 2.0。該框架支援增量引入不同角度的自定義預訓練任務,以捕捉語料中詞法、語法、語義等資訊。這些任務透過多工學習對模型進行訓練更新,每當引入新任務時,該框架可在學習該任務的同時,不遺忘之前學到過的資訊。
ERNIE 2.0 論文地址:https://arxiv.org/pdf/1907.12412v1.pdf
ERNIE 框架支援隨時引入各種自定義任務,這些任務共享相同的編碼網路並透過多工學習實現訓練。這種多工學習的方法使得不同任務中詞彙、句法和語義資訊的編碼能共同學習。此外,當我們給出新的任務時,ERNIE 2.0 框架可以根據先前預訓練的權重增量地學習分散式表徵。
如下原論文圖 1 所示,ERNIE 2.0 框架是基於預訓練/微調架構構建的,這種架構在 NLP 中非常流行。ERNIE 2.0 與 BERT 或 XLNet 等經典預訓練方法的不同之處在於,它並不是在少量的預訓練任務上完成的,而是透過不斷引入大量預訓練任務,從而幫助模型高效地學習詞彙、句法和語義表徵。
此外重要的是,ERNIE 2.0 框架能透過多工學習持續更新預訓練模型,這也就是「連續預訓練」的含義。在每一次微調中,ERNIE 會首先初始化已經預訓練的權重,然後再使用具體任務的資料微調模型。
圖 1:ERNIE 2.0 框架,如上所示 ERNIE 2.0 可以序列地學習不同的任務,並透過微調適應各種新的自然語言理解任務。
注意其中的連續預訓練過程,它可以分為兩個步驟,即構建無監督預訓練任務和透過多工學習增量地更新 ERNIE 模型。這裡不同的任務是一個序列,因此模型在學習新任務時能記住已經學到過的知識。
如下圖 2 所示為連續預訓練的架構,它包含一系列共享的文字編碼層來編碼上下文資訊,這些文字編碼層可以透過迴圈神經網路或 Transformer 構建,且編碼器的引數能透過所有預訓練任務更新。
圖 2:ERNIE 2.0 中多工預訓練的架構。
最後,為了驗證上面這種預訓練方式的有效性,百度的研究者透過一系列無監督自然語言處理任務構建預訓練模型。如下圖 3 所示為 ERNIE 2.0 具體模型結構,我們可以看到它主要包含三類預訓練任務。其中 word-aware 任務將教會模型捕捉詞彙層面的資訊,structure-aware 任務將教會模型捕捉句法層面的資訊,semantic-aware 任務則負責提供語義方面的資訊了。
圖 3:ERNIE 2.0 模型的具體結構,其採用的 7 個任務都可以分到三大類中。
值得注意的是,相比 BERT 等模型,ERNIE 2.0 會帶有一個任務嵌入,這個嵌入對於不同的任務都是唯一的,因此在精調的過程中模型能清楚地知道目前預訓練的任務到底是什麼。
因此,依託該框架的 ERNIE 2.0 預訓練模型不僅實現了 SOTA 效果,而且為開發人員定製自己的 NLP 模型提供了方案。
ERNIE 2.0 效果怎麼樣
百度研究者分別比較了 ERNIE 2.0 和當前最優預訓練模型在中英文任務上的效能。英文任務中,ERNIE 2.0 在自然語言理解資料集 GLUE 的 7 個任務上擊敗了 BERT 和 XLNet。中文上,ERNIE 2.0 在閱讀理解、情感分析、問答等不同型別的 9 個資料集上超越了 BERT,並重新整理了 SOTA。
為了方便與 BERT 進行對比,百度研究者使用與 BERT 相同的 transformer 模型設定。ERNIE 2.0 base 模型使用 48 塊英偉達 v100 GPU,large 模型使用了 64 塊英偉達 v100 GPU。ERNIE 2.0 在百度深度學習框架 PaddlePaddle 中實現。
資料
模型訓練所用英文資料是維基百科和 BookCorpus,另有一部分來自 Reddit,此外,百度使用 Discovery 資料作為篇章關係資料。而中文資料則包括來自百度搜尋引擎的百科、新聞、對話、資訊檢索和篇章關係資料。具體資料統計情況見下表:
ERNIE 2.0 在英文任務上的效能
ERNIE 2.0 模型在 GLUE 資料集上的效能如下表所示。我們可以從表中看到,ERNIE 2.0_BASE 模型在全部 10 項任務中的效能均超越 BERT_BASE,得到了 80.6 的分數。
ERNIE 2.0_LARGE 在除 MNLI-m 以外的其他任務中的效能均超過 BERT_LARGE 和 XLNet_LARGE。而 ERNIE 2.0LARGE 在全部任務測試集上的效能均超過 BERT_LARGE,得到了 83.6 的分數,比之前的 SOTA 模型 BERT_LARGE 提升了 3.1%。
表 6:模型在 GLUE 上的結果,其中開發集上的結果是五次實驗結果的中位數,測試集結果是透過 GLUE 評估服務完成的。
ERNIE 2.0 在中文任務上的效能
研究者在 9 箇中文 NLP 任務上進行了大量實驗,這些任務包括機器閱讀理解、命名實體識別、自然語言推斷、語義相似度、語義分析和問答。
那麼具體效果如何呢?下表展示了 ERNIE 2.0 等模型在這些中文任務上的效能。
表 7:模型在 9 項常規中文 NLP 任務中的結果。模型結果均為五次實驗結果的中位數,粗體字表示 SOTA 結果。
ERNIE 2.0 在全部 9 項任務上的效能均超越 BERT_BASE,且 ERNIE 2.0_LARGE 在這些中文任務上獲得了最優效能,創造了新的 SOTA 結果。