缺少訓(xùn)練數(shù)據(jù)是自然語言處理(Natural Language Processing, NLP)面臨的最大挑戰(zhàn)之一。由于 NLP 是一個具備不同任務(wù)的多樣化領(lǐng)域,因此大多數(shù)任務(wù)特定數(shù)據(jù)集僅包含幾千或幾十萬個人類標(biāo)簽的訓(xùn)練樣例。然而,基于深度學(xué)習(xí)的 NLP 模型可以從更大量的數(shù)據(jù)中獲益,在數(shù)百萬或數(shù)十億的帶標(biāo)簽的訓(xùn)練樣例中學(xué)習(xí)得到改善。為了幫助縮小在數(shù)據(jù)方面的差距,研究人員開發(fā)了各種技術(shù),使用網(wǎng)絡(luò)上無標(biāo)簽的文本訓(xùn)練一個通用的語言表示模型(稱為預(yù)訓(xùn)練)。用預(yù)訓(xùn)練模型在小數(shù)據(jù)的NLP 任務(wù)(如問答和情感分析)上進(jìn)行微調(diào),與從頭開始訓(xùn)練相比,可以顯著提高準(zhǔn)確度。
本周我們開源了一種NLP 預(yù)訓(xùn)練新技術(shù)BidirectionalEncoderRepresentations fromTransformers(BERT)(https://github.com/google-research/bert)。此次發(fā)布的版本中,世界上任何人都可以在一個云 TPU上花費(fèi)大約 30 分鐘,或使用單個 GPU 在幾個小時內(nèi)訓(xùn)練他們自己最先進(jìn)的問答系統(tǒng)(或各種其他模型)。該版本包括在 TensorFlow之上構(gòu)建的源代碼和許多預(yù)先訓(xùn)練的語言表示模型。在我們的相關(guān)論文中,展示了包括斯坦福問答數(shù)據(jù)集(SQUAD v1.1)在內(nèi) 11 個 NLP 任務(wù)的最新結(jié)果。
是什么讓 BERT 與眾不同?
BERT 建立在最新的預(yù)訓(xùn)練與上下文相關(guān)的語言表示的工作之上 — 包括Semi-supervised Sequence Learning、Generative Pre-Training、ELMo和ULMFit。然而,與以前的模型不同,BERT 是第一個深度、雙向、無監(jiān)督的語言表示模型,僅使用無標(biāo)簽的文本語料庫(在本例中為維基百科)進(jìn)行預(yù)訓(xùn)練。
為什么這很重要?預(yù)訓(xùn)練表示可以是與上下文無關(guān)的或與上下文相關(guān)的。與上下文相關(guān)的表示又可以分成單向(只跟上文或下文相關(guān))或雙向的 (同時考慮上文和下文)。與上下文無關(guān)模型諸如word2vec或GloVe之類的對每個單詞生成一個詞嵌入表示,所以在這些模型下 “bank” 一詞在 “bank account” 和 “bank of the river” 中會具有相同的表示。而與上下文相關(guān)模型則基于句子中其他單詞來生成每個詞的表示。例如,在句子 “I accessed the bank account” 中,一個單向的上下文相關(guān)模型表示 “bank” 會基于上文 “I accessed the” 而非下文 “account”。 然而,BERT 表示 “bank” 會同時使用它的上文和下文— “I accessed the ... account” — 從深層神經(jīng)網(wǎng)絡(luò)的最底層開始,成為雙向的表示。
與先前工作中領(lǐng)先的上下文預(yù)訓(xùn)練方法相比,BERT 神經(jīng)網(wǎng)絡(luò)架構(gòu)的示意圖如下所示。箭頭表示從一個層到下一個層的信息流。圖示中頂部的綠色框?qū)?yīng)每個輸入詞最終的上下文表示:
雙向的力量
如果雙向如此強(qiáng)大,為什么以前沒有這樣實(shí)現(xiàn)?在訓(xùn)練單向模型時,預(yù)測詞時必須只能基于句子中上文的單詞。然而,想要直接讓模型同時根據(jù)上文和下文來預(yù)測詞是不可能的,因?yàn)檫@將允許被預(yù)測的單詞會隨著多層模型間接地 “看見自己”。
為了解決這個問題,我們使用直接的蒙版技術(shù)來掩蓋輸入中的一些單詞,然后模型就能同時根據(jù)上文和下文來預(yù)測被掩蓋的單詞。例如:
雖然這個想法由來已久,但是 BERT 首次把它成功應(yīng)用到預(yù)訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)中。
BERT 還學(xué)習(xí)如何建模句子之間的關(guān)系,通過預(yù)訓(xùn)練對任何文本語料庫都可生成的一個很簡單的任務(wù)來實(shí)現(xiàn):給定兩個句子 A和 B,判斷 B 是在語料庫中 A之后實(shí)際出現(xiàn)的下一個句子,或者只是一個隨意的句子?例如:
使用云 TPU 進(jìn)行訓(xùn)練
到目前為止,我們所描述的所有內(nèi)容看起來都相當(dāng)直觀,那么還需要什么才能使 BERT 運(yùn)行得如此良好?云 TPU。云 TPU 使我們可以自由地快速試驗(yàn)、調(diào)試和優(yōu)化我們的模型,這對于我們超越現(xiàn)有的預(yù)訓(xùn)練技術(shù)至關(guān)重要。由 Google 的研究人員于 2017 年開發(fā)的Transformer 模型架構(gòu)也為我們提供了使 BERT 成功所需的基礎(chǔ)。Transformer 在我們的開源版本以及tensor2tensor 庫中實(shí)現(xiàn)。
注:Transformer 模型架構(gòu) 鏈接
https://ai.googleblog.com/2017/08/transformer-novel-neural-network.html
開源版本 鏈接
https://github.com/google-research/bert
tensor2tensor 庫 鏈接
https://github.com/tensorflow/tensor2tensor
BERT 的結(jié)果
為了評估性能,我們將 BERT 與其他最先進(jìn)的 NLP 系統(tǒng)進(jìn)行了比較。需要注意的是,在我們的實(shí)驗(yàn)中,我們幾乎沒有針對特定任務(wù)而對神經(jīng)網(wǎng)絡(luò)架構(gòu)進(jìn)行更改。在SQuAD v1.1上,BERT 獲得了93.2% 的 F1 分?jǐn)?shù)(一種準(zhǔn)確度的衡量指標(biāo)),超過了之前最高水準(zhǔn)的分?jǐn)?shù) 91.6% 和人類分?jǐn)?shù) 91.2%:
BERT 還在極具挑戰(zhàn)性的GLUE 基準(zhǔn)測試中將準(zhǔn)確性的標(biāo)準(zhǔn)提高了 7.6%。這個基準(zhǔn)測試包含 9 種不同的自然語言理解(NLU)任務(wù)。在這些任務(wù)中,具有人類標(biāo)簽的訓(xùn)練數(shù)據(jù)跨度從 2,500 個樣本到 400,000 個樣本不等。BERT 在所有任務(wù)中都大大提高了準(zhǔn)確性。
如何使用 BERT?
我們發(fā)布的模型可以在幾個小時或更短的時間內(nèi)在各種 NLP 任務(wù)上進(jìn)行微調(diào)。開源版本還包括運(yùn)行預(yù)訓(xùn)練的代碼,我們相信大多數(shù)使用 BERT 的 NLP 研究人員永遠(yuǎn)不需要從頭開始訓(xùn)練他們自己的模型。我們最初發(fā)布的 BERT 模型主要為英語模型?;谏鐓^(qū)反饋,在開源代碼和英語模型之后,我們發(fā)布了支持中文以及多語言的預(yù)訓(xùn)練基礎(chǔ)模型BERT-Base,更好地幫助世界各國的研究人員和開發(fā)者解決相應(yīng)的自然語言處理問題。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4725瀏覽量
100311 -
自然語言處理
+關(guān)注
關(guān)注
1文章
588瀏覽量
13464
原文標(biāo)題:BERT 現(xiàn)已開源:最先進(jìn)的 NLP 預(yù)訓(xùn)練技術(shù),支持中文和更多語言
文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論