當前位置:
首頁 > 知識 > 最強預訓練模型BERT的Pytorch實現

最強預訓練模型BERT的Pytorch實現

選自GitHub

作者:Junseong Kim

機器之心編譯

參與:路雪、張倩

近期,Google AI 公開了一篇 NLP 論文,介紹了新的語言表徵模型BERT,該模型被認為是最強 NLP 預訓練模型,刷新了 11 項 NLP 任務的當前最優性能記錄。今日,機器之心發現 GitHub 上出現了 BERT 的 Pytorch 實現,出自 Scatter Lab 的 Junseong Kim。

簡介

谷歌 AI 關於 BERT 的論文展示了該模型在多個 NLP 任務上取得的驚艷結果,包括在 SQuAD v1.1 QA 任務上的 F1 得分超過人類。該論文證明,基於 Transformer(自注意力)的編碼器可以有力地替代之前以合理方式訓練的語言模型。更重要的是,該論文表明這一預訓練語言模型可用於任何 NLP 任務,而無需針對任務定製模型架構。

本文主要闡述 BERT 的實現。它的代碼非常簡單、易懂。一些代碼基於《Attention is All You Need》一文中的 annotated Transformer。

該項目目前還在進展階段。代碼尚未得到驗證。

語言模型預訓練

在這篇論文中,作者展示了語言模型訓練的新方法,即「遮蔽語言模型」(masked language model,MLM)和「預測下一句」。

Masked LM

見原論文:3.3.1 Task #1: Masked LM

規則:

基於以下子規則,隨機 15% 的輸入 token 將被改變:

80% 的 token 是 [MASK] token。

10% 的 token 是 [RANDOM] token(另一個單詞)。

10% 的 token 將維持不變,但是需要預測。

預測下一句

見原論文:3.3.2 Task #2: Next Sentence Prediction

「這個句子可以繼續和下一個句子聯繫起來嗎?」

理解兩個文本句子之間的關係,這是無法通過語言建模直接獲取的。

規則:

下一句有 50% 的可能是連續的句子。

下一句有 50% 的可能是無關的句子。

使用

注意:你的語料庫一行應該有兩個句子,中間用 ( ) 分隔符隔開。

1. 基於自己的語料庫構建 vocab

2. 使用自己的語料庫構建 BERT 訓練數據集

3. 訓練自己的 BERT 模型


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

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


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

18 分鐘訓練ImageNet復現代碼
32分鐘訓練神經機器翻譯,速度提升45倍

TAG:機器之心 |