丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預(yù)覽,將在時失效
人工智能 正文
發(fā)私信給黃善清
發(fā)送

0

如期而至!谷歌開源 BERT 模型源代碼

本文作者: 黃善清 編輯:汪思穎 2018-11-01 21:18
導(dǎo)語:本文將分享 BERT 模型的源代碼開源網(wǎng)址,以及源代碼頁面 Readme 的部分簡介內(nèi)容(已譯成中文),以饗讀者。

雷鋒網(wǎng) AI 科技評論按:自上個月谷歌公開 BERT 模型以來,BERT 模型以其雙向、深層等特點,成功在 11 項 NLP 任務(wù)中取得 state of the art 的結(jié)果,贏得自然語言處理學(xué)界的一片贊譽之聲。驚鴻一瞥后,人們都在期待谷歌何時會放出 BERT 模型源代碼。

直至今日,谷歌終于一鼓作氣發(fā)布了包括 BERT 模型 TensorFlow 代碼、BERT-Base 與 BERT-Large 模型的預(yù)訓(xùn)練檢查點、微調(diào)實驗結(jié)果的自動化復(fù)現(xiàn) TensorFlow 代碼、預(yù)訓(xùn)練數(shù)據(jù)生成和數(shù)據(jù)訓(xùn)練的代碼在內(nèi)的「BERT 模型大禮包」。雷鋒網(wǎng) AI 科技評論將通過本文分享 BERT 模型的源代碼開源網(wǎng)址,以及源代碼頁面 Readme 的部分簡介內(nèi)容(已譯成中文),以饗讀者。

BERT 項目地址:

https://github.com/google-research/bert#fine-tuning-with-bert

BERT 項目論文:

https://arxiv.org/abs/1810.04805

什么是 Bert ?

BERT 是一種對語言表征進行預(yù)訓(xùn)練的方法,換句話說,是經(jīng)過大型文本語料庫(如維基百科)訓(xùn)練后獲得的通用「語言理解」模型,該模型可用于我們最在乎的 NLP 下游任務(wù)(如問答)。BERT 之所以表現(xiàn)得比過往的方法要好,是因為它是首個用于進行 NLP 預(yù)訓(xùn)練的無監(jiān)督、深度雙向系統(tǒng)。

無監(jiān)督意味著 BERT 僅使用文本語料庫進行訓(xùn)練,這點很重要,因為在網(wǎng)絡(luò)上存在著大量公開的多語言文本數(shù)據(jù)。

預(yù)訓(xùn)練表征可能無上下文語境,也可能有上下文語境,有上下文語境的系統(tǒng)可以進一步劃分成單向的或者雙向的。以 word2vec ( https://www.tensorflow.org/tutorials/representation/word2vec  ) 和 GloVe ( https://nlp.stanford.edu/projects/glove/  )為例,無上下文語境的模型為詞匯表中的每個單詞生成單個「詞嵌入」表征,因此「 bank 」在「 bank deposit 」和「 river bank 」中可能存在同樣的表征。反之,有上下文語境的模型會根據(jù)整句話生成詞的表征。

BERT 建立在近期一些上下文預(yù)訓(xùn)練語境表征工作的基礎(chǔ)上,包括半監(jiān)督序列學(xué)習(xí)( https://arxiv.org/abs/1511.01432  )、預(yù)訓(xùn)練生成模型( https://blog.openai.com/language-unsupervised/  )、ELMo ( https://allennlp.org/elmo  )以及 ULMFit ( http://nlp.fast.ai/classification/2018/05/15/introducting-ulmfit.html  ),但以上模型要么是單向的,要么是淺層雙向的,這意味著每個單詞只能與其左邊(或右邊)的單詞進行語境化結(jié)合。以「  I made a bank deposit 」為例,由于是單向表示,「 bank 」只能基于左邊「  I made a 」而不是與關(guān)聯(lián)性更強的「 deposit 」生成語境。過去有一些工作試圖打造出一個能夠結(jié)合上下文語境的生成模型,然而這些工作目前看來都較「 淺層  」。BERT 真正做到了結(jié)合上下文語境來生成「  bank 」,兼顧到「  I made a 」和「  deposit 」,從深度神經(jīng)網(wǎng)絡(luò)的最底層開始,擁有深度雙向?qū)傩浴?/p>

BERT 的方法很簡單:一開始先屏蔽掉輸入詞匯的 15%,然后通過深度雙向的 Transformer 編碼器運行整個序列,最后預(yù)測屏蔽的單詞。舉個例子:

Input: the man went to the [MASK1] . he bought a [MASK2] of milk.

Labels: [MASK1] = store; [MASK2] = gallon

為了讓模型學(xué)習(xí)到句子之間的關(guān)系,我們特意將模型放在可以從任意單語語料庫里生成的簡單任務(wù)中進行訓(xùn)練:給出兩個句子 A 和 B,句子 B 究竟是句子 A 的下一個銜接句,亦或者只是語料庫中隨機生成的句子?

Sentence A: the man went to the store .

Sentence B: he bought a gallon of milk .

Label: IsNextSentence

Sentence A: the man went to the store .

Sentence B: penguins are flightless .

Label: NotNextSentence

最后,我們在一個大型語料庫(維基百科 + BookCorpus )中對一個較大的模型(12 - 24 層的 Transformer 編碼器 )進行了長時間訓(xùn)練,最終得到 BERT。

BERT 的使用基本可以分為兩個階段:

預(yù)訓(xùn)練階段的費用不菲(在 4-16 個 TPU 上訓(xùn)練需要花上4天),好在每個語種的訓(xùn)練都能一次性搞定(目前模型只支持英語,多語言模型會在不久的將來發(fā)布)。我們正在陸續(xù)發(fā)布一些論文中提及的預(yù)訓(xùn)練模型。大多數(shù) NLP 研究人員日后再無需從頭預(yù)訓(xùn)練自己的模型。

微調(diào)階段的費用很便宜。只要一開始使用同樣的預(yù)訓(xùn)練模型,論文中所有的成果只需在單個TPU 中訓(xùn)練 1 個小時就能復(fù)現(xiàn)(在單個 GPU 上也只需幾個小時就能復(fù)現(xiàn))。以 SQUAD 為例,只要在單個 TPU 上將模型訓(xùn)練 30 分鐘,就能獲得 91.0% 的 Dev F1 得分,這是單系統(tǒng)目前所能達(dá)到的最好水準(zhǔn)。

BERT 的另外一個優(yōu)勢是能夠輕松適用多種類型的 NLP 任務(wù)。論文中我們展示了BERT在句子級別(如 SST-2 )、句對級別(如 MultiNLI )、單詞級別(如 NER )以及長文本級別(如 SQuAD )任務(wù)上的最新結(jié)果,幾乎沒有對模型進行特定修改。

本次資料庫發(fā)布了哪些東西?

我們將發(fā)布以下成果:

  • BERT 模型(主要是標(biāo)準(zhǔn) Transformer 結(jié)構(gòu))的 TensorFlow 代碼

  • 全小寫語料訓(xùn)練版和正常語料訓(xùn)練版的 BERT-Base 與 BERT-Large 模型的預(yù)訓(xùn)練檢查點

  • 自動化復(fù)現(xiàn)文中重要的微調(diào)實驗結(jié)果的 TensorFlow 代碼,包括在 SQuAD、MultiNLI 和 MRPC 數(shù)據(jù)集下的訓(xùn)練。

  • 預(yù)訓(xùn)練數(shù)據(jù)生成和數(shù)據(jù)訓(xùn)練的代碼

  • 可以通過免費 TPU 集群運行 BERT 的 Colab 鏈接

資料庫里的所有代碼都可以在 CPU、GPU 和  TPU 集群上運行。

使用 BERT 進行微調(diào)

重要事項:文中的所有結(jié)果都是在 64GB 內(nèi)存的單個 TPU 上進行微調(diào)。我們目前無法在 12GB - 16GB 內(nèi)存的 GPU 上來復(fù)現(xiàn) BERT-Large 的大部分結(jié)果,因為其支持的最大 batch 數(shù)太小了。為此,我們正努力在庫中添加一段可以在 GPU 上進行更大 batch 數(shù)訓(xùn)練的代碼。請在“內(nèi)存不足問題”章節(jié)(https://github.com/google-research/bert/blob/master/README.md#out-of-memory-issues  )查閱詳情。

此代碼使用了 TensorFlow 1.11.0 進行測試。此外,也使用了 Python2 和 Python3 進行測試(使用最多的還是 Python2 ,因為這是谷歌內(nèi)部正在使用的)。

使用 BERT-Base 模型進行微調(diào)的代碼正常情況下可以在給定超參數(shù)、擁有 12GB 內(nèi)存以上的 GPU 上運行。

via https://github.com/google-research/bert/blob/master/README.md 

雷鋒網(wǎng) AI 科技評論編譯

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

如期而至!谷歌開源 BERT 模型源代碼

分享:
相關(guān)文章
當(dāng)月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說