additive attention 和 dot-product attention 是最常用的兩種attention函數(shù)竟趾,都是用于在attention中計(jì)算兩個向量之間的相關(guān)度辉阶,下面對這兩個function進(jìn)行簡單的比較整理义锥。
計(jì)算原理
additive attention 使用了一個有一個隱層的前饋神經(jīng)網(wǎng)絡(luò),輸入層是兩個向量的橫向拼接腥光,輸出層的激活函數(shù)是sigmoid表示二者的相關(guān)度挠锥,對每一對向量都需要進(jìn)行一次計(jì)算餐济,得到的結(jié)果再計(jì)算softmax得到attention相關(guān)度權(quán)重。
舉個栗子
計(jì)算向量Q與向量K1摇庙,K2旱物,... ,Kn的attention權(quán)重卫袒,先拼接Q-K1計(jì)算宵呛,再拼接Q-K2計(jì)算,...夕凝,直到所有的都計(jì)算出一個結(jié)果再套softmax宝穗。
dot-product attention 一般用矩陣運(yùn)算,Q K V 分別是三個矩陣码秉,均表示一組向量逮矛,dot-product attention想做的是如何用V中的向量表示Q,Q一般指的是要表示的目標(biāo)转砖,K要和Q建立聯(lián)系须鼎,計(jì)算相關(guān)性,以計(jì)算出的相關(guān)性為權(quán)重府蔗,加權(quán)疊加矩陣V中的向量晋控。下圖是Transformer中用的dot-product attention,根號dk作用是縮放姓赤,一般的dot-product attention可以不用縮放赡译。
這里Q和K的都是由維度為dk的向量組成的,V的維度為dv模捂,最終生成的Q‘也是由維度為dv的向量組成的捶朵。
用同一個栗子,這里的矩陣Q 就是 1 × dk狂男,K是 n × dk综看,V是 n × dv。
優(yōu)缺點(diǎn)
dot-product attention可以利用矩陣運(yùn)算岖食,計(jì)算速度更快红碑,并且更節(jié)省空間,但是要求 Q 和 K向量維度相同,如果不同需要進(jìn)行一定的映射變換
在dk較小時二者表現(xiàn)相似析珊,但是dk較大時羡鸥,dot-product attention表現(xiàn)不如additive attention,因?yàn)閐k較大時點(diǎn)積之后的結(jié)果較大忠寻,求softmax之后惧浴,梯度會很小,不利于計(jì)算奕剃,需要做一定的縮放衷旅。