【機器學習面試題】——BERT

1. BERT的基本原理是什麼?

BERT可以看成一個自編碼的語言模型,主要用兩個任務訓練該模型。

  • MLM(Masked LM)
    • 輸入一句話的時候,隨機地選一些要預測的詞,然後用一個特殊的符號**[MASK]來代替它們,之後讓模型根據所給的標籤去學習**這些地方該填的詞
  • NSP(Next Sentence Prediction)
    • 在雙向語言模型的基礎上額外增加了一個句子級別的連續性預測任務,即預測輸入BERT的兩段文本是否爲連續的文本

2. BERT是怎麼用Transformer的?

BERT只使用了Transformer的Encoder模塊,與Transformer本身的Encoder端相比,BERT的Transformer Encoder端輸入的向量表示,多了Segment Embeddings

3. 請簡要介紹一下Masked LM

給定一句話,隨機抹去這句話中的一個或幾個詞,要求根據剩餘詞彙預測被抹去的幾個詞,類似於完形填空

MLM可以看作是一種引入噪聲的手段,增強模型的泛化能力

具體步驟:

如果某個Token在被選中的15%個Token裏,則按照下面的方式隨機的執行:

  • 80%的概率替換成[MASK],比如my dog is hairy → my dog is [MASK]
  • 10%的概率替換成隨機的一個詞,比如my dog is hairy → my dog is apple
  • 10%的概率替換成它本身,比如my dog is hairy → my dog is hairy

這樣做的好處是,BERT並不知道[MASK]替換的是這15%個Token中的哪一個詞(注意:這裏意思是輸入的時候不知道[MASK]替換的是哪一個詞,但是輸出還是知道要預測哪個詞的),而且任何一個詞都有可能是被替換掉的,比如它看到的apple可能是被替換的詞。這樣強迫模型在編碼當前時刻的時候不能太依賴於當前的詞,而要考慮它的上下文,甚至對其上下文進行”糾錯”。比如上面的例子模型在編碼apple是根據上下文my dog is應該把apple(部分)編碼成hairy的語義而不是apple的語義。

4. 請簡要介紹一下NSP(Next Sentence Prediction)

判斷第二句話在文本中是否緊跟在第一句話之後,類似於段落排序

將一篇文章的各段打亂,通過重新排序把原文還原出來,這其實需要對全文大意有充分、準確的理解。Next Sentence Prediction 任務實際上就是段落重排序的簡化版:只考慮兩句話,判斷是否是一篇文章中的前後句。在實際預訓練過程中,作者從文本語料庫中隨機選擇 50% 正確語句對和 50% 錯誤語句對進行訓練,與 Masked LM 任務相結合,讓模型能夠更準確地刻畫語句乃至篇章層面的語義信息。

5. EMLo、GPT、BERT三者之間有什麼區別?

  • 特徵提取器:
    • EMLo採用LSTM進行提取GPT和BERT則採用Transformer進行提取。很多任務表明Transformer特徵提取能力強於LSTM
    • EMLo採用1層靜態向量+2層LSTM,多層提取能力有限,而GPT和BERT中的Transformer可採用多層,並行計算能力強。
  • 單/雙向語言模型:
    • GPT採用單向語言模型,EMLo和BERT採用雙向語言模型。但是EMLo實際上是兩個單向語言模型(方向相反)的拼接,這種融合特徵的能力比BERT一體化融合特徵方式弱。
    • GPT和BERT都採用Transformer,Transformer是encoder-decoder結構,GPT的單向語言模型採用decoder部分,decoder的部分見到的都是不完整的句子;bert的雙向語言模型則採用encoder部分,採用了完整句子

6. BERT的輸入和輸出分別是什麼?

  • 輸入:

    • BERT模型通過查詢字向量表將文本中的每個字轉換爲一維向量,也可以利用Word2Vector等算法進行預訓練以作爲初始值;
    • Segment Embeddings:該向量的取值在模型訓練過程中自動學習,用於刻畫文本的全局語義信息,並與單字/詞的語義信息相融合
    • Position Embeddings:由於出現在文本不同位置的字/詞所攜帶的語義信息存在差異,因此,BERT模型對不同位置的字/詞分別附加一個不同的位置向量以作區分
  • 輸出

    • 文本中各個字/詞融合了全文語義信息後的向量表示

7. Mask LM相對於CBOW有什麼異同點?

  • 相同點:

    • 都是根據上下文預測中心詞
  • 不同點:

    • CBOW中的輸入數據只有待預測單詞的上下文,而BERT的輸入是帶有**[MASK] token**的“完整”句子
    • CBOW模型訓練後,每個單詞的word embedding是唯一的,因此並不能很好的處理一詞多義的問題,而BERT模型得到的word embedding(token embedding)融合了上下文的信息,就算是同一個單詞,在不同的上下文環境下,得到的word embedding是不一樣的。

8. BERT的兩個預訓練任務對應的損失函數是什麼

  • Mask-LM損失函數

    L1(θ,θ1)=i=1Mlogp(m=miθ,θ1),mi[1,2,,V]L_{1}\left(\theta, \theta_{1}\right)=-\sum_{i=1}^{M} \log p\left(m=m_{i} | \theta, \theta_{1}\right), m_{i} \in[1,2, \ldots,|V|]

  • NSP損失函數

    L2(θ,θ2)=j=1Nlogp(n=njθ,θ2),nj[ IsNext, NotNext ]L_{2}\left(\theta, \theta_{2}\right)=-\sum_{j=1}^{N} \log p\left(n=n_{j} | \theta, \theta_{2}\right), n_{j} \in[\text { IsNext, NotNext }]

  • 兩個任務聯合學習的損失函數是:

    L(θ,θ1,θ2)=i=1Mlogjp(m=miθ,θ1)j=1Nlogp(n=njθ,θ2)L\left(\theta, \theta_{1}, \theta_{2}\right)=-\sum_{i=1}^{M} \log jp\left(m=m_{i} | \theta, \theta_{1}\right)-\sum_{j=1}^{N} \log p\left(n=n_{j} | \theta, \theta_{2}\right)

其中 θ\theta是 BERT 中 Encoder 部分的參數

θ1\theta_1 是 Mask-LM 任務中在 Encoder 上所接的輸出層中的參數

θ2\theta_2則是句子預測任務中在 Encoder 接上的分類器參數。

被 mask 的詞集合爲 M,V|V|表示一個詞典大小

9. 詞袋模型到word2vec改進了什麼?

  • 詞袋模型(Bag-of-words model)

    將一段文本(比如一個句子或是一個文檔)用一個“裝着這些詞的袋子”來表示,這種表示方式不考慮文法以及詞的順序。而在用詞袋模型時,文檔的向量表示直接將各詞的詞頻向量表示加和。通過上述描述,可以得出詞袋模型的兩個缺點:

    • 詞向量化後,詞與詞之間是有權重大小關係的,不一定詞出現的越多,權重越大。
    • 詞與詞之間是沒有順序關係的。
  • word2vec

    是一種考慮詞語位置關係的一種模型。通過大量語料的訓練,將每一個詞語映射成一個低維稠密向量,通過求餘弦的方式,可以判斷兩個詞語之間的關係,word2vec其底層主要採用基於CBOWSkip-Gram算法的神經網絡模型。

10. BERT應用於單詞拼寫錯誤的數據是否還是有效?

如果有少量的單詞拼寫錯誤,那麼造成的影響應該不會太大,因爲BERT預訓練的語料非常豐富,而且很多語料也不夠乾淨,其中肯定也還是會含有不少單詞拼寫錯誤這樣的情況。但是如果單詞拼寫錯誤的比例比較大,比如達到了30%、50%這種比例,那麼需要通過人工特徵工程的方式,以中文中的同義詞替換爲例,將不同的錯字/別字都替換成同樣的詞語,這樣減少錯別字帶來的影響。

11. BERT優缺點

  • 優點:

    • BERT相較於原來的RNN、LSTM可以做到併發執行,同時提取詞在句子中的關係特徵
    • 在多個不同層次提取關係特徵,進而更全面反映句子語義
    • 相較於word2vec,其又能根據句子上下文獲取詞義,從而避免歧義出現
  • 缺點:

    • 模型參數太多,而且模型太大,少量數據訓練時,容易過擬合

參考文獻

  • https://www.nowcoder.com/discuss/351902
  • BERT論文 https://arxiv.org/abs/1810.04805
  • BERT模型詳解 http://fancyerii.github.io/2019/03/09/bert-theory/
  • 如何評價 BERT 模型?https://www.zhihu.com/question/298203515
  • 【NLP】Google BERT詳解 https://zhuanlan.zhihu.com/p/46652512
個人整理 ,如有錯誤,請批評指正!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章