歡迎光臨
每天分享高質量文章

谷歌釋出NLP最先進預訓練模型:開源BERT

作者:Jacob Devlin and Ming-Wei Chang, Research Scientists, Google AI Language翻譯:佟海寧;校對:吳金笛

本文約2000字,建議閱讀9分鐘。

本文為你介紹谷歌最新釋出的自然語言預訓練模型BERT。

簡介

自然語言處理(NLP)面臨的眾多挑戰之一是訓練資料的短缺。由於NLP是一個具有許多不同任務的多樣化領域,因此大多數針對特定任務的資料集僅包含了幾千到幾十萬個人為標記的訓練示例。然而,現代基於深度學習的NLP模型往往需要更大量的資料,在擁有在數以百萬計甚至十億計的帶標註的訓練樣例上進行訓練時效能將會得到極大改善。

為了幫助縮小資料差距,研究人員開發了各種技術用於使用網路上海量未標註的文字(稱為預訓練)來訓練通用語言表示模型。然後,將其應用於小資料NLP任務(如問答和情感分析)微調預訓練模型,與從頭對資料集進行訓練相比,使用預訓練模型可以顯著地提高準確度。

 

本週,我們公佈了一項用於NLP預訓練的新技術,稱為雙向編碼器表示的變形器 (Bidirectional Encoder Representations Transformers),即BERT。透過這個模型,所有人都可以在大約30分鐘內使用一個伺服器上的TPU訓練他們自己最先進的諸如問答系統等各種模型,或者使用單個GPU在幾個小時內完成訓練。在我們公佈的原始碼中包括了在Tensorflow上構建的一系列語言表示模型。在我們的論文中,我們展示了11個NLP任務的最新結果,包括在極具競爭力的斯坦福問答資料集(SQUAD v1.1)上的測試結果。

 

BERT特點

BERT建立在包括半監督序列學習,預訓練生成,ELMo和ULMFit等最新預訓練背景關係表示模型的基礎上。然而與以前的模型不同的是,BERT是第一個深度雙向無監督的語言表示,僅使用純文字語料庫(在本例中為維基百科)進行預訓練。

 

深度雙向無監督很重要的一個原因是: 預訓練的表示既可以是背景關係相關也可以是背景關係無關的,並且背景關係相關的可以進一步分成是單向的或雙向的。諸如word2vec或GloVe之類的背景關係無關模型為詞彙表中的每個單詞生成單個單詞嵌入表示。例如,“銀行”一詞在“銀行賬戶”和“河岸”中具有相同的無背景關係表示。相反,背景關係模型生成基於句子中其他單詞的每個單詞的表示。例如,在“我訪問銀行帳戶”一句中,單向背景關係模型將基於“我訪問過”而不是“帳戶”來表示“銀行”。但是,BERT表示使用其上一個和下一個背景關係的“銀行” – “我訪問了…帳戶” – 從深層神經網路的最底層開始,使其成為雙向的。

 

與先前最先進的背景關係預訓練方法相比,BERT神經網路架構的視覺化如下所示。箭頭表示從一層到下一層的資訊流。頂部的綠色框表示每個輸入詞的最終語境化表示:

雙向性的優點

既然雙向性這麼強大,為什麼以前沒有人實現呢? 為了理解其中原因,我們可以考慮這樣的場景: 基於一個可以被有效訓練的前向模型(只考慮每個單詞之前的內容),我們無法將它簡單的轉換成基於它前後兩個單詞的雙向內容。因為這將意味著被預測的單詞需要在多層模型中間接地“看到自己”。

 

為瞭解決這個問題,我們使用單向的技術來遮蔽輸入中的一些單詞,然後雙向調節每個單詞以預測被遮蔽的單詞。 例如:

所以雖然這個想法已經存在了很長時間,但BERT是它第一次被成功用於訓練深度神經網路。

 

BERT還能夠透過簡單任務的預訓練來學習對句子之間的關係進行建模,這個簡單任務是可以從任何文字語料庫中生成的。 比如給定兩個句子A和B,B是在語料庫中A之後出現的實際下一個句子還是隻是一個隨意的句子。例如:

如何使用伺服器TPU進行訓練

到目前為止我們所描述的所有內容看起來都相當簡單,那麼我們具體需要如何使用他呢? 答案就是使用伺服器上的TPU。 TPU使我們可以自由快速的除錯我們的模型,這對於我們區別於現有預訓練技術至關重要。 由Google的研究人員於2017年開發的Transformer模型架構也為我們提供了使BERT成功所需的基礎。 Transformer的具體實現可以參考我們釋出的對應的開源版本以及tensor2tensor庫。

 

BERT的具體應用結果

為了評估其效能,我們將BERT與其他幾個最先進的NLP系統進行了比較。註意以下結果中, BERT幾乎沒有進行針對神經網路架構的任務特定更改就實現瞭如下中的結果。 在SQuAD v1.1上,BERT獲得了93.2%的F1分數(精度的衡量標準),超過了之前的最高分91.6%和人工能達到的91.2%:

BERT還在非常具有挑戰性的GLUE基準上提高了7.6%的絕對性,GLUE是一套9種不同的自然語言理解(NLU)任務。 這些任務中人工標記的訓練資料的數量範圍從2,500個到400,000個,BERT大大提高了所有這些資料的最新準確度:

如何應用BERT

我們釋出的模型可以在幾小時或更短的時間內在透過除錯應用到各種NLP任務中。 儘管我們相信使用BERT的大多數NLP研究人員並不需要從頭開始預訓他們自己的模型 ,我們依然把執行預訓練的程式碼一併包含在了開原始碼中。 我們今天釋出的BERT模型僅限英語,但我們希望在不久的將來釋出其他多種語言的預訓練的模型。

 

可以在下麵連結中找到開源TensorFlow實現和預訓練BERT模型的介紹:

https://goo.gl/language/bert

或者,您也可以透過Colab開始使用BERT,對應的notebook可以使用如下連結:

https://colab.sandbox.google.com/github/tensorflow/tpu/blob/master/tools/colab/bert_finetuning_with_cloud_tpus.ipynb。

您還可以閱讀我們的對應論文“BERT: Pre-training of Deep Bidirectional Transformers  for Language  derstanding“:

https://arxiv.org/abs/1810.04805

原文標題:

Open Sourcing BERT: State-of-the-Art Pre-training for Natural Language Processing

原文連結:

https://ai.googleblog.com/2018/11/open-sourcing-bert-state-of-art-pre.html

譯者簡介:佟海寧,哥本哈根大學計算機碩士在讀,主修資料科學。之前的學習生活中,總會發現各種有趣技術的背後都有機器學習的影子。希望自己能在大資料的浪潮中踏實深耕,行遠自邇。

本文轉自:資料派THU ;獲授權;

贊(0)

分享創造快樂