<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一個給NLP領域帶來革新的預訓練語言大模型Bert

深度學習自然語言處理 ? 來源:布爾NLPer ? 作者:布爾NLPer ? 2023-02-28 10:26 ? 次閱讀

引言

之前的文章和大家詳細的介紹了靜態的詞向量表示word2vec理論加實戰,但是word2vec存在一個很大的問題,由于是靜態詞向量所以無法表示一詞多義,對于每個詞只能有一個固定的向量表示,今天我們來介紹一個給NLP領域帶來革新的預訓練語言大模型Bert,對比word2vec和Glove詞向量模型,Bert是一個動態的詞向量語言模型,接下來將帶領大家一起來聊聊Bert的前世今生,感受一下Bert在自然語言處理領域的魅力吧。

1 預訓練的演化史

NLP里面的Word Embedding預訓練技術的演化史,從最初的靜態詞向量word2vec,到動態預訓練詞向量ELMO和GPT,再到今天的主角Bert預訓練模型,這個演變過程也是整個NLP技術的發展歷程,Bert的橫空問世直接刷新了NLP領域11項基本任務的最佳成績,成為最受NLP算法工程師青睞的算法模型。

1.1 onehot編碼

one-hot編碼顧名思義,又稱為獨熱編碼表示,之前的文章中有對onehot詞向量做詳細的介紹:

【NLP修煉系列之詞向量(一)】詳解one-hot編碼&實戰

1.2 word2vec詞向量

word2vec是一種靜態的詞向量表示,word2vec存在最大的問題就是由于它是靜態詞向量表示導致不能表示一詞多義的情況,之前的文章有對word2vec原理和實戰做詳解,想了解的小伙伴可以回顧一下:

【NLP修煉系列之詞向量(二)】詳解Word2Vec原理篇

1.3 ELMO預訓練模型

對比word2vec靜態詞向量的缺點,為了解決這種靜態詞向量一詞多義問題,2018年NAACL上發表了paper《Deep contextualized word representations》提出了ELMO預訓練語言模型。

ELMO模型結構:

6d2436ae-b0ee-11ed-bfe3-dac502259ad0.png

ELMO的核心思想:使用兩層BiLSTM模型來學習文本深度學習層次表示,最后針對每個單詞輸出三個向量,針對于下游任務可以使用加權的方式來表征文本,一定程度上解決了一詞多義的問題。

1.4 GPT預訓練模型

GPT的全稱是"Generative Pre-Traingng Transformer"的簡稱,是一個生成式預訓練模型,由論文《Deep contextualized word representations》提出。

GPT模型結構圖:

6d469dca-b0ee-11ed-bfe3-dac502259ad0.png

GPT的核心思想:通過二段式的訓練,第一個階段是利用語言模型進行預訓練(無監督形式),第二階段通過 Fine-tuning 的模式解決下游任務(監督模式下)。

6d6330c0-b0ee-11ed-bfe3-dac502259ad0.png

圖(左)文章中使用的 Transformer 架構和訓練目標。(右)用于微調不同任務的輸入轉換,將所有結構化輸入轉換為令牌序列,由預訓練模型處理,然后是線性+softmax 層。

GPT和ELMO模型一樣都是兩階段的預訓練模型,但是不同的是,GPT特征抽取器不是用的RNN,而是用的transformer,它的特征抽取能力要強于RNN,其次GPT的預訓練雖然仍然是以語言模型作為目標任務,但是采用的是自回歸模型,單向的transformer結構,只會根據上文信息來表示Word Embedding,是一個生成式模型。

1.4 Bert預訓練模型

BERT和ELMO、GPT有密切關系,三者直接有著共同點和不同點,先給出模型結構,后面我們詳細的介紹一下今天的主角Bert預訓練語言模型。

6d816a04-b0ee-11ed-bfe3-dac502259ad0.png

總結一下預訓練的幾個演變模型的關系:

one-hot編碼是離散的向量表示,離散編碼存在諸多的問題,例如無法衡量相似數據之間的相似關系等。

word2vec是靜態的的詞向量表示,靜態詞向量之前也說明了存在著很多的問題,其中最大的缺點就是不能解決一詞多義的問題。

相比較word2vec而言ELMO,Bert,GPT都是動態的詞向量表示,其中ELMO不僅使用了詞向量表示詞,還加入了句法特征向量和語義特征向量三層embedding組合來表示詞,ELMO主要特點是使用了LSTM的特征提取器,自左到右和自右到左雙向的使用上下文來語義表示,如果ELMO將LSTM改成Transformer特征提取器就變成了Bert結構了。

GPT使用的特征提取器是Transformer,但是是自左到右單向僅僅使用上文語義的自回歸生成模型,如果GPT也是使用自左到右和自右到左的雙向提取上下文語義就變成了Bert結構了。

那么這么看來Bert的結構就比較清晰了,Bert綜合了以上左右模型的“優點”吧,動態的詞向量語義表示,使用了強大的Transformer特征提取器,同時是自左到右和自右到左雙向的使用上下文來語義表示,可以說Bert是集大成者。

6da9862e-b0ee-11ed-bfe3-dac502259ad0.png

2 Bert概述

Bert全稱是“Bidirectional Encoder Representations from Transformers”,Bert是一種預訓練語言模型(pre-trained language model, PLM)。Google團隊在2018年發表文章《BERT: Pre-training of Deep Bidirectional Transformers forLanguage Understanding》提出了Bert預訓練語言模型,可以說Bert的出現轟動了整個NLP領域,自然語言處理領域開始進入一個新的階段。

Bert和ELMO,GPT都一樣是兩階段的任務(預訓練+微調):

預訓練階段(pre-training):模型將使用大量的無標簽數據訓練。

微調階段(fine-tuning):BERT模型將用預訓練模型初始化所有參數,這些參數將針對于下游任務,比如文本分類,序列標注任務等,微調階段需要使用有標簽的數據進行模型訓練,不同的下游任務可以訓練出不同的模型,但是每次都會使用同一個預訓練模型進行初始化。

6dc8c674-b0ee-11ed-bfe3-dac502259ad0.png

2.1 BERT的結構

Bert是基于Transformer實現的,主要是Transformer的Encoder部分,完整架構如下:

6ddd3f00-b0ee-11ed-bfe3-dac502259ad0.png

論文中提到的Bert主要有兩種大小,bert-base和bert-large兩個size,base版一共有110M參數,large版有340M的參數,總之Bert有上億的參數量。

BERT_BASE:L=12,H=768,A=12,TotalParameters=110M.

BERT_LARGE:L=24,H=1024,A=16,TotalParameters=340M.

其中 L:Transformer blocks 層數;H:hidden size;A:the number of self-attention heads

2.2 Bert的輸入輸出形式

Bert的Embedding層由3個子層求和得到,分別是詞向量層Token Embedings,句子層Segment Embeddings以及位置編碼層Position Embeddings。

6dfab422-b0ee-11ed-bfe3-dac502259ad0.png

Embedding的組成:

Token Embeddings字向量:用來表征不同的詞,以及特殊的tokens,第一個單詞是CLS標志,主要用于之后的分類任務。

Segment Embeddings文本向量:用來區別兩個句子,來表征這個詞是屬于哪一個句子,作用于兩個句子為輸入的分類任務。

Position Embeddings位置向量:由于出現在文本不同位置的字/詞所攜帶的語義信息存在差異,對不同位置的字/詞分別附加一個不同的向量以作區分,是隨機初始化訓練出來的結果。

Bert輸出:

主要輸出各字對應的融合全文語義信息后的向量表示。

3 Bert的預訓練方式

預訓練:預訓練是通過大量無標注的語言文本進行語言模型的訓練,得到一套模型參數,利用這套參數對模型進行初始化,再根據具體任務在現有語言模型的基礎上進行精調。

預訓練主要分為兩大分支,一支是自編碼語言模型(Autoencoder Language Model),自回歸語言模型(Autoregressive Language Model)。

?自回歸語言模型:?是根據上文內容預測下一個可能的單詞,就是常說的自左向右的語言模型任務,或者反過來也行,就是根據下文預測前面的單詞。GPT 就是典型的自回歸語言模型。

自編碼語言模型:是對輸入的句子隨機Mask其中的單詞,然后預訓練過程的主要任務之一是根據上下文單詞來預測這些被Mask掉的單詞,那些被Mask掉的單詞就是在輸入側加入的噪音。BERT就是典型的自編碼類語言模型。

3.1 MLM掩碼語言模型(Mask Language Model)

因為Bert就是采用自編碼的預訓練模型,MLM就是我們理解的完形填空的問題,隨機掩蓋掉每一個句子中15%的詞,用其上下文來去預測掩蓋的詞,但是在下游任務做微調的過程中不會出現mask情況,為了解決這一問題論文中提到了一些替換策略:

80%的時間是采用[mask],mydogishairy→mydogis[MASK]

10%的時間是隨機取一個詞來代替mask的詞,mydogishairy->mydogisapple

10%的時間保持不變,mydogishairy->mydogishairy

3.2 NSP預訓練任務 (Next Sentence Prediction)

NSP任務主要是判斷兩個句子的關系,判斷兩個句子是否是前后句關系,然后用一些特殊的tokens做區分(在句子開頭加一個 [CLS],在兩句話之間和句末加 [SEP])。輸入形式是,開頭是一個特殊符號[CLS],然后兩個句子之間用[SEP]隔斷。

正樣例:50%的句子B是真是的A后面的句子。

負樣例:50%的句子B是從語料中隨機選取的句子。

4 Bert的微調

Bert的4個經典任務:句子(文本)對匹配、句子(文本)分類、問答系統、序列標注。

6e1a50ca-b0ee-11ed-bfe3-dac502259ad0.png

(1)句對分類(Sentence Pair Classification tasks)

預測下一句、語義相似度等任務,輸入是兩個句子A和B,中間用[SEP]分隔,最終得到的class label就表示是否下一句或者是否是語義相似的。

(2)單句分類(Single Sentence Classification tasks)

文本分類、情感分析等。輸入就是一個單獨的句子,最終的class label就是表示句子屬于哪一類。

(3)文本問答(Question Answering tasks)

問答任務,輸入是一個問題和問題對應的段落,用[SEP]分隔,這里輸出的結果就不是某個class label而是答案在給定段落的開始和終止位置,主要用于閱讀理解任務。

(4)序列標注任務(Single Sentence Tagging Tasks)

常見的命名實體識別任務,輸入就是一個單獨的句子,輸出是句子中每個token對應的類別標注。

5 總結

Bert模型取得這么驚人的效果的前提是用到了強大的Transformer特征提取器,其次是用到了雙向的上下文語義表示,BERT之后衍生了各類改進版BERT,其中改善訓練方式、優化模型結構、模型小型化等方法去優化Bert,比較典型的有Roberta,AlBert,distilBert等更好,更快,更小的模型。


審核編輯:劉清

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

    關注

    0

    文章

    295

    瀏覽量

    14859
  • ELMOS
    +關注

    關注

    8

    文章

    32

    瀏覽量

    28702
  • Transformer
    +關注

    關注

    0

    文章

    130

    瀏覽量

    5897
  • 自然語言處理

    關注

    1

    文章

    508

    瀏覽量

    13096
  • nlp
    nlp
    +關注

    關注

    1

    文章

    463

    瀏覽量

    21815
  • 大模型
    +關注

    關注

    2

    文章

    1472

    瀏覽量

    1043

原文標題:【NLP修煉系列之Bert(一)】Bert的前世今生-理論篇

文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    圖解2018年領先的兩大NLP模型BERT和ELMo

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

    一文詳解知識增強的語言訓練模型

    隨著預訓練語言模型(PLMs)的不斷發展,各種NLP任務設置上都取得了不俗的性能。盡管PLMs可以從大量語料庫中學習一定的知識,但仍舊存在很多問題,如知識量有限、受
    的頭像 發表于 04-02 17:21 ?8900次閱讀

    介紹XLNet的原理及其與BERT的不同點

    1、什么是XLNet?  首先,XLNet是類似于bert模型,而不是完全不同的
    發表于 11-01 15:29

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

    BERT 提出一種新的預訓練目標:遮蔽語言模型(masked language model,MLM),來克服上文提到的單向性局限。MLM 的靈感來自 Cloze 任務(Taylor,
    的頭像 發表于 10-18 10:55 ?4348次閱讀

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

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

    圖解BERT訓練模型!

    BERT的發布是這個領域發展的最新的里程碑之一,這個事件標志著NLP 新時代的開始。BERT模型打破了基于
    的頭像 發表于 11-24 10:08 ?3283次閱讀

    基于BERT的中文科技NLP訓練模型

    深度學習模型應用于自然語言處理任務時依賴大型、高質量的人工標注數據集。為降低深度學習模型對大型數據集的依賴,提出一種基于BERT的中文科技自然語言
    發表于 05-07 10:08 ?14次下載

    如何向大規模預訓練語言模型中融入知識?

    本文關注于向大規模預訓練語言模型(如RoBERTa、BERT等)中融入知識。
    的頭像 發表于 06-23 15:07 ?3582次閱讀
    如何向大規模預<b class='flag-5'>訓練</b><b class='flag-5'>語言</b><b class='flag-5'>模型</b>中融入知識?

    2021 OPPO開發者大會:NLP訓練模型

    2021 OPPO開發者大會:NLP訓練模型 2021 OPPO開發者大會上介紹了融合知識的NLP訓練
    的頭像 發表于 10-27 14:18 ?1521次閱讀
    2021 OPPO開發者大會:<b class='flag-5'>NLP</b>預<b class='flag-5'>訓練</b>大<b class='flag-5'>模型</b>

    如何實現更綠色、經濟的NLP訓練模型遷移

    NLP中,預訓練模型Finetune是一種非常常見的解決問題的范式。利用在海量文本上預訓練得到的Bert、GPT等
    的頭像 發表于 03-21 15:33 ?1892次閱讀

    一種基于亂序語言模型的預訓練模型-PERT

    由于亂序語言模型不使用[MASK]標記,減輕了預訓練任務與微調任務之間的gap,并由于預測空間大小為輸入序列長度,使得計算效率高于掩碼語言模型
    的頭像 發表于 05-10 15:01 ?1220次閱讀

    NLP入門之Bert的前世今生

    對于每個詞只能有一個固定的向量表示,今天我們來介紹一個給NLP領域帶來革新的預訓練語言
    發表于 02-22 10:29 ?650次閱讀
    <b class='flag-5'>NLP</b>入門之<b class='flag-5'>Bert</b>的前世今生

    PyTorch教程-15.9。預訓練 BERT 的數據集

    實驗室在 SageMaker Studio Lab 中打開筆記本 為了預訓練第 15.8 節中實現的 BERT 模型,我們需要以理想的格式生成數據集,以促進兩項預訓練任務:掩碼
    的頭像 發表于 06-05 15:44 ?547次閱讀

    訓練語言模型帶來的硬件挑戰

    生成式AI和大語言模型(LLM)正在以難以置信的方式吸引全世界的目光,本文簡要介紹了大語言模型,訓練這些
    的頭像 發表于 09-01 17:14 ?1103次閱讀
    <b class='flag-5'>訓練</b>大<b class='flag-5'>語言</b><b class='flag-5'>模型</b><b class='flag-5'>帶來</b>的硬件挑戰

    教您如何精調出自己的領域模型

    BERT和 GPT-3 等語言模型針對語言任務進行了預訓練。微調使它們適應特定領域,如營銷、醫療
    的頭像 發表于 01-19 10:25 ?424次閱讀
    教您如何精調出自己的<b class='flag-5'>領域</b>大<b class='flag-5'>模型</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>