5. BERT算法原理解析

1. 語言模型

2. Attention Is All You Need(Transformer)算法原理解析

3. ELMo算法原理解析

4. OpenAI GPT算法原理解析

5. BERT算法原理解析

6. 從Encoder-Decoder(Seq2Seq)理解Attention的本質

7. Transformer-XL原理介紹

1. 前言

在本文以前咱們已經介紹了ELMo和GPT的兩個成功的模型,今天給你們介紹google新發布的BERT模型。BERT來頭可不小,其性能超越許多使用任務特定架構的系統,刷新了11項NLP任務的當前最優性能記錄。html

2. BERT原理

BERT模型的全稱是Bidirectional Encoder Representations from Transformers,它是一種新型的語言模型。之因此說是一種新型的語言模型,是由於它經過聯合調節全部層中的雙向Transformer來訓練預訓練深度雙向表示。算法

想深刻了解BERT模型,首先應該理解語言模型。預訓練的語言模型對於衆多天然語言處理問題起到了重要做用,好比SQuAD問答任務、命名實體識別以及情感識別。目前將預訓練的語言模型應用到NLP任務主要有兩種策略,一種是基於特徵的語言模型,如ELMo模型;另一種是基於微調的語言模型,如OpenAI GPT。這兩類語言模型各有其優缺點,而BERT的出現,彷佛融合了它們全部的優勢,所以才能夠在諸多後續特定任務上取得最優的效果。架構

2.1 BERT模型整體結構

BERT是一種基於微調的多層雙向Transformer編碼器,其中的Transformer與原始的Transformer是相同的,而且實現了兩個版本的BERT模型,在兩個版本中前饋大小都設置爲4層:分佈式

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

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

其中層數(即Transformer blocks塊)表示爲L,隱藏大小表示爲H,自注意力的數量爲A。google

2.2 BERT模型輸入

輸入表示能夠在一個詞序列中表示單個文本句或一對文本(例如,[問題,答案])。對於給定的詞,其輸入表示是能夠經過三部分Embedding求和組成。Embedding的可視化表示以下圖所示:編碼

image

  • token Embeddings表示的是詞向量,第一個單詞是CLS標誌,能夠用於以後的分類任務,對於非分類任務,能夠忽略詞向量;code

  • Segment Embeddings用來區別兩種句子,由於預訓練不僅作語言模型還要作以兩個句子爲輸入的分類任務;orm

  • Position Embeddings是經過模型學習獲得的。

2.3 BERT模型預訓練任務

BERT模型使用兩個新的無監督預測任務對BERT進行預訓練,分別是Masked LM和Next Sentence Prediction

2.3.1 Masked LM

爲了訓練深度雙向Transformer表示,採用了一種簡單的方法:隨機掩蓋部分輸入詞,而後對那些被掩蓋的詞進行預測,此方法被稱爲「Masked LM」(MLM)。預訓練的目標是構建語言模型,BERT模型採用的是bidirectional Transformer。那麼爲何採用「bidirectional」的方式呢?由於在預訓練語言模型來處理下游任務時,咱們須要的不只僅是某個詞左側的語言信息,還須要右側的語言信息。

在訓練的過程當中,隨機地掩蓋每一個序列中15%的token,並非像word2vec中的cbow那樣去對每個詞都進行預測。MLM從輸入中隨機地掩蓋一些詞,其目標是基於其上下文來預測被掩蓋單詞的原始詞彙。與從左到右的語言模型預訓練不一樣,MLM目標容許表示融合左右兩側的上下文,這使得能夠預訓練深度雙向Transformer。Transformer編碼器不知道它將被要求預測哪些單詞,或者哪些已經被隨機單詞替換,所以它必須對每一個輸入詞保持分佈式的上下文表示。此外,因爲隨機替換在全部詞中只發生1.5%,因此並不會影響模型對於語言的理解。

2.3.2 Next Sentence Prediction

不少句子級別的任務如自動問答(QA)和天然語言推理(NLI)都須要理解兩個句子之間的關係,譬如上述Masked LM任務中,通過第一步的處理,15%的詞彙被遮蓋。那麼在這一任務中咱們須要隨機將數據劃分爲等大小的兩部分,一部分數據中的兩個語句對是上下文連續的,另外一部分數據中的兩個語句對是上下文不連續的。而後讓Transformer模型來識別這些語句對中,哪些語句對是連續的,哪些對子不連續。

2.4 模型比較

ELMo、GPT、BERT都是近幾年提出的模型,在各自提出的時候都取得了不錯的成績。而且相互之間也是相輔相成的關係。

3個模型比較以下:

image

再往前看,在NLP中有着舉足輕重地位的模型和思想還有Word2vec、LSTM等。

Word2vec做爲里程碑式的進步,對NLP的發展產生了巨大的影響,但Word2vec自己是一種淺層結構,並且其訓練的詞向量所「學習」到的語義信息受制於窗口大小,所以後續有學者提出利用能夠獲取長距離依賴的LSTM語言模型預訓練詞向量,而此種語言模型也有自身的缺陷,由於此種模型是根據句子的上文信息來預測下文的,或者根據下文來預測上文,直觀上來講,咱們理解語言都要考慮到左右兩側的上下文信息,但傳統的LSTM模型只學習到了單向的信息。

image

3. 總結

語言模型的每一次進步都推進着NLP的發展,從Word2vec到ELMo,從OpenAI GPT到BERT。經過這些發展咱們也能夠洞悉到,將來表徵學習(Deep learning is representation learning)將會愈來愈多的應用到NLP相關任務中,它們能夠充分的利用目前海量的數據,而後結合各類任務場景,去訓練出更爲先進的模型,從而促進AI項目的落地。

相關文章
相關標籤/搜索