谷歌AI團隊新發布的BERT模型,BERT的創新點在哪裡?

2021-01-12 電子發燒友
谷歌AI團隊新發布的BERT模型,BERT的創新點在哪裡?

李倩 發表於 2018-10-21 09:40:22

近日,谷歌AI團隊新發布的BERT模型,在NLP業內引起巨大反響,認為是NLP領域裡程碑式的進步。BERT的創新點在哪裡?新智元專欄作者潘晟鋒對這篇論文進行了深度解讀。

最近谷歌研究人員通過新的BERT模型在11項NLP任務中奪得STOA結果,這在自然語言處理學界以及工業界都引起了不小的熱議。

作者通過在33億文本的語料上訓練語言模型,再分別在不同的下遊任務上微調,這樣的模型在不同的任務均得到了目前為止最好的結果,並且有一些結果相比此前的最佳成績得到了幅度不小的提升。

作者的這一研究其實是今年深度學習在自然語言處理中一個新熱點方向的延續,故事還得從更早一點說起。

論文地址:

https://arxiv.org/abs/1810.04805

BERT的「前任」們

早在2015年的時候,微軟研究院的何凱明和他的同事們發表了殘差網絡的論文,第一次通過殘差的方式將卷積神經網絡推進到了100層以上,並在圖像識別的任務上刷新了當時的最高紀錄。自那以後起,隨著網絡不斷地加深,效果也在不斷提升。然而大量的數據訓練出來的大型網絡雖然效果更好,但隨著網絡的加深以及數據集的不斷擴大,完全重新訓練一個模型所需要的成本也在不斷地增加。

因此在計算機視覺處理中,人們越來越多地採用預訓練好的大型網絡來提取特徵,然後再進行後續任務。目前這種處理方式已經是圖像處理中很常見的做法了。

相比之下,自然語言處理目前通常會使用預訓練的詞向量來進行後續任務。但詞向量是通過淺層網絡進行無監督訓練,雖然在詞的級別上有著不錯的特性,但卻缺少對連續文本的內在聯繫和語言結構的表達能力。因此大家也希望能像圖像領域那樣,通過大量數據來預訓練一個大型的神經網絡,然後用它來對文本提取特徵去做後續的任務,以期望能得到更好的效果。其實這一方向的研究一直在持續,直到今年的早些時候AllenAI提出的[ELMo](https://arxiv.org/pdf/1802.05365.pdf)由於其在後續任務上的優異表現獲得了不小的關注。

在ELMo獲得成功以後不久FastAI就推出了[ULMFiT](https://arxiv.org/abs/1801.06146),其大體思路是在微調時對每一層設置不同的學習率。此後OpenAI又提出了[GPT](https://blog.openai.com/language-unsupervised/)。

從上面提及的這些論文的結果以及學界和工業界的反饋來看,這種使用大量的語料進行預訓練,然後再在預訓練好的模型上進行後續任務訓練,雖然訓練方式各有不同,但在後續任務都有不同程度的提高。

而谷歌提出的BERT就是在OpenAI的GPT的基礎上對預訓練的目標進行了修改,並用更大的模型以及更多的數據去進行預訓練,從而得到了目前為止最好的效果。

Transformer的編碼器結構

BERT的主體結構和創新點

BERT模型沿襲了GPT模型的結構,採用[Transfomer](https://arxiv.org/abs/1706.03762)的編碼器作為主體模型結構。Transformer捨棄了RNN的循環式網絡結構,完全基於注意力機制來對一段文本進行建模。

Transformer所使用的注意力機制的核心思想是去計算一句話中的每個詞對於這句話中所有詞的相互關係,然後認為這些詞與詞之間的相互關係在一定程度上反應了這句話中不同詞之間的關聯性以及重要程度。因此再利用這些相互關係來調整每個詞的重要性(權重)就可以獲得每個詞新的表達。這個新的表徵不但蘊含了該詞本身,還蘊含了其他詞與這個詞的關係,因此和單純的詞向量相比是一個更加全局的表達。

Transformer通過對輸入的文本不斷進行這樣的注意力機制層和普通的非線性層交疊來得到最終的文本表達。

Transformer的注意力層得到的詞-詞之間關係

GPT則利用了Transformer的結構來進行單向語言模型的訓練。所謂的語言模型其實是自然語言處理中的一種基礎任務,其目標是給定一個序列文本,預測下一個位置上會出現的詞。

模型學習這樣的任務過程和我們人學習一門語言的過程有些類似。我們學習語言的時候會不斷地練習怎麼選用合適的詞來造句,對於模型來說也這樣。例如:

> 今天 天氣 不錯, 我們 去 公園 玩 吧。

這句話,單向語言模型在學習的時候是從左向右進行學習的,先給模型看到「今天 天氣」兩個詞,然後告訴模型下一個要填的詞是「不錯」。然而單向語言模型有一個欠缺,就是模型學習的時候總是按照句子的一個方向去學的,因此模型學習每個詞的時候只看到了上文,並沒有看到下文。更加合理的方式應該是讓模型同時通過上下文去學習,這個過程有點類似於完形填空題。例如:

>今天 天氣 { }, 我們 去 公園 玩 吧。

通過這樣的學習,模型能夠更好地把握「不錯」這個詞所出現的上下文語境。

而BERT對GPT的第一個改進就是引入了雙向的語言模型任務。

此前其實也有一些研究在語言模型這個任務上使用了雙向的方法,例如在ELMo中是通過雙向的兩層RNN結構對兩個方向進行建模,但兩個方向的loss計算相互獨立。

而BERT的作者指出這種兩個方向相互獨立或只有單層的雙向編碼可能沒有發揮最好的效果,我們可能不僅需要雙向編碼,還應該要加深網絡的層數。但加深雙向編碼網絡卻會引入一個問題,導致模型最終可以間接地「窺探」到需要預測的詞。這個「窺探」的過程可以用下面的圖來表示:

從圖中可以看到經過兩層的雙向操作,每個位置上的輸出就已經帶有了原本這個位置上的詞的信息了。這樣的「窺探」會導致模型預測詞的任務變得失去意義,因為模型已經看到每個位置上是什麼詞了。

為了解決這個問題,我們可以從預訓練的目標入手。我們想要的其實是讓模型學會某個詞適合出現在怎樣的上下文語境當中;反過來說,如果給定了某個上下文語境,我們希望模型能夠知道這個地方適合填入怎樣的詞。從這一點出發,其實我們可以直接去掉這個詞,只讓模型看上下文,然後來預測這個詞。但這樣做會丟掉這個詞在文本中的位置信息,那麼還有一種方式是在這個詞的位置上隨機地輸入某一個詞,但如果每次都隨機輸入可能會讓模型難以收斂。

BERT的作者提出了採用MaskLM的方式來訓練語言模型。

通俗地說就是在輸入一句話的時候,隨機地選一些要預測的詞,然後用一個特殊的符號來代替它們。儘管模型最終還是會看到所有位置上的輸入信息,但由於需要預測的詞已經被特殊符號代替,所以模型無法事先知道這些位置上是什麼詞,這樣就可以讓模型根據所給的標籤去學習這些地方該填的詞了。

然而這裡還有一個問題,就是我們在預訓練過程中所使用的這個特殊符號,在後續的任務中是不會出現的。

因此,為了和後續任務保持一致,作者按一定的比例在需要預測的詞位置上輸入原詞或者輸入某個隨機的詞。當然,由於一次輸入的文本序列中只有部分的詞被用來進行訓練,因此BERT在效率上會低於普通的語言模型,作者也指出BERT的收斂需要更多的訓練步數。

BERT另外一個創新是在雙向語言模型的基礎上額外增加了一個句子級別的連續性預測任務。這個任務的目標也很簡單,就是預測輸入BERT的兩端文本是否為連續的文本,作者指出引入這個任務可以更好地讓模型學到連續的文本片段之間的關係。在訓練的時候,輸入模型的第二個片段會以50%的概率從全部文本中隨機選取,剩下50%的概率選取第一個片段的後續的文本。

除了模型結構,模型大小和數據量都很重要

以上的描述涵蓋了BERT在模型結構和訓練目標上的主要創新點,而BERT的成功還有一個很大的原因來自於模型的體量以及訓練的數據量。

BERT訓練數據採用了英文的開源語料BooksCropus 以及英文維基百科數據,一共有33億個詞。同時BERT模型的標準版本有1億的參數量,與GPT持平,而BERT的大號版本有3億多參數量,這應該是目前自然語言處理中最大的預訓練模型了。

當然,這麼大的模型和這麼多的數據,訓練的代價也是不菲的。谷歌用了16個自己的TPU集群(一共64塊TPU)來訓練大號版本的BERT,一共花了4天的時間。對於是否可以復現預訓練,作者在[Reddit]( https://www.reddit.com/r/MachineLearning/comments/9nfqxz/r_bert_pretraining_of_deep_bidirectional/?utm_campaign=NLP%20News&utm_medium=email&utm_source=Revue%20newsletter)上有一個大致的回覆,指出OpenAI當時訓練GPT用了將近1個月的時間,而如果用同等的硬體條件來訓練BERT估計需要1年的時間。不過他們會將已經訓練好的模型和代碼開源,方便大家訓練好的模型上進行後續任務。

雖然訓練的代價很大,但是這個研究還是帶來了一些思考和啟發。例如雙向語言模型的運用,多任務對預訓練的幫助以及模型深度帶來的收益。相信在未來的一段時間,自然語言處理中預訓練的神經網絡語言模型會得到更多的關注和運用。

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 中文最佳,哈工大訊飛聯合發布全詞覆蓋中文BERT預訓練模型
    為了利用這種思想提升預訓練模型在中文的表現,百度發布了知識增強的表示模型 ERNIE,在中文數據集的表現中超過了 BERT。近期,谷歌發布了基於全詞覆蓋(Whold Word Masking)的 BERT 預訓練模型,則進一步提升了 BERT 模型的性能水平。然而,由於全詞覆蓋的 BERT 模型的研究測試集中於國外公開數據集,缺乏一種中文語言的相關模型。
  • 谷歌搜索:幾乎所有的英文搜索都用上BERT了
    BERT 是谷歌開源的一款自然語言處理預訓練模型,一經推出就刷新了 11 項 NLP 任務的 SOTA 記錄,登頂 GLUE 基準排行榜。具體到搜尋引擎來說,BERT 可以幫助搜尋引擎更好地理解 web 頁面上的內容,從而提高搜索結果的相關性。BERT 模型中創新性的 架構是一大亮點。
  • 從ULMFiT、BERT等經典模型看NLP 發展趨勢
    3、BERTGitHub 項目地址:https://github.com/google-research/bertBERT預訓練模型論文https://www.paperswithcode.com/paper/bert-pre-training-of-deep-bidirectional#code其他研究論文
  • 剛剛,Google發布24個小型BERT模型,直接通過MLM損失進行預訓練
    【新智元導讀】Google剛剛發布了24個小型BERT模型,使用WordPiece masking進行訓練,具有更少的層數,在MLM蒸餾的更精細的預訓練策略方面極具優勢,適用於資源受限的場景,並鼓勵構建更緊湊的模型。
  • BERT融合知識圖譜之模型及代碼淺析
    但即便是如此高級的語言模型,對著這些一串串冰冷的字符和標籤,也難以100%理解透徹,模型「肚子」裡沒有點墨水,能學習到的語義相當有限。模型及代碼淺析K-BERT的思路很簡單,主要是對於數據集的豐富改造,並且創新性地提出了Visible Matrix機制來決定token間的attention係數,採用Mask-Transformer實現特徵抽取。
  • 谷歌親兒子BERT的王者榮耀,僅用一年雄霸谷歌搜索頭牌!
    據谷歌統計,在每十個日常搜索中,就有一個拼寫錯誤,應用了BERT之後,這種手誤就可以更好地糾正,比如下面這個dinner誤輸入為dibber,BERT能更好地理解搜索意圖,直接返回了地圖上的位置。BERT查詢結果更「盡人意」,也需要更多TPU2019年,谷歌將 BERT 模型應用於搜索。
  • 谷歌搜索的靈魂:BERT模型的崛起與榮耀
    在搜尋引擎「猜」透人心背後,是谷歌的BERT模型逐漸開始理解人類語言。今年10月,谷歌在「Search On」活動中介紹了數千項AI領域的新應用,其中就包括BERT模型的新進展:已應用於谷歌上近乎所有的英文查詢,適用範圍也拓展至70多種語言,而去年這個時候,BERT在英文查詢中的使用比例不超過10%。
  • 谷歌搜索的靈魂!BERT模型的崛起與榮耀
    刷榜各NLP任務、超70種語言搜索,起底搜索帝國谷歌的「引擎工程師」BERT!作者 | 子佩編輯 | Panken如果你在谷歌上搜索「如何在沒有馬路的山上停車」,谷歌會告訴你什麼?在搜尋引擎「猜」透人心背後,是谷歌的BERT模型逐漸開始理解人類語言。
  • ...種語言的全新數據集:有效提升 BERT 等多語言模型任務精度高達...
    近日,谷歌發布了包含 7 種語言釋義對的全新數據集,即:PAWS 與 PAWS-X。BERT 通過該數據集的訓練,在釋義對問題上的精度實現了約為 3 倍的提升;其它先進的模型也能夠利用該數據集將精度提高到 85-90%。谷歌希望這些數據集將有助於推動多語言模型的進一步發展,並發布了相關文章介紹了該數據集,雷鋒網(公眾號:雷鋒網) AI 開發者將其整理編譯如下。
  • 性能媲美BERT,但參數量僅為1/300,這是谷歌最新的NLP模型
    在過去的十年中,深度神經網絡從根本上變革了自然語言處理(NLP)領域的發展,但移動端有限的內存和處理能力對模型提出了更高的要求。人們希望它們可以變得更小,但性能不打折扣。去年,谷歌發布了一種被稱為 PRADO 的神經架構,該架構當時在許多文本分類問題上都實現了 SOTA 性能,並且參數量少於 200K。
  • Pytorch-Transformers 1.0 發布,支持六個預訓練框架,含 27 個預...
    雷鋒網 AI 科技評論按:剛剛,在 Github 上發布了開源 Pytorch-Transformers 1.0,該項目支持 BERT, GPT, GPT-2, Transfo-XL, XLNet, XLM 等,並包含 27 個預訓練模型。我們來看。
  • Bert Stern 最後一位拍攝夢露的攝影師
    「這是一個千載難逢的機會,瑪麗蓮·夢露在房間」 Bert Stern說道,隨後他們在酒店呆了3天,足足拍了2500多張照片,Bert Stern認為夢露是他見過最美的女人,所以在他的個人網站上(www.bertsternmadman.com
  • PlayStation Plus 港服18年6月免費遊戲 《幽浮2》《特技摩託聚變》《Q*bert:Reboted》
    PS4™、PS3™及PS Vita三平臺的街機遊戲『Q*bert: Rebooted』登陸了,『Q*bert: Rebooted』為PlayStation®平臺重製版,引進新的敵人、升級道具、陷阱和寶石收集系統。玩家可以盡情閃躲敵人,在邪惡潛伏的塊狀塔層間一路推進,重溫這款廣受好評的巨作!
  • 「瘦身成功」的ALBERT,能取代BERT嗎?
    這就是谷歌去年提出的「瘦身成功版BERT」模型——ALBERT。這個模型一經發布,就受到了高度關注,二者的對比也成為了熱門話題。而最近,網友Naman Bansal就提出了一個疑問:是否應該用ALBERT來代替BERT?能否替代,比比便知。
  • 用BERT解決表格問答任務,谷歌提出弱監督表格解析器TaPas
    近日,谷歌一篇 ACL 2020 論文又將 BERT 模型應用到了基於表格的問答場景中,為弱監督式的表格解析性能帶來了顯著提升。此外,谷歌開源了相關代碼和預訓練模型。並且,這種新方法所創建的模型適用於多個領域的表格。要想得到優良的模型,優質的數據自然是不可或缺的。谷歌首先使用了數百萬個維基百科表格對模型進行預訓練,然後又在三個學術級表格問答數據集上進行實驗,結果表明新方法的準確度表現極具競爭力。不僅如此,谷歌開源了模型訓練和測試代碼,還公開分享了他們在維基百科數據上得到的預訓練模型。如何處理問題?
  • 華為雲摘得NLPCC 輕量級預訓練中文語言模型測評桂冠
    近日,華為雲AI團隊獲得第9屆國際自然語言處理與中文計算會議NLPCC 2020 輕量級預訓練中文語言模型測評第一名。  NLPCC 由中國計算機學會主辦,是自然語言處理(NLP)和中文計算(CC)領域的頂級國際前沿會議,每年會議都秉承國際化和一流化的嚴格標準來進行自然語言處理任務的開放評測,推動相關任務的研究和發展。
  • 《Q伯特:重啟(Q*bert: Rebooted)》將登陸PS3,PS4和PSV...
    Gonzo Games 和 Sideline Amusements 合作研發的這款新作《Q伯特重啟(Q*bert: Rebooted)》將會以這款經典遊戲為原型,但是畫面會從2D像素風格變為3D,玩法也會更加豐富。本作將會有兩種模式「Q伯特經典模式」和「Q伯特重啟模式」。
  • Nature 子刊重磅:騰訊與鍾南山團隊發布新冠危重症 AI 預測模型 Cox
    這項成果已在2020年7月15日發布於國際頂級期刊《Nature》子刊《Nature Communications》。為了讓一線醫生儘快在臨床研究中使用到相關成果,研究團隊開發部署了網站服務與微信小程序,使用者只要通過平臺提交對應特徵的測量數值就可以快速獲得分析結果。團隊已公開了相關論文,並將模型在Github開源。
  • 新研究提出StarNet,基於點的對象檢測模型|一周AI最火學術
    第一個數據集發布於2019年3月。3D臉部模型有很多潛在應用。本文為該領域的新研究人員構建了一個可靠的回顧和介紹。作為一個高質量的3D 臉部模型參考指南,它為這一領域提供了許多令人興奮的開放性研究問題。