BERT 面試總結

2021-10-25 05:48:23 字數 1981 閱讀 8329

1、整個結構的介紹

(1)模型輸入

輸入句子分字元,字元的embedding+position embedding + segement embedding求和作為模型的輸入,其中會隨機掩蓋掉15%的字元,其中80%用[mask]字元代替,這10%的隨機替換成其它字元,10%不做改變。

(2)模型輸出:

預訓練模型的輸出是輸入的各個字元經過模型編碼後的embedding,兩個任務是**輸入中被掩蓋掉的詞,以及**輸入的兩句是上下兩句話還是拼接的。

(3)模型結構:

12層的transformer中的encoder組成,每層encoder由4個部分組成,首先是乙個multi-attention,後面結一層殘差計算加layer normalization,再加上一層前向全連線層,通過relu啟用,增加非線性性(多個頭的拼接是線性的),最後就是一次殘差計算加layer normalization。

2、encoder結構的介紹

multi-attention後面接一層殘差網路,然後再做乙個layer normalization

feed forward後面接一層殘差網路,然後再做乙個layer normalization

3、輸入的位置向量是怎麼得到的

在bert中使用的是隨機初始化乙個向量,然後用資料學習這個位置向量。在transformer中是使用三角函式計算的。兩者的計算方式和優缺點可以參考:自注意力與位置編碼

4、為什麼要用multi-attention?

attention: attention機制的中文名叫「注意力機制」,顧名思義,它的主要作用是讓神經網路把「注意力」放在一部分輸入上,即:區分輸入的不同部分對輸出的影響。

self-attention旨在用文字中的其它字來增強目標字的語義表示。由於每個注意力頭初始化引數不一樣,所以每個注意力頭可以學習到不同的注意力空間。在不同的語義場景下,attention所重點關注的字應有所不同。因此,multi-head self-attention可以理解為考慮多種語義場景下目標字與文字中其它字的語義向量的不同融合方式。

參考:**bert模型:從零開始構建bert

5、bert的多頭是怎麼分割的?

bert在每個attention的計算中,是直接用輸入的詞向量分別跟三個768*768大小的矩陣相乘獲得512*768的query,key和value矩陣的,然後每個矩陣在768的那個維度上進行切割,切割成12個512*64的矩陣,那麼每個頭的query、key和value都是512*64的矩陣,每一層有12個這樣的頭。這就是多頭的切割。

多頭的合併是在attention計算完之後,每個頭得到各個字元新的語義表示之後,通過concat拼接而成的,這裡的拼接是線性操作,在做完殘差連線和ln之後,接了一層全連線網路,用gelu啟用,這樣就增加了注意力的非線性性,增強模型的表達力。

6、殘差連線的作用是什麼

解決網路層數比較多時產生的梯度消失的問題。

7、layer normalization 和batch normalization的區別

計算的維度不同,bn是基於不同batch的同乙個channel計算的,ln是基於同乙個batch的不同字元之間計算的。具體不同待更新。

8、為什麼attention層後面還要接乙個全連線層,這個的作用是什麼

在做完殘差連線和ln之後,接了一層全連線網路,用gelu啟用,這樣就增加了注意力的非線性性,增強模型的表達力。

9、bert-as-server提取詞向量是提取的最後一層還是倒數第一層

transformer的結構的介紹

transformer中的位置向量是怎麼計算的

為什麼transformer中可以用三角函式計算position embedding

有沒有對bert的結構做過改進

為什麼要用bert模型

預訓練模型是乙個自監督的過程,不需要進行樣本標記

谷歌在大語料上進行訓練,學習到了較好的公共語言知識,後期只用少量的預料進行微調就可以了。

bert跟word2vec的區別

self-attention和attention的區別

機器學習面試題 BERT

bert可以看成乙個自編碼的語言模型,主要用兩個任務訓練該模型。nsp next sentence prediction bert只使用了transformer的encoder模組,與transformer本身的encoder端相比,bert的transformer encoder端輸入的向量表示,...

bert簡介 bert中文微調

最近學習了一點兒關於bert中文微調的知識,並上手實踐了一下,再次進行記錄。game apex是個新出的吃雞遊戲。technology google將要推出tensorflow2.0。中文情感分類任務如何對bert語言模型微調 blog.csdn.net bert簡介及中文分類 blog.csdn....

bert簡介 Bert基礎介紹

bert理解 1 預訓練模型 bert是乙個預訓練的模型,那麼什麼是預訓練呢?假設已有a訓練集,先用a對網路進行預訓練,在a任務上學會網路引數,然後儲存以備後用。預訓練過程 當來乙個新的任務b,採取相同的網路結構,網路引數初始化的時候可以載入a訓練集學習好的引數,其他的高層引數隨機初始化,之後用b任...