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

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

0

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

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

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

直至今日,谷歌終于一鼓作氣發(fā)布了包括 BERT 模型 TensorFlow 代碼、BERT-Base 與 BERT-Large 模型的預(yù)訓(xùn)練檢查點(diǎn)、微調(diào)實(shí)驗(yàn)結(jié)果的自動(dòng)化復(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 項(xiàng)目地址:

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

BERT 項(xiàng)目論文:

https://arxiv.org/abs/1810.04805

什么是 Bert ?

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

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

預(yù)訓(xùn)練表征可能無上下文語境,也可能有上下文語境,有上下文語境的系統(tǒng)可以進(jìn)一步劃分成單向的或者雙向的。以 word2vec ( https://www.tensorflow.org/tutorials/representation/word2vec  ) 和 GloVe ( https://nlp.stanford.edu/projects/glove/  )為例,無上下文語境的模型為詞匯表中的每個(gè)單詞生成單個(gè)「詞嵌入」表征,因此「 bank 」在「 bank deposit 」和「 river bank 」中可能存在同樣的表征。反之,有上下文語境的模型會(huì)根據(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  ),但以上模型要么是單向的,要么是淺層雙向的,這意味著每個(gè)單詞只能與其左邊(或右邊)的單詞進(jìn)行語境化結(jié)合。以「  I made a bank deposit 」為例,由于是單向表示,「 bank 」只能基于左邊「  I made a 」而不是與關(guān)聯(lián)性更強(qiáng)的「 deposit 」生成語境。過去有一些工作試圖打造出一個(gè)能夠結(jié)合上下文語境的生成模型,然而這些工作目前看來都較「 淺層  」。BERT 真正做到了結(jié)合上下文語境來生成「  bank 」,兼顧到「  I made a 」和「  deposit 」,從深度神經(jīng)網(wǎng)絡(luò)的最底層開始,擁有深度雙向?qū)傩浴?/p>

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

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

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

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

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

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

BERT 的使用基本可以分為兩個(gè)階段:

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

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

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

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

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

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

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

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

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

  • 可以通過免費(fèi) TPU 集群運(yùn)行 BERT 的 Colab 鏈接

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

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

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

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

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

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料
姓名
電話
郵箱
微信號
作品鏈接
個(gè)人簡介
為了您的賬戶安全,請驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說