為什麼 Bert 的三個 Embedding 可以進行相加?

時間 2021-05-10 23:09:38

1樓:蓋肉特別慌

可以相加當然可以相加,其他人已經解釋的挺清楚了,但是相加不一定是唯一/最好的方法

DeBERTa 就是分開做的,content 和 position 兩套互通的 attention,效果也不錯,就看你計算開銷有多少了

2樓:

是否一定成立呢,假設如今有兩個特徵,互為相反數關係,如果相加了那對於任何的輸入x來說,經過相加都是0了,但concat不會造成嚴重的資訊損失。我們通常認為的不影響是在一種特徵之間相關性不強的隱含前提下,就像說是兩個正弦訊號混在一起,我們是可以通過傅利葉變換分開得到原訊號,但如果是兩個頻率相同相位相差180°的訊號呢,那我們看到的就是疊加訊號就是一條毫無波瀾的沒有起點也沒有終點的直線。

3樓:珊珊來遲

我認為之所以相加一方面沒有更好更簡單的方式組合3個embeding;一方面是為了讓模型學習(能通過相加)表達特徵這個事情。因此得到的向量可解釋性挺差的。

4樓:趙明明

「相加後向量的大小和方向就變了,語義不就變了嗎?「對,語義就是變了的,變成各種語意的融合資訊了,融合後的資訊,能夠使模型更強大,就是可以加的理由。並不需要特別明確的物理意義。

這種利用相加進行資訊融合的意義,就在於特徵維度不加倍的情況下,使模型更強大。

特徵的concat拼接就得使特徵維度加倍了

5樓:爽如此

說一下我的理解。

最極端的情況,embedding_size只有1,那這三個還能相加嗎?顯然不能,這就是題主所說的相加之後,向量完全改變了,結果肯定是不對的。

反過來的極端情況,如果embedding_size非常大,那當然是可以相加的,因為三者的表示差別很大,疊加在一起不會有什麼損失。

那麼這中間當然有乙個平衡點,在控制維度的情況下,盡可能不損失三者自身的資訊。

所以為啥不直接把三者concat起來,而要相加呢,相加相比於拼接有什麼收益嗎?據我所知是沒有,硬解釋那就是降低維度,提高泛化性這些。

總之,有條件就多試試。

6樓:海晨威

這是乙個很有意思的問題,蘇劍林老師給出的回答,真的很妙:

Embedding的數學本質,就是以one hot為輸入的單層全連線。

也就是說,世界上本沒什麼Embedding,有的只是one hot。

在這裡想用乙個簡單的例子再嘗試理解一下:

假設 token Embedding 矩陣維度是 [4,768];position Embedding 矩陣維度是 [3,768];segment Embedding 矩陣維度是 [2,768]。

對於乙個字,假設它的 token one-hot 是[1,0,0,0];它的 position one-hot 是[1,0,0];它的 segment one-hot 是[1,0]。

那這個字最後的 word Embedding,就是上面三種 Embedding 的加和。

如此得到的 word Embedding,和concat後的特徵:[1,0,0,0,1,0,0,1,0],再過維度為 [4+3+2,768] = [9, 768] 的全連線層,得到的向量其實就是一樣的。

再換乙個角度理解:

直接將三個one-hot 特徵 concat 起來得到的 [1,0,0,0,1,0,0,1,0] 不再是one-hot了,但可以把它對映到三個one-hot 組成的特徵空間,空間維度是 4*3*2=24 ,那在新的特徵空間,這個字的one-hot就是[1,0,0,0,0...] (23個0)。

此時,Embedding 矩陣維度就是 [24,768],最後得到的 word Embedding 依然是和上面的等效,但是三個小 Embedding 矩陣的大小會遠小於新特徵空間對應的 Embedding 矩陣大小

當然,在相同初始化方法前提下,兩種方式得到的 word Embedding 可能方差會有差別,但是,BERT還有Layer Norm,會把 Embedding 結果統一到相同的分布。

BERT的三個Embedding相加,本質可以看作乙個特徵的融合,強大如 BERT 應該可以學到融合後特徵的語義資訊的。

7樓:sqz

可以相加是因為設計模型的時候就讓它們相加,然後學習引數,如果模型設計時候讓它們相乘,那就是可以進行相乘了呢,這是從模型設計的角度。從物理意義的角度,相當於組合特徵,增加了資訊量,相加正好是一種方式,效果也還可以,我覺得一定有更好的資訊組合方式

8樓:鄧哥不是燉鍋

不要把關注重點放在為什麼相加上。。

Embedding本質就是把高維稀疏的向量對映成低維稠密的向量。不論是對位置資訊還是詞語本身資訊,或者是bert特有的分句資訊,都可以embedding。

最後輸入網路的向量同時包含這三種embedding後的資訊就夠了。

所以不論是將它們三個相加,拼接,還是全連線,都能達到這個效果。

9樓:SimpleZqb

為什麼非得相加呢?token到128維,pos和seg到320維,然後拼接起乙個768維也可以吧?這樣還能顯著減少token帶來的權重參數量。

現行的Bert把三者拉到同乙個向量空間,那把三者看成語義空間的三個正交子空間是否也是一種可行的方案?

10樓:邱錫鵬

這是個好問題。雖然在深度神經網路裡變得非常複雜,本質上神經網路中每個神經元收到的訊號也是「權重」相加得來。具體細節的分析這裡就不提了,有興趣的同學可以自己推一推。

這裡想說一下寬泛一點的分析(瞎扯)。

在實際場景中,疊加是乙個更為常態的操作。比如聲音、影象等訊號。乙個時序的波可以用多個不同頻率的正弦波疊加來表示。只要疊加的波的頻率不同,我們就可以通過傅利葉變換進行逆向轉換。

一串文字也可以看作是一些時序訊號,也可以有很多訊號進行疊加,只要頻率不同,都可以在後面的複雜神經網路中得到解耦(但也不一定真的要得到解耦)。在BERT這個設定中,token,segment,position明顯可以對應三種非常不同的頻率。

由此可以再深入想一想,在一串文字中,如果每個詞的特徵都可以用疊加波來表示,整個序列又可以進一步疊加。哪些是低頻訊號(比如詞性?),哪些是高頻訊號(比如語義?

),這些都隱藏在embedding中,也可能已經解耦在不同維度中了。說不定可以是一種新的表示理論:)

11樓:王泓硯

可以把Embedding看做輸入模式(三個維度的向量)在標量空間的仿射表示,只有相對性地標識模式的作用,而無具體的物理意義了。

12樓:黃梁華

Embedding的本質是one-hot編碼向量輸入乙個全連線層得到的輸出。

三個one-hot編碼按特徵維度拼接起來,再過乙個全連線層,其輸出等價於對三個編碼分別作Embedding再求和。

13樓:蘇劍林

那只能說明你還不了解Embeddinh的意義。

Embedding的數學本質,就是以one hot為輸入的單層全連線。請參考: https://

kexue.fm/archives/4122也就是說,世界上本沒什麼Embedding,有的只是one hot。

現在我們將token,position,segment三者都用one hot表示,然後concat起來,然後才去過乙個單層全連線,等價的效果就是三個Embedding相加

你們最討厭的三個國家是哪三個?

司徒南 到處干涉別人的國家,每個國家的人民無論用什麼制度,什麼生活方式,信什麼宗教,是他們的事。到處干涉別人的國家最討厭。那怕你真的為這個國家的人民利益考慮,但是當你干涉別人的時候,你什麼理由都是不對的。 知名不具 土耳其,印度,德國 有限度的 關於德國,德中國人最擅長的就是在自己圈子裡折騰 護食,...

清朝皇帝廟號為什麼有三個祖?

已登出 三個祖都是少的了,差點四個祖了,清朝開國到乾隆一共六個皇帝,太祖,太宗,世祖,聖祖,世宗封了五個。好廟號只剩高祖,高宗了。如果不是乾隆在生前的時候就叮囑自己的兒子嘉慶和軍機大臣們說 我死後 當以稱宗才是 而且乾隆死後,嘉慶就對大臣們說,我父皇在位時文治武功堪比聖祖爺,要是稱為 祖 一點兒也不...

三個祈使句並列,為什麼中間不加連詞?

凱恩德 本人認為,這是英語的一種語言表達方式,即三個以上的並列的詞句,最後兩個才加上連詞and,如,Yesterday,I bought a book a bike a flower and a toy.Every day,he gets up brushes his teeth washes hi...