BERT八個基本知識

轉載一片朋友對bert的總結:

(1)BERT 的MASK方式的優缺點?
答:BERT的mask方式:在選擇mask的15%的詞當中,80%情況下使用mask掉這個詞,10%情況下采用一個任意詞替換,剩餘10%情況下保持原詞彙不變。
優點:1)被隨機選擇15%的詞當中以10%的概率用任意詞替換去預測正確的詞,相當於文本糾錯任務,爲BERT模型賦予了一定的文本糾錯能力;2)被隨機選擇15%的詞當中以10%的概率保持不變,緩解了finetune時候與預訓練時候輸入不匹配的問題(預訓練時候輸入句子當中有mask,而finetune時候輸入是完整無缺的句子,即爲輸入不匹配問題)。
缺點:針對有兩個及兩個以上連續字組成的詞,隨機mask字割裂了連續字之間的相關性,使模型不太容易學習到詞的語義信息。主要針對這一短板,因此google此後發表了BERT-WWM,國內的哈工大聯合訊飛發表了中文版的BERT-WWM。
(2)BERT中的NSP任務是否有必要?
答:在此後的研究(論文《Crosslingual language model pretraining》等)中發現,NSP任務可能並不是必要的,消除NSP損失在下游任務的性能上能夠與原始BERT持平或略有提高。這可能是由於Bert以單句子爲單位輸入,模型無法學習到詞之間的遠程依賴關係。針對這一點,後續的RoBERTa、ALBERT、spanBERT都移去了NSP任務。
(3)BERT深度雙向的特點,雙向體現在哪兒?
答:BERT使用Transformer-encoder來編碼輸入,encoder中的Self-attention機制在編碼一個token的時候同時利用了其上下文的token,其中‘同時利用上下文’即爲雙向的體現,而並非想Bi-LSTM那樣把句子倒序輸入一遍。
(4)BERT深度雙向的特點,深度體現在哪兒?
答:針對特徵提取器,Transformer只用了self-attention,沒有使用RNN、CNN,並且使用了殘差連接有效防止了梯度消失的問題,使之可以構建更深層的網絡,所以BERT構建了多層深度Transformer來提高模型性能。
(5)BERT中並行計算體現在哪兒?
答:不同於RNN計算當前詞的特徵要依賴於前文計算,有時序這個概念,是按照時序計算的,而BERT的Transformer-encoder中的self-attention計算當前詞的特徵時候,沒有時序這個概念,是同時利用上下文信息來計算的,一句話的token特徵是通過矩陣並行‘瞬間’完成運算的,故,並行就體現在self-attention。
(6)BERT中Transformer中的Q、K、V存在的意義?
答:在使用self-attention通過上下文詞語計算當前詞特徵的時候,X先通過WQ、WK、WV線性變換爲QKV,然後如下式右邊部分使用QK計算得分,最後與V計算加權和而得。

倘若不變換爲QKV,直接使用每個token的向量表示點積計算重要性得分,那在softmax後的加權平均中,該詞本身所佔的比重將會是最大的,使得其他詞的比重很少,無法有效利用上下文信息來增強當前詞的語義表示。
而變換爲QKV再進行計算,能有效利用上下文信息,很大程度上減輕上述的影響。
(7)BERT中Transformer中Self-attention後爲什麼要加前饋網絡?
答:由於self-attention中的計算都是線性了,爲了提高模型的非線性擬合能力,需要在其後接上前饋網絡。
(8)BERT中Transformer中的Self-attention多個頭的作用?
答:類似於cnn中多個卷積核的作用,使用多頭注意力,能夠從不同角度提取信息,提高信息提取的全面性。

追加心得:
albert的NSP任務,是將語句對直接顛倒進行訓練,作者認爲這樣纔是真正的學習出NSP的上下位關係,而原始的bert的NSP學習出的大部分是是否屬於同一個topic的關係

來源:
https://mp.weixin.qq.com/s/OujaLboNbf7CAHnHQdXHYA
關注【NLP有品】後期會不定期分享各個版本bert的詳細解讀以及實戰代碼,敬請期待。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章