昨日,機器之心報導了 CMU 全新模型 XLNet 在 20 項任務上碾壓 BERT 的研究,引起了極大的關注。而在中文領域,哈工大訊飛聯合實驗室也於昨日釋出了基於全詞覆蓋的中文 BERT 預訓練模型,在多箇中文資料集上取得了當前中文預訓練模型的最佳水平,效果甚至超過了原版 BERT、ERINE 等中文預訓練模型。
基於 Transformers 的雙向編碼表示(BERT)在多個自然語言處理任務中取得了廣泛的效能提升。在預訓練語言模型時,需要對語料進行 mask 操作,使模型在看不見 token 的情況下對 mask 的詞語進行預測。
然而,基於單個 token 的 mask 方法訓練中文語料,可能忽略了中文分詞的作用。因此,如果能夠 mask 詞語中每一個組成的 token,可以更好的捕捉詞與詞的邊界關係。
為了利用這種思想提升預訓練模型在中文的表現,百度釋出了知識增強的表示模型 ERNIE,在中文資料集的表現中超過了 BERT。近期,谷歌釋出了基於全詞覆蓋(Whold Word Masking)的 BERT 預訓練模型,則進一步提升了 BERT 模型的效能水平。
然而,由於全詞覆蓋的 BERT 模型的研究測試集中於國外公開資料集,缺乏一種中文語言的相關模型。昨天,哈工大訊飛聯合實驗室釋出了全詞覆蓋的中文 BERT 預訓練模型。模型在多箇中文資料集上取得了當前中文預訓練模型的最佳水平,效果甚至超過了原版 BERT、ERINE 等中文預訓練模型。
- 論文地址:https://arxiv.org/abs/1906.08101
- 開源模型地址:https://github.com/ymcui/Chinese-BERT-wwm
- 哈工大訊飛聯合實驗室的專案介紹:https://mp.weixin.qq.com/s/EE6dEhvpKxqnVW_bBAKrnA
引言
基於 Transformer 的雙向編碼表示(Bidirectional Encoder Representations from Transformers)已經在多個自然語言處理資料集,如 SQuAD、CoQA、QuAC 等上取得了當前的最佳水平。而在這之後,谷歌釋出了全詞覆蓋的預訓練 BERT 模型。在全詞 Mask 中,如果一個完整的詞的部分 WordPiece 被 [MASK] 替換,則同屬該詞的其他部分也會被 [MASK] 替換。和原有的 BERT 模型相比,全詞模型主要更改了原預訓練階段的訓練樣本生成策略。
由於谷歌官方釋出的 BERT-base(Chinese)中,中文是以字為粒度進行切分,沒有考慮中文需要分詞的特點。應用全詞 mask,而非字粒度的中文 BERT 模型可能有更好的表現,因此研究人員將全詞 mask 方法應用在了中文中——對組成同一個詞的漢字全部進行 [MASK]。模型使用了中文維基百科(包括簡體和繁體)進行訓練,並且使用了哈工大語言技術平臺 LTP(http://ltp.ai)作為分詞工具。和原版 BERT 中文模型,以及百度開源中文預訓練模型 ERNIE 相比,全詞覆蓋的中文 BERT 預訓練模型 BERT-wwm 在多箇中文任務中取得了較好的表現。
全詞 Mask 方法
Whole Word Masking (wwm) 是谷歌在 2019 年 5 月 31 日釋出的一項 BERT 的升級版本,主要更改了原預訓練階段的訓練樣本生成策略。在過去的 BERT 預訓練中,mask 方式為按照字粒度進行 mask,而全詞模型則有所不同。
圖 1:全詞 mask 的方式。
如圖 1 所示,全詞 mask 需要首先對中文語料進行分詞,然後對同屬於一個詞的每個 token 進行 mask 操作。這樣一來,預訓練模型並非預測被 mask 的單個 token,而是預測同一個詞中的每一個被 mask 的 token。
資料集
論文采用了維基百科作為語料進行預訓練,並同時使用了簡體和繁體中文。清洗資料後,採用了 1360 萬條資料作為輸入。研究人員分別設定了兩組預訓練樣本,一組設定的最長樣本長度為 128,另一組為 512。除了使用全詞 mask 方式以外,其他的資料清洗方式和原版 BERT 相同。
訓練
研究人員認為,全詞覆蓋的 BERT 模型是原有 BERT 模型的改進版本,可以使 BERT 模型學習詞的邊界。因此,他們沒有從零開始訓練,而是在官方 BERT 中文模型(BERT-base Chinese)上訓練。模型首先在最長樣本長度為 128,批大小為 2560,使用 1e-4 的學習率,初始預熱為 10% 的條件下訓練了 100k 輪,然後在序列長度為 512,批大小為 384 的樣本上進行了同樣輪次的訓練。訓練使用了 LAMB 目標函式,而非 AdamWeightDecayOptimizer。訓練使用的是 Google Cloud TPU v3,有 128G HBM。
實驗結果對比
論文對比了原版的 BERT 模型,百度的 ERNIE 模型,以及本次論文的模型 BERT-wwm 在不同任務和資料集上的表現。論文在以下幾個任務中使用中文資料集進行了測試。對於同一模型,研究人員執行模型 10 遍(不同隨機種子),彙報模型效能的最大值和平均值。
- 篇章抽取型機器閱讀理解
- 命名實體識別
- 文字分類
篇章抽取型機器閱讀理解
1. CMRC 2018
CMRC 2018 資料集是哈工大訊飛聯合實驗室釋出的中文機器閱讀理解資料。根據給定問題,系統需要從篇章中抽取出片段作為答案,形式與 SQuAD 相同。
表 3:三個模型在 CMRC 2018 資料集上的表現。最好的學習率分別為:BERT (3e-5)、 BERT-wwm (3e-5)、ERNIE (8e-5)。
2. DRCD
DRCD 資料集由台灣台達研究院釋出,其形式與 SQuAD 相同,是基於繁體中文的抽取式閱讀理解資料集。
表 4:各個模型的表現。最好的模型學習率分別為:BERT (3e-5)、 BERT-wwm (3e-5)、ERNIE (8e-5)。
命名實體識別
中文命名實體識別(NER)任務中,論文采用了經典的人民日報資料以及微軟亞洲研究院釋出的 NER 資料。
表 6:在人民日報資料集(People Daily)和微軟研究院 NER 資料集(NSRA-NER)上的表現。人民日報資料集上最好的模型學習率是:BERT (3e-5)、 BERT-wwm (3e-5)、 ERNIE (5e-5)。在微軟亞洲研究院資料集上最好的模型學習率是:BERT (3e-5)、 BERT-wwm (4e-5)、 ERNIE (5e-5)。
文字分類
由清華大學自然語言處理實驗室釋出的新聞資料集,需要將新聞分成 10 個類別中的一個。
表 10:模型在清華新聞資料集的表現。最好的模型學習率分別是:BERT (2e-5)、BERT-wwm (2e-5)、 ERNIE (5e-5)。
更多模型在不同自然語言處理任務上的表現對比,可以參考原文論文。
模型使用
為了方便使用,論文作者們已經將 BERT-wwm 開源。論文說,模型的使用非常簡單,只需要把官方提供的模型替換成新的模型即可,不需要改動其他程式碼。
下載
專案現已有 TensorFlow 和 PyTorch 兩個版本。
1. TensorFlow 版本(1.12、1.13、1.14 測試透過)
- Google:https://storage.googleapis.com/hfl-rc/chinese-bert/chinese_wwm_L-12_H-768_A-12.zip
- 訊飛雲:https://pan.iflytek.com/link/4B172939D5748FB1A3881772BC97A898,密碼:mva8
2. PyTorch 版本(請使用 PyTorch-BERT > 0.6,其他版本請自行轉換)
- Google:https://storage.googleapis.com/hfl-rc/chinese-bert/chinese_wwm_pytorch.zip
- 訊飛雲:https://pan.iflytek.com/link/F23B12B39A3077CF1ED7A08DDAD081E3 密碼:m1CE
3. 原版中文 BERT 模型
- BERT-base, Chinese (Whole Word Masking) : 12-layer, 768-hidden, 12-heads, 110M parameters,地址:https://storage.googleapis.com/hfl-rc/chinese-bert/chinese_wwm_L-12_H-768_A-12.zip
4. 原版英文 BERT 模型
- BERT-Large, Uncased (Whole Word Masking): 24-layer, 1024-hidden, 16-heads, 340M parameters,地址:https://storage.googleapis.com/bert_models/2019_05_30/wwm_uncased_L-24_H-1024_A-16.zip
- BERT-Large, Cased (Whole Word Masking): 24-layer, 1024-hidden, 16-heads, 340M parameters,地址:https://storage.googleapis.com/bert_models/2019_05_30/wwm_cased_L-24_H-1024_A-16.zip
以 TensorFlow 版本為例,下載完畢後對 zip 檔案進行解壓得到:
其中 bert_config.json 和 vocab.txt 與谷歌原版**BERT-base, Chinese**完全一致。
使用建議
論文作者提供了一系列建議,在此供讀者參考。
- 初始學習率是非常重要的一個引數(不論是 BERT 還是其他模型),需要根據目標任務進行調整。
- ERNIE 的最佳學習率和 BERT/BERT-wwm 相差較大,所以使用 ERNIE 時請務必調整學習率(基於以上實驗結果,ERNIE 需要的初始學習率較高)。
- 由於 BERT/BERT-wwm 使用了維基百科資料進行訓練,故它們對正式文字建模較好;而 ERNIE 使用了額外的百度百科、貼吧、知道等網路資料,它對非正式文字(例如微博等)建模有優勢。
- 在長文字建模任務上,例如閱讀理解、文件分類,BERT 和 BERT-wwm 的效果較好。
- 如果目標任務的資料和預訓練模型的領域相差較大,請在自己的資料集上進一步做預訓練。
- 如果要處理繁體中文資料,請使用 BERT 或者 BERT-wwm。因為 ERNIE 的詞表中幾乎沒有繁體中文。