Bert

BERT是什麼

  • BERT是Transformer的雙向編碼器表示的縮寫。它是由Google在2018年末開發和發佈的一種新型語言模型。像BERT這樣的預訓練語言模型在許多自然語言處理任務中發揮着重要作用,
    • 例如問答,命名實體識別,自然語言推理,文本分類等等

語言模型

  • 語言模型(Language Modeling)會根據前面單詞來預測下一個單詞 /NLP中最基礎的模型結構(可以應用到各個NLP的應用場景中)。常 用的語言模型有:N-gram、Word2Vec、ELMo、OpenAI GPT、Bert、 XLNet、ALBert;

Mask機制

  • Mask:遮擋掩蓋的意思,比如:把需要預測的詞給擋住。主要出 現出現在OpenAI GPT和Bert中。

BERT

  • bert主要的問題就是計算量非常的大,參數量非常的多,所以在使用的時候一定要有好的設備。並且bert是一個與訓練好的模型,經常應用於數據的預處理階段。
  • bert中的新特徵
    • Bidirectional Transformers (Transformer)

    • Pre-training

      • Masked Language Model(掩蔽語言模型)
      • Next Sentence Predictio(下一個句子預測)

      在這裏插入圖片描述

  • Bert一共有倆個,一個爲小的Bert共12層,大的Bert24層效果更好,相對參數也多。在這裏插入圖片描述

Bert vs Transformer

  • Bert中Encoder Layers是12/24層,而Transformer則是6層;
  • Bert中E前饋神經網絡單元是768/1024維度的,而Transformer則是512
  • Bert中 Multi Headed Attention是12/16個,而Transformer則是8
  • Bert Encoder中有Mask 機制,而Transformer中沒有Mask 機制;
  • Bert詞嵌入是單詞+位置信息+segment,而Transformer單詞+位置信息
  • Bert的網絡輸入存在佔位符[CLS], Transformer沒有;

Bert Model Input

在這裏插入圖片描述

Bert Model Output

在這裏插入圖片描述Bert和CNN中的VGG類似,都是提取高階特徵,如下圖:
在這裏插入圖片描述

Bert Masked Language Model

在這裏插入圖片描述

Bert Next Sentence Prediction

第一個預測值是與衆不同的他是來提取整個序列的信息的。
在這裏插入圖片描述

Bert with Feature Extraction

Bert有12層,每一層的輸出都是高階向量,都可以自由使用。
在這裏插入圖片描述

下面用“hello”做了一個實驗,用於命名實體識別任務CoNLL-2003 NER,效果如下圖:在這裏插入圖片描述

Bert應用場景

在這裏插入圖片描述

Bert-GPT-ELMo

EMLo採用的是第一種方法。
在這裏插入圖片描述

ELMo

在這裏插入圖片描述

EMLo的倆種方式

EMLo採用的是第一種,下圖紅色框。第二中會帶來信息泄露。
在這裏插入圖片描述

GPT

  • GPT在BooksCorpus(800M單詞)訓練;BERT在BooksCorpus(800M單詞)和維基百科(2,500M單詞)訓 練。
  • GPT使用一種句子分隔符([SEP])和分類符詞塊([CLS]),它們僅在微調時引入;BERT在預訓練期間 學習[SEP],[CLS]和句子A/B嵌入。
  • GPT用一個批量32,000單詞訓練1M步;BERT用一個批量128,000單詞訓練1M步。
  • GPT對所有微調實驗使用的5e-5相同學習率;BERT選擇特定於任務的微調學習率,在開發集表現 最佳。
  • GPT是12層,Bert是24層。
  • GTP使用的是Transformer的類似Decoder結構(單向的Transformer,裏面沒有Encoder-Decoder Attention,只有Mask Self-Attention和FFNN),Bert使用的是Encoder結構(雙向Transformer)

在這裏插入圖片描述

vanilla transformer

  • 屬於一種語言模型的訓練方式,來根據之前的字符預測片段中的下一個字符;論 文中採用64層模型,並僅限於處理512個字符的輸入,因此如果序列太長會進行分 段,然後每段進行學習訓練。
  • 論文:https://arxiv.org/pdf/1808.04444.pdf
  • 缺陷:
    • 上下文長度受限:字符之間的最大依賴距離受輸入長度的限制,模型看不到出現在幾個句 子之前的單詞。
    • 上下文碎片:對於長度超過512個字符的文本,都是從頭開始單獨訓練的。段與段之間沒有 上下文依賴性,會讓訓練效率低下,也會影響模型的性能。
    • 推理速度慢:在測試階段,每次預測下一個單詞,都需要重新構建一遍上下文,並從頭開 始計算,這樣的計算速度非常慢。

在這裏插入圖片描述

Transfomer-XL(2019-01)

XLNet(2019-06)

  • XLNet:Generalized Autoregressive Pretraining for Language Understanding
  • 論文: https://arxiv.org/pdf/1906.08237.pdf
  • 解決BERT的問題 (解決,Bert中Transformer是雙向的,即考慮前面也要考慮後面,所以只能做編碼結構不能做解碼結構的問題)
    • 訓練數據和測試數據的不一致,訓練數據中使用了Mask,測試數據/預測數據中沒 有使用Mask,這個問題叫做:pretrain-finetune discrepancy (預訓練微調存在差異性,訓練的時候做Mask,而遷移學習是時候不加Mask)
    • BERT模型不能用來生成數據。
  • 參考:https://blog.csdn.net/weixin_37947156/article/details/93035607k

ALBERT

  • ALBERT:A Lite BERT for Self-supervised Learning of Language Representations

  • 論文https://arxiv.org/pdf/1909.11942.pdf

  • 解決Bert和XLNet的問題:

    • 模型參數變的更少(因式分解,在Embedding之後的全連接做);
    • 模型使用更少的內存(參數共享);
    • 提升模型效果(損失函數做了一個更新);
  • 參考: https://github.com/brightmart/albert_zh

    在這裏插入圖片描述

發佈了22 篇原創文章 · 獲贊 19 · 訪問量 3971
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章