繼 BERT 之後,谷歌又推出了一個用於 NLP 框架——XLnet。
這是一款以Transformer-XL為核心的框架,從論文的結果來看,XLnet 在問答、文本分類、自然語言理解等任務上大幅超越 BERT。
開發者放出了預訓練模型幫助用戶更好地使用 XLNet。
預訓練的模型;
在2019.7.16發佈的有
XLNet-Large, Cased: 24-layer, 1024-hidden, 16-heads
XLNet-Base, Cased: 12-layer, 768-hidden, 12-heads.
這個模型是在全量數據上訓練的。
基於XLNet的微調:
在2019.7.19已經測試了,其依賴TensorFlow 1.13.1 /Python2.
用於XLNet訓練;
TPU上訓練用train.py,GPU上則用train_gpu.py。
python train.py
--record_info_dir=$DATA/tfrecords \\
--train_batch_size=2048 \\
--seq_len=512 \\
--reuse_len=256 \\
--mem_len=384 \\
--perm_size=256 \\
--n_layer=24 \\
--d_model=1024 \\
--d_embed=1024 \\
--n_head=16 \\
--d_head=64 \\
--d_inner=4096 \\
--untie_r=True \\
--mask_alpha=6 \\
--mask_beta=1 \\
--num_predict=85
用XLNet的Tokenization
import sentencepiece as spm
from prepro_utils import preprocess_text, encode_ids
# some code omitted here...
# initialize FLAGS
text = "An input text string."
sp_model = spm.SentencePieceProcessor()
sp_model.Load(FLAGS.spiece_model_file)
text = preprocess_text(text, lower=FLAGS.uncased)
ids = encode_ids(sp_model, text)
閱讀更多 AI踐行者 的文章