當前位置:
首頁 > 新聞 > 加入Transformer-XL,這個PyTorch包能調用各種NLP預訓練模型

加入Transformer-XL,這個PyTorch包能調用各種NLP預訓練模型

作為預訓練模型,BERT 目前常充當系統的重要模塊,並衍生出大量 NLP 項目。但是 BERT 官方實現基於 TensorFLow 框架,因此那些藉助 PyTorch 實現的 NLP 系統可能並不方便嵌入它。為此,開發者從每一個 OP 開始重新用 PyTorch 預訓練 BERT 等模型。這個項目不僅提供預訓練 BERT、GPT 和 Transformer-XL 模型,同時還提供對應的微調示例和代碼。

PT-BERT 項目地址:https://github.com/huggingface/pytorch-pretrained-BERT

短短兩個多月以來,該項目已經獲得了 3 千多的收藏量,而這兩天發布的 0.5 版本更是收錄了由谷歌和 CMU 最新提出的 Transformer-XL 模型。

在 0.5 版本的更新中,它主要提供了兩個新的預訓練模型,即在 Toronto Book Corpus 上預訓練的 Open AI GPT 模型和在 WikiText 103 上預訓練的 Transformer-XL 模型。其中 Open AI GPT 模型主要修正了分詞和位置嵌入編碼,從而提升預訓練的性能;Transformer-XL 模型主要是針對 TensorFlow 官方實現的復現,且對相對位置編碼等模塊做一些修改。

這次更新比較重要的就是 Transformer-XL 預訓練模型,它是對 Transformer 及語言建模的修正,這項前沿研究也是上個月才公布。一般而言,Transformer-XL 學習到的長期依賴性比標準 Transformer 學到的長 450%,無論在長序列還是短序列中都得到了更好的結果,而且在評估時比標準 Transformer 快 1800 多倍。

除了預訓練模型的發布,0.5 發行版還更新了一些腳本和微調示例,例如更新 SQuAD 微調腳本以適應 SQuAD V2.0 數據集。現在讓我們看看 0.5 版如何快速導入 Open AI GPT 和 Transformer-XL 模型,並預測一句話缺失的下一個詞吧:

加入Transformer-XL,這個PyTorch包能調用各種NLP預訓練模型

打開今日頭條,查看更多圖片

PT-BERT

上面簡單介紹了什麼是 PT-BERT 即最新的 0.5 版,那麼這個項目到底有什麼特點呢?目前項目一共包含三大類預訓練模型,它們的實現均已在多個數據集上進行測試(詳見示例),性能堪比對應的 TensorFlow 實現。

以下是三大類預訓練模型的信息詳情:

BERT 是在論文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》中提出的。該 PyTorch 實現包括谷歌的預訓練模型(https://github.com/google-research/bert)、示例、notebook,以及命令行介面,允許載入 BERT 的任意預訓練 TensorFlow 檢查點。

OpenAI GPT 是在論文《Improving Language Understanding by Generative Pre-Training》中提出的。該 PyTorch 實現是對 HuggingFace 的 PyTorch 實現進行改進後得到的,包括 OpenAI 的預訓練模型(https://github.com/openai/finetune-transformer-lm)和命令行介面,可將預訓練 NumPy 檢查點轉換為 PyTorch。

Google/CMU 提出的 Transformer-XL 是在論文《Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context》中提出的。該 PyTorch 實現是對原版 PyTorch 實現的改進版本,以獲得與 TensforFlow 版本相匹配的性能,並允許復用預訓練權重。該實現提供命令行介面,以將 TensorFlow 檢查點轉換為 PyTorch 模型。

以上所有預訓練模型都可以直接通過軟體庫調用,使用方法就和前面圖片那樣簡單便捷。整個包體的安裝也可以直接使用命令行 pip install pytorch-pretrained-bert 完成。目前該軟體包含以下模型與模塊,它們均可被導入 Python 中。

  • 8 個具備預訓練權重的 Bert PyTorch 模型:包括原版 BERT Transformer 模型(完全預訓練)、執行下一句預測分類的 BERT Transformer 模型(完全預訓練)、實現序列分類的 BERT Transformer 模型、實現 token 分類的 BERT Transformer 模型等。
  • 3 個具備預訓練權重的 OpenAI GPT PyTorch 模型:原版 OpenAI GPT Transformer 模型(完全預訓練)、實現捆綁語言建模的 OpenAI GPT Transformer 模型(完全預訓練)、實現多類別分類的 OpenAI GPT Transformer 模型。
  • 2 個具備預訓練權重的 Transformer-XL PyTorch 模型:Transformer-XL 模型,輸出最後一個隱藏狀態和記憶單元(完全預訓練)、具備 tied adaptive softmax head 的 Transformer-XL 模型,輸出 logits/loss 和記憶單元(完全預訓練)。
  • 3 種 BERT 分詞器:基礎分詞、WordPiece 分詞、端到端分詞。
  • OpenAI GPT 分詞器:執行 Byte-Pair-Encoding (BPE) 分詞。
  • Transformer-XL 分詞器
  • BERT 優化器:Adam 演算法的 BERT 版本。
  • OpenAI GPT 優化器:Adam 演算法的 OpenAI GPT 版本。

此外,該庫還包括 5 個 BERT 使用示例、1 個 OpenAI GPT 使用示例、1 個 Transformer-XL 使用示例、3 個用於檢查 TensorFlow 和 PyTorch 模型是否行為一致的 notebook,以及將 TensorFlow 檢查點(BERT、Transformer-XL)和 NumPy 檢查點(OpenAI)轉換成 PyTorch 的命令行介面。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

讓智能體主動交互,DeepMind提出用元強化學習實現因果推理

TAG:機器之心 |