Google對外開源了用於自然語言預訓練的新技術BERT(Bidirectional Encoder Representations from Transformers),讓使用者可以在雲端TPU或是GPU上,快速地訓練問答系統以及其他類型的模型。這個BERT版本建構在TensorFlow之上,專案除了有原始碼之外,也包含了許多預先訓練的語言表示模型。

自然語言處理面臨的挑戰之一便是缺乏訓練資料,Google提到,由於自然語言訓練是一個綜合許多不同任務的多樣化領域,而大多數任務特定資料集就僅包含數千或是數十萬標籤訓練範例,但是基於現代深度學習技術的自然語言,資料集的規模需要達數百萬或是數十億的標籤訓練資料範例,才能獲得真正良好的結果。

但事實上,要取得這麼大量的訓練資料並不容易,因此才發展出了預訓練技術,來縮小需求與實際資料量的空缺差距。預訓練使用網路上大量未標記的文字來訓練通用語言表示模型,而預訓練的模型可以接著使用情感分析或是問答等小型特定資料集,進行預訓練模型微調,這樣的方法比一開始就使用這些特定領域的資料集進行訓練,可以明顯提升模型準確度。

預訓練分為上下文(Contextual)或無上下文,其中上下文又可進一步分為單向或雙向的。像是word2vec或GloVe等無上下文模型,為每個字彙產生單詞嵌入表示,Google舉例,「銀行」這個詞對「帳戶」和「河岸」,具有相同的無上下文表示,而上下文模型所產生的單詞表示將會基於句子中的其他詞,以「我存取銀行帳戶」句子來說,單向的上下文模型,以基於「我存取過」而非「帳戶」來表示「銀行」。

BERT採用預訓練上下文表示方法,其中也包括使用了半監督式序列學習、生成式預訓練、ELMo和ULMFit技術,不像過去其他模型,BERT是第一個深度雙向、無監督的語言表示,僅使用純文字資料資料庫進行預訓練。以上面提到的例子來說,BERT雙向上下文模型,則會以句子中單詞前後的文字,包括「我存取過」和「帳戶」來表示「銀行」。Google從深度神經網路的最底層開始,使其具有雙向特性。

雙向上下文模型非常強大,但之前之所以沒有系統使用雙向模型,是因為其訓練並不簡單,單向模型只要預測單次在句子中的前一個單詞,就能進行有效的訓練,但光只是每個單詞的前一個或是下一個單詞這樣的簡易條件,是無法訓練出雙向模型的,因為這將讓該單詞在多層模型中,間接的把自己列入參考。Google採用直覺的方法,以遮罩蓋住一些輸入的詞,並對每個詞雙向地預測遮蓋的詞。雖然這個方法已經存在很久了,但是BERT是第一個成功將其實作於訓練深度神經網路的技術。

Google為了測試BERT的效能,與其他先進的自然語言處理系統相比。BERT幾乎不需要針對特定任務進行神經網路基礎架構調整,就能實現所有的結果。在史丹佛問答資料集SQuAD v1.1,BERT獲得新高分,精準度達93.2%,超過之前最高分的91.6%和人類分數91.2%。

而Google開源的BERT的預訓練新技術,使用者可以在雲端TPU以約30分鐘,或是使用單個GPU花費數小時,就能訓練出先進的問答系統。Google提到,由於雲端TPU的技術,讓他們可以更快速的進行實驗以及調整模型,而這對於超越現有的預訓練技術至關重要。

Google這次開源的專案,包含了建構在TensorFlow上的程式碼以及其他的語言表示模型,除了讓自然語言處理研究人員不需要重頭開始撰寫程式碼外,其中包含的模型,可以讓使用者以數小時或是更短的時間內,對各種自然語言任務進行微調。不過,目前發布的BERT模型僅限英語,在將來還會發布多種語言預訓練模型。

熱門新聞

Advertisement