0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

NLP領(lǐng)域取得最重大突破!BERT模型開啟了NLP的新時代!

DPVg_AI_era ? 來源:未知 ? 作者:李倩 ? 2018-10-18 10:55 ? 次閱讀

今天,NLP領(lǐng)域取得最重大突破!谷歌AI團(tuán)隊新發(fā)布的BERT模型,在機(jī)器閱讀理解頂級水平測試SQuAD1.1中表現(xiàn)出驚人的成績:全部兩個衡量指標(biāo)上全面超越人類,并且還在11種不同NLP測試中創(chuàng)出最佳成績。毋庸置疑,BERT模型開啟了NLP的新時代!

今天請記住BERT模型這個名字。

谷歌AI團(tuán)隊新發(fā)布的BERT模型,在機(jī)器閱讀理解頂級水平測試SQuAD1.1中表現(xiàn)出驚人的成績:全部兩個衡量指標(biāo)上全面超越人類!并且還在11種不同NLP測試中創(chuàng)出最佳成績,包括將GLUE基準(zhǔn)推至80.4%(絕對改進(jìn)7.6%),MultiNLI準(zhǔn)確度達(dá)到86.7% (絕對改進(jìn)率5.6%)等。

谷歌團(tuán)隊的Thang Luong直接定義:BERT模型開啟了NLP的新時代!

本文從論文解讀、BERT模型的成績以及業(yè)界的評價三方面做介紹。

硬核閱讀:認(rèn)識BERT的新語言表示模型

首先來看下谷歌AI團(tuán)隊做的這篇論文。

論文地址:

https://arxiv.org/abs/1810.04805

BERT的新語言表示模型,它代表Transformer的雙向編碼器表示。與最近的其他語言表示模型不同,BERT旨在通過聯(lián)合調(diào)節(jié)所有層中的上下文來預(yù)先訓(xùn)練深度雙向表示。因此,預(yù)訓(xùn)練的BERT表示可以通過一個額外的輸出層進(jìn)行微調(diào),適用于廣泛任務(wù)的最先進(jìn)模型的構(gòu)建,比如問答任務(wù)和語言推理,無需針對具體任務(wù)做大幅架構(gòu)修改。

論文作者認(rèn)為現(xiàn)有的技術(shù)嚴(yán)重制約了預(yù)訓(xùn)練表示的能力。其主要局限在于標(biāo)準(zhǔn)語言模型是單向的,這使得在模型的預(yù)訓(xùn)練中可以使用的架構(gòu)類型很有限。

在論文中,作者通過提出BERT:即Transformer的雙向編碼表示來改進(jìn)基于架構(gòu)微調(diào)的方法。

BERT 提出一種新的預(yù)訓(xùn)練目標(biāo):遮蔽語言模型(masked language model,MLM),來克服上文提到的單向性局限。MLM 的靈感來自 Cloze 任務(wù)(Taylor, 1953)。MLM 隨機(jī)遮蔽模型輸入中的一些 token,目標(biāo)在于僅基于遮蔽詞的語境來預(yù)測其原始詞匯 id。

與從左到右的語言模型預(yù)訓(xùn)練不同,MLM 目標(biāo)允許表征融合左右兩側(cè)的語境,從而預(yù)訓(xùn)練一個深度雙向 Transformer。除了遮蔽語言模型之外,本文作者還引入了一個“下一句預(yù)測”(next sentence prediction)任務(wù),可以和MLM共同預(yù)訓(xùn)練文本對的表示。

論文的核心:詳解BERT模型架構(gòu)

本節(jié)介紹BERT模型架構(gòu)和具體實現(xiàn),并介紹預(yù)訓(xùn)練任務(wù),這是這篇論文的核心創(chuàng)新。

模型架構(gòu)

BERT的模型架構(gòu)是基于Vaswani et al. (2017) 中描述的原始實現(xiàn)multi-layer bidirectional Transformer編碼器,并在tensor2tensor庫中發(fā)布。由于Transformer的使用最近變得無處不在,論文中的實現(xiàn)與原始實現(xiàn)完全相同,因此這里將省略對模型結(jié)構(gòu)的詳細(xì)描述。

在這項工作中,論文將層數(shù)(即Transformer blocks)表示為L,將隱藏大小表示為H,將self-attention heads的數(shù)量表示為A。在所有情況下,將feed-forward/filter 的大小設(shè)置為 4H,即H = 768時為3072,H = 1024時為4096。論文主要報告了兩種模型大小的結(jié)果:

: L=12, H=768, A=12, Total Parameters=110M

: L=24, H=1024, A=16, Total Parameters=340M

為了進(jìn)行比較,論文選擇,它與OpenAI GPT具有相同的模型大小。然而,重要的是,BERT Transformer 使用雙向self-attention,而GPT Transformer 使用受限制的self-attention,其中每個token只能處理其左側(cè)的上下文。研究團(tuán)隊注意到,在文獻(xiàn)中,雙向 Transformer 通常被稱為“Transformer encoder”,而左側(cè)上下文被稱為“Transformer decoder”,因為它可以用于文本生成。BERT,OpenAI GPT和ELMo之間的比較如圖1所示。

圖1:預(yù)訓(xùn)練模型架構(gòu)的差異。BERT使用雙向Transformer。OpenAI GPT使用從左到右的Transformer。ELMo使用經(jīng)過獨立訓(xùn)練的從左到右和從右到左LSTM的串聯(lián)來生成下游任務(wù)的特征。三個模型中,只有BERT表示在所有層中共同依賴于左右上下文。

輸入表示(input representation)

論文的輸入表示(input representation)能夠在一個token序列中明確地表示單個文本句子或一對文本句子(例如, [Question, Answer])。對于給定token,其輸入表示通過對相應(yīng)的token、segment和position embeddings進(jìn)行求和來構(gòu)造。圖2是輸入表示的直觀表示:

圖2:BERT輸入表示。輸入嵌入是token embeddings, segmentation embeddings 和position embeddings 的總和。

具體如下:

使用WordPiece嵌入(Wu et al., 2016)和30,000個token的詞匯表。用##表示分詞。

使用學(xué)習(xí)的positional embeddings,支持的序列長度最多為512個token。

每個序列的第一個token始終是特殊分類嵌入([CLS])。對應(yīng)于該token的最終隱藏狀態(tài)(即,Transformer的輸出)被用作分類任務(wù)的聚合序列表示。對于非分類任務(wù),將忽略此向量。

句子對被打包成一個序列。以兩種方式區(qū)分句子。首先,用特殊標(biāo)記([SEP])將它們分開。其次,添加一個learned sentence A嵌入到第一個句子的每個token中,一個sentence B嵌入到第二個句子的每個token中。

對于單個句子輸入,只使用 sentence A嵌入。

關(guān)鍵創(chuàng)新:預(yù)訓(xùn)練任務(wù)

與Peters et al. (2018) 和 Radford et al. (2018)不同,論文不使用傳統(tǒng)的從左到右或從右到左的語言模型來預(yù)訓(xùn)練BERT。相反,使用兩個新的無監(jiān)督預(yù)測任務(wù)對BERT進(jìn)行預(yù)訓(xùn)練。

任務(wù)1: Masked LM

從直覺上看,研究團(tuán)隊有理由相信,深度雙向模型比left-to-right 模型或left-to-right and right-to-left模型的淺層連接更強(qiáng)大。遺憾的是,標(biāo)準(zhǔn)條件語言模型只能從左到右或從右到左進(jìn)行訓(xùn)練,因為雙向條件作用將允許每個單詞在多層上下文中間接地“see itself”。

為了訓(xùn)練一個深度雙向表示(deep bidirectional representation),研究團(tuán)隊采用了一種簡單的方法,即隨機(jī)屏蔽(masking)部分輸入token,然后只預(yù)測那些被屏蔽的token。論文將這個過程稱為“masked LM”(MLM),盡管在文獻(xiàn)中它經(jīng)常被稱為Cloze任務(wù)(Taylor, 1953)。

在這個例子中,與masked token對應(yīng)的最終隱藏向量被輸入到詞匯表上的輸出softmax中,就像在標(biāo)準(zhǔn)LM中一樣。在團(tuán)隊所有實驗中,隨機(jī)地屏蔽了每個序列中15%的WordPiece token。與去噪的自動編碼器(Vincent et al., 2008)相反,只預(yù)測masked words而不是重建整個輸入。

雖然這確實能讓團(tuán)隊獲得雙向預(yù)訓(xùn)練模型,但這種方法有兩個缺點。首先,預(yù)訓(xùn)練和finetuning之間不匹配,因為在finetuning期間從未看到[MASK]token。為了解決這個問題,團(tuán)隊并不總是用實際的[MASK]token替換被“masked”的詞匯。相反,訓(xùn)練數(shù)據(jù)生成器隨機(jī)選擇15%的token。例如在這個句子“my dog is hairy”中,它選擇的token是“hairy”。然后,執(zhí)行以下過程:

數(shù)據(jù)生成器將執(zhí)行以下操作,而不是始終用[MASK]替換所選單詞:

80%的時間:用[MASK]標(biāo)記替換單詞,例如,my dog is hairy → my dog is [MASK]

10%的時間:用一個隨機(jī)的單詞替換該單詞,例如,my dog is hairy → my dog is apple

10%的時間:保持單詞不變,例如,my dog is hairy → my dog is hairy. 這樣做的目的是將表示偏向于實際觀察到的單詞。

Transformer encoder不知道它將被要求預(yù)測哪些單詞或哪些單詞已被隨機(jī)單詞替換,因此它被迫保持每個輸入token的分布式上下文表示。此外,因為隨機(jī)替換只發(fā)生在所有token的1.5%(即15%的10%),這似乎不會損害模型的語言理解能力。

使用MLM的第二個缺點是每個batch只預(yù)測了15%的token,這表明模型可能需要更多的預(yù)訓(xùn)練步驟才能收斂。團(tuán)隊證明MLM的收斂速度略慢于 left-to-right的模型(預(yù)測每個token),但MLM模型在實驗上獲得的提升遠(yuǎn)遠(yuǎn)超過增加的訓(xùn)練成本。

任務(wù)2:下一句預(yù)測

許多重要的下游任務(wù),如問答(QA)和自然語言推理(NLI)都是基于理解兩個句子之間的關(guān)系,這并沒有通過語言建模直接獲得。

在為了訓(xùn)練一個理解句子的模型關(guān)系,預(yù)先訓(xùn)練一個二進(jìn)制化的下一句測任務(wù),這一任務(wù)可以從任何單語語料庫中生成。具體地說,當(dāng)選擇句子A和B作為預(yù)訓(xùn)練樣本時,B有50%的可能是A的下一個句子,也有50%的可能是來自語料庫的隨機(jī)句子。例如:

Input = [CLS] the man went to [MASK] store [SEP]

he bought a gallon [MASK] milk [SEP]

Label = IsNext

Input = [CLS] the man [MASK] to the store [SEP]

penguin [MASK] are flight ##less birds [SEP]

Label = NotNext

團(tuán)隊完全隨機(jī)地選擇了NotNext語句,最終的預(yù)訓(xùn)練模型在此任務(wù)上實現(xiàn)了97%-98%的準(zhǔn)確率。

實驗結(jié)果

如前文所述,BERT在11項NLP任務(wù)中刷新了性能表現(xiàn)記錄!在這一節(jié)中,團(tuán)隊直觀呈現(xiàn)BERT在這些任務(wù)的實驗結(jié)果,具體的實驗設(shè)置和比較請閱讀原論文。

圖3:我們的面向特定任務(wù)的模型是將BERT與一個額外的輸出層結(jié)合而形成的,因此需要從頭開始學(xué)習(xí)最小數(shù)量的參數(shù)。在這些任務(wù)中,(a)和(b)是序列級任務(wù),而(c)和(d)是token級任務(wù)。在圖中,E表示輸入嵌入,Ti表示tokeni的上下文表示,[CLS]是用于分類輸出的特殊符號,[SEP]是用于分隔非連續(xù)token序列的特殊符號。

圖4:GLUE測試結(jié)果,由GLUE評估服務(wù)器給出。每個任務(wù)下方的數(shù)字表示訓(xùn)練樣例的數(shù)量?!捌骄币粰谥械臄?shù)據(jù)與GLUE官方評分稍有不同,因為我們排除了有問題的WNLI集。BERT 和OpenAI GPT的結(jié)果是單模型、單任務(wù)下的數(shù)據(jù)。所有結(jié)果來自https://gluebenchmark.com/leaderboard和https://blog.openai.com/language-unsupervised/

圖5:SQuAD 結(jié)果。BERT 集成是使用不同預(yù)訓(xùn)練檢查點和微調(diào)種子(fine-tuning seed)的 7x 系統(tǒng)。

圖6:CoNLL-2003 命名實體識別結(jié)果。超參數(shù)由開發(fā)集選擇,得出的開發(fā)和測試分?jǐn)?shù)是使用這些超參數(shù)進(jìn)行五次隨機(jī)重啟的平均值。

超過人類表現(xiàn),BERT刷新了11項NLP任務(wù)的性能記錄

論文的主要貢獻(xiàn)在于:

證明了雙向預(yù)訓(xùn)練對語言表示的重要性。與之前使用的單向語言模型進(jìn)行預(yù)訓(xùn)練不同,BERT使用遮蔽語言模型來實現(xiàn)預(yù)訓(xùn)練的深度雙向表示。

論文表明,預(yù)先訓(xùn)練的表示免去了許多工程任務(wù)需要針對特定任務(wù)修改體系架構(gòu)的需求。 BERT是第一個基于微調(diào)的表示模型,它在大量的句子級和token級任務(wù)上實現(xiàn)了最先進(jìn)的性能,強(qiáng)于許多面向特定任務(wù)體系架構(gòu)的系統(tǒng)。

BERT刷新了11項NLP任務(wù)的性能記錄。本文還報告了 BERT 的模型簡化研究(ablation study),表明模型的雙向性是一項重要的新成果。相關(guān)代碼和預(yù)先訓(xùn)練的模型將會公布在goo.gl/language/bert上。

BERT目前已經(jīng)刷新的11項自然語言處理任務(wù)的最新記錄包括:將GLUE基準(zhǔn)推至80.4%(絕對改進(jìn)7.6%),MultiNLI準(zhǔn)確度達(dá)到86.7% (絕對改進(jìn)率5.6%),將SQuAD v1.1問答測試F1得分紀(jì)錄刷新為93.2分(絕對提升1.5分),超過人類表現(xiàn)2.0分。

BERT模型重要意義:宣告NLP范式的改變

北京航空航天大學(xué)計算機(jī)專業(yè)博士吳俁在知乎上寫道:BERT模型的地位類似于ResNet在圖像,這是里程碑式的工作,宣告著NLP范式的改變。以后研究工作估計很多都要使用他初始化,就像之前大家使用word2vec一樣自然。

BERT一出,那幾個他論文里做實驗的數(shù)據(jù)集全被轟平了,大家洗洗睡了。心疼swag一秒鐘,出現(xiàn)3月,第一篇做這個數(shù)據(jù)集的算法,在超了baseline 20多點的同時也超過人了。

通過BERT模型,吳俁有三個認(rèn)識:

1、Jacob在細(xì)節(jié)上是一等一的高手

這個模型的雙向和Elmo不一樣,大部分人對論文作者之一Jacob的雙向在novelty上的contribution 的大小有誤解,我覺得這個細(xì)節(jié)可能是他比Elmo顯著提升的原因。Elmo是拼一個左到右和一個右到左,他這個是訓(xùn)練中直接開一個窗口,用了個有順序的cbow。

2、Reddit對跑一次BERT的價格討論

For TPU pods:

4 TPUs * ~$2/h (preemptible) * 24 h/day * 4 days = $768 (base model)

16 TPUs = ~$3k (large model)

For TPU:

16 tpus * $8/hr * 24 h/day * 4 days = 12k

64 tpus * $8/hr * 24 h/day * 4 days = 50k

For GPU:

"BERT-Large is 24-layer, 1024-hidden and was trained for 40 epochs over a 3.3 billion word corpus. So maybe 1 year to train on 8 P100s? "

3、不幸的是,基本無法復(fù)現(xiàn),所以模型和數(shù)據(jù)誰更有用也不好說。

BERT的成功也說明,好的深度學(xué)習(xí)研究工作的三大條件: 數(shù)據(jù),計算資源,工程技能點很高的研究員(Jacob在微軟時候,就以單槍匹馬搭大系統(tǒng),而中外聞名)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 編碼器
    +關(guān)注

    關(guān)注

    45

    文章

    3574

    瀏覽量

    133990
  • nlp
    nlp
    +關(guān)注

    關(guān)注

    1

    文章

    486

    瀏覽量

    21987

原文標(biāo)題:NLP歷史突破!谷歌BERT模型狂破11項紀(jì)錄,全面超越人類!

文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    圖解2018年領(lǐng)先的兩大NLP模型BERT和ELMo

    谷歌推出BERT模型被認(rèn)為是NLP新時代的開始,NLP終于找到了一種方法,可以像計算機(jī)視覺那樣進(jìn)行遷移學(xué)習(xí)。本文用圖解的方式,生動易懂地講解
    發(fā)表于 01-03 10:21 ?2150次閱讀

    NLP的面試題目

    NLP面試題目6-10
    發(fā)表于 05-21 15:02

    解析:華為石墨烯電池的重大突破真的是在超級快充技術(shù)領(lǐng)域嗎?

    深度的了解一下華為石墨烯電池的重大突破,突破的有事哪方面的領(lǐng)域,是否 是超級快充技術(shù)時代的到來的前兆!
    發(fā)表于 12-12 09:35 ?3394次閱讀

    NLP的介紹和如何利用機(jī)器學(xué)習(xí)進(jìn)行NLP以及三種NLP技術(shù)的詳細(xì)介紹

    本文用簡潔易懂的語言,講述自然語言處理(NLP)的前世今生。從什么是NLP到為什么要學(xué)習(xí)NLP,再到如何利用機(jī)器學(xué)習(xí)進(jìn)行NLP,值得一讀。
    的頭像 發(fā)表于 06-10 10:26 ?7.7w次閱讀
    <b class='flag-5'>NLP</b>的介紹和如何利用機(jī)器學(xué)習(xí)進(jìn)行<b class='flag-5'>NLP</b>以及三種<b class='flag-5'>NLP</b>技術(shù)的詳細(xì)介紹

    用圖解的方式,生動易懂地講解了BERT和ELMo等模型

    最新的一個里程碑是BERT的發(fā)布,這一事件被描述為NLP新時代的開始。BERT是一個NLP模型,
    的頭像 發(fā)表于 12-16 10:17 ?1.1w次閱讀

    詳解谷歌最強(qiáng)NLP模型BERT

    面我們介紹 Word Embedding,怎么把一個詞表示成一個稠密的向量。Embedding幾乎是在 NLP 任務(wù)使用深度學(xué)習(xí)的標(biāo)準(zhǔn)步驟。我們可以通過 Word2Vec、GloVe 等從未標(biāo)注數(shù)據(jù)無監(jiān)督的學(xué)習(xí)到詞的 Embedding,然后把它用到不同的特定任務(wù)中。
    的頭像 發(fā)表于 01-20 09:24 ?2959次閱讀
    詳解谷歌最強(qiáng)<b class='flag-5'>NLP</b><b class='flag-5'>模型</b><b class='flag-5'>BERT</b>

    史上最強(qiáng)通用NLP模型誕生

    OpenAI今天在官博上介紹他們的新NLP模型,刷新7大數(shù)據(jù)集的SOTA(當(dāng)前最佳結(jié)果),并且能夠在不進(jìn)行任何與領(lǐng)域知識相關(guān)數(shù)據(jù)訓(xùn)練的情
    的頭像 發(fā)表于 02-18 14:19 ?4175次閱讀
    史上最強(qiáng)通用<b class='flag-5'>NLP</b><b class='flag-5'>模型</b>誕生

    NLP 2019 Highlights 給NLP從業(yè)者的一個參考

    自然語言處理專家elvis在medium博客上發(fā)表關(guān)于NLP在2019年的亮點總結(jié)。對于自然語言處理(NLP領(lǐng)域而言,2019年是令人印象深刻的一年。在這篇博客文章中,我想重點介紹
    的頭像 發(fā)表于 09-25 16:56 ?1684次閱讀

    圖解BERT預(yù)訓(xùn)練模型!

    BERT的發(fā)布是這個領(lǐng)域發(fā)展的最新的里程碑之一,這個事件標(biāo)志著NLP 新時代的開始。BERT模型
    的頭像 發(fā)表于 11-24 10:08 ?3604次閱讀

    如何在NLP領(lǐng)域實施對抗攻擊

    當(dāng)視覺領(lǐng)域中的對抗攻擊研究很難再有重大突破的時候(坑已滿,請換坑),研究人員便把目光轉(zhuǎn)移到了NLP領(lǐng)域。其實就NLP
    的頭像 發(fā)表于 03-05 16:01 ?4005次閱讀
    如何在<b class='flag-5'>NLP</b><b class='flag-5'>領(lǐng)域</b>實施對抗攻擊

    2021 OPPO開發(fā)者大會:NLP預(yù)訓(xùn)練大模型

    2021 OPPO開發(fā)者大會:NLP預(yù)訓(xùn)練大模型 2021 OPPO開發(fā)者大會上介紹融合知識的NLP預(yù)訓(xùn)練大模型。 責(zé)任編輯:haq
    的頭像 發(fā)表于 10-27 14:18 ?1718次閱讀
    2021 OPPO開發(fā)者大會:<b class='flag-5'>NLP</b>預(yù)訓(xùn)練大<b class='flag-5'>模型</b>

    NLP入門之Bert的前世今生

    對于每個詞只能有一個固定的向量表示,今天我們來介紹一個給NLP領(lǐng)域帶來革新的預(yù)訓(xùn)練語言大模型Bert,對比word2vec和Glove詞向量模型
    發(fā)表于 02-22 10:29 ?875次閱讀
    <b class='flag-5'>NLP</b>入門之<b class='flag-5'>Bert</b>的前世今生

    理解什么是NLP Subword算法

    Subword算法如今已經(jīng)成為了一個重要的NLP模型性能提升方法。自從2018年BERT橫空出世橫掃NLP界各大排行榜之后,各路預(yù)訓(xùn)練語言模型
    的頭像 發(fā)表于 02-22 14:16 ?527次閱讀

    nlp自然語言處理模型怎么做

    自然語言處理(Natural Language Processing,簡稱NLP)是人工智能領(lǐng)域的一個重要分支,它涉及到計算機(jī)對人類語言的理解和生成。隨著深度學(xué)習(xí)技術(shù)的發(fā)展,NLP領(lǐng)域
    的頭像 發(fā)表于 07-05 09:59 ?498次閱讀

    nlp邏輯層次模型的特點

    NLP(自然語言處理)邏輯層次模型是一種用于理解和生成自然語言文本的計算模型。它將自然語言文本分解為不同的層次,以便于計算機(jī)更好地處理和理解。以下是對NLP邏輯層次
    的頭像 發(fā)表于 07-09 10:39 ?297次閱讀