BERT中,multi head 768 64 12與直接使用768 768矩陣統一計算,有什麼區別?

時間 2021-05-06 03:42:40

1樓:

沒啥區別,數學上一樣的。

真要硬扯區別,pytorch裡面直接用768*768的矩陣速度更快(我記得是這樣,有做過類似的實驗)。另外,有興趣的可以試試初始化,初始化768*768的結果和初始化12個768*64的結果應該也是不一樣的

2樓:蘇劍林

有乙個實用上的原因大家不知道是否考慮到了。

以BERT base為例,最大長度512(實際使用時長度通常還沒有512),此時 ,如果直接 得到乙個 的Attention矩陣,這其實是有些「浪費」的,因為任何 矩陣理論上都只需要 通過 就能算出來,你用了 ,本身引數就存在冗餘。

另外,照我們的直觀想象(以及事後的一些觀察),我們可以發現每個token通常只是注意到有限的若干個token,這說明Attention矩陣通常來說是很「稀疏」的(這個稀疏指的是很多概率值非常接近於0,而不是等於0,因為softmax的結果理論上不能嚴格等於0),而稀疏意味著我們就算降到 也是一種浪費,它可能只是兩個更低維矩陣的乘積,即所謂的低秩分解。

從SVD的角度來看,就是說每個實用的Attention矩陣,SVD分解後接近於0的奇異值佔了多數。而BERT base相當於假設了:每個 的Attention矩陣,其明顯不等於0的奇異值不超過64個。

這樣每個Attention矩陣,我們都可以用 來通過 擬合。

所以,根據上述假設,你直接 算注意力矩陣,很可能跟 效果是差不多的,但計算量大很多。這時候倒不如用某種方式將 分割為12個 ,然後算12次Attention矩陣,再以某種方式整合,這樣一來計算量其實跟直接 算單個注意力差不多,而且從拍腦袋的角度想相當於某種模型融合,效果應該至少不差於單個注意力,甚至可能更好,因此有了多頭注意力。

當然,以上都是馬後炮地講的故事,事實上確實是更好,而且人家當初也未必這樣想的。

Excel 中怎樣解決 IF 函式多於 7 層巢狀?

我正好也是遇見同樣的困擾,要處理一組資料,需要巢狀36層,但是可能要處理的資料型別跟你不一樣。最後是使用的vlookup解決的。問題描述,要求計量單位為 個 的,輸入 01 計量單位為 根 的,輸入 02 以此類推。K和L是標準 I列是計量單位,要求得出J列的編碼。我本來是想用IF語句來判斷的,但是...

如何看待ti7中目前lgd在小組賽中全勝卻0 2輸給了幾乎全敗的igv?

青湘 IGV拿了四分呀兄弟。全敗,這是反奶?而且IGV明天的對手是帝國,tnc,fnatic,IGV進入勝者組都是有可能的呀。LGD今天是一敗一平,明天是對陣南美的兄弟和eg,最終得分上限是11分 毫無奶的痕跡,很好很穩。IGV搞事情啊,我以為IGV今天也就和TNC可能打平,其他兩個隊還是奔著2 0...

日語中,數字 7 的發音( )是怎麼來的?

光追黃燒蹄髈 這個問題下的答案也太水了吧,日語的數字跟其他語系差別很大,完全是兩個系統 日語數字的規律是兩倍關係的數字相關 一 pito 二 puta 三 mi 六 mu 四 yo 八 ya 五 itu 十 towo 七 nana 九 kokono 再看看北韓語的固有數詞 一 hana 二 dul ...