去年11月份,谷歌研究團隊在GitHub上發布了萬眾期待的BERT,它不僅在11項NLP測試中刷新了最高成績,甚至還表現出全面超越人類的驚人結果。但BERT 帶來的震撼還未平息,今日又一個令眾多NLPer興奮的消息發布: CMU 與谷歌大腦提出的全新XLNet 在 20 個任務上超過了 BERT 的表現,並在 18 個任務上取得了當前最佳效果!而更令人激動的是,目前 XLNet 已經開放了訓練代碼和大型預訓練模型。AI 科技評論將其具體內容整理如下。
BERT與XLNet 的關係
與基於自回歸語言建模的預訓練處理方法相比,基於自編碼的預訓練處理方法(比如BERT)具有良好的雙向上下文建模能力。然而,由於依賴於使用掩碼破壞輸入,BERT忽略了掩碼位置之間的依賴關係,並出現了預訓練-微調(pretrain-finetune)差異。
XLNet則是基於BERT的優缺點,提出的一種泛化自回歸預訓練方法。它通過最大化因子分解順序所有排列的期望似然來實現雙向上下文的學習;通過自回歸公式克服了BERT的局限性,並將來自Transformer-XL(最先進的自回歸模型)的思想集成到預訓練中,在長文本表示的語言任務中表現出了優異的性能。
XLNet 誕生背景
首先,我們要理解兩個概念:自回歸(AR)語言建模和自編碼(AE)。
無監督表示學習在自然語言處理領域非常成功。通常,這些方法首先在大規模無標記文本語料庫上對神經網路進行預訓練,然後對下游任務的模型或表示進行微調。在這一共同的高層次思想下,不同的無監督預訓練目標在相關文獻中得到了探索。其中,自回歸語言建模和自編碼是兩個最成功的預訓練目標。
AR語言建模是利用自回歸模型估計文本語料庫的概率分布。具體來說,給定一個文本序列x = (x1, …,xT), AR語言模型將這種可能性分解為前向乘積或後向乘積。一個參數模型(如神經網路)被訓練來對每個條件分布建模。由於AR語言模型僅被訓練為編碼單向上下文(向前或向後),因此它在建模深層雙向上下文時並沒有產生效果。相反的是下游語言理解任務,通常需要雙向上下文信息。這導致了AR語言建模和有效的預訓練之間的差距。
相比之下,基於AE的預訓練不執行顯式密度估計,而是旨在從輸入重構原始數據。而一個著名的例子就是BERT,它採用了最先進的預訓練方法。給定輸入token序列,用一個特殊符號[MASK]替換其中的特定部分,並且訓練模型從損壞的版本中恢復原token。
由於密度估計不是目標的一部分,BERT可以利用雙向上下文進行重建。直接的好處就是這消除了AR語言建模中的雙向信息差距,從而提高了性能。然而,BERT在預訓練使用的[MASK]等人工符號實際數據中並不存在,導致了預訓練的網路差距。此外,由於預測的token在輸入中被重新掩蓋,BERT無法像AR語言建模一樣使用乘積規則對聯合概率進行建模。
因此,針對現有語言預訓練目標的優缺點,CMU 與谷歌大腦提出了將AR和AE的優點充分結合的泛化自回歸預訓練模型 XLNet。
XLNet詳解
首先,XLNet 不使用傳統 AR 模型中固定的前向或後向因式分解順序,而是最大化所有可能因式分解順序的期望對數似然。因為是對因式分解順序的排列操作,每個位置的上下文都可以由來自左右兩邊的token組成。在期望中,每個位置都要學會利用來自所有位置的上下文信息,即捕獲雙向上下文。
其次,作為一種泛化的AR語言模型,XLNet不依賴於殘餘數據。因此,XLNet不受BERT的預訓練-微調差異的影響。同時,自回歸目標也提供了一種自然的方法來使用乘積規則對預測 token 的聯合概率執行因式分解,消除了BERT中做出的獨立性假設。
除了一個新的預訓練目標,XLNet還改進了預訓練的架構設計。
受AR語言建模最新進展的啟發,XLNet將Transformer-XL的分段重複機制和相對編碼方案集成到預訓練中,在較長文本序列的任務中提高了性能。
需要注意的是,將Transformer(-XL)架構簡單應用於基於排列的語言建模是不起作用的,因為分解順序是任意的且目標是模糊的。作為一種解決方案,研究者們提出重新參數化Transformer(-XL)網路,以消除歧義。
實驗結果
截至2019年6月19日,XLNet 在 20 個任務上超過了 BERT 的表現,並在 18 個任務上取得了當前最佳效果(state-of-the-art),包括機器問答、自然語言推斷、情感分析和文檔排序。
以下是XLNet-Large和Bert-Large的一些比較:
在最終的20項任務中,XLNet的表現優於BERT,並且在18項任務中取得了最先進的結果。
發布模型
截至目前,已提供以下模式:
XLNet-Large, Cased:24-layer, 1024-hidden,16-heads,
每個.zip文件包含三個項:
TensorFlow checkpoint(xlnet_model.ckpt),包含預先訓練的權重。
SentencePiece模型(spiece.model),用於(de)標記化。
一個配置文件(xlnet_config.json),指定模型的超參數。
未來釋放計劃
後續開發者還計劃在不同的環境下繼續發布更多的預訓練模型,包括:
基本模型——將在2019年6月底發布一個XLNet-Base。
Uncased模型——目前, Cased XLNet-Large比Uncased XLNet-Large性能更好。開發者仍在觀察與研究,當得出結論時,他們將馬上發布Uncased模型。(預計時間不會太久)
在維基百科上進行微調的預訓練模型,這可用於維基百科文本的任務,如SQuAD和HotpotQA。
其他超參數配置的預訓練模型,可以用於特定的下游任務。
與新技術關聯的預訓練模型。
相關鏈接
論文地址:
https://arxiv.org/pdf/1906.08237.pdf
預訓練模型及代碼地址:
https://github.com/zihangdai/xlnet
本文轉自公眾號 AI科技評論,原文地址
Comments