快速理解NLP中的Attention機制

2021-09-27 09:59:41 字數 1987 閱讀 3553

常規的機器翻譯採用encoder-decoder結構,其中兩個模組的目的是:

這樣的問題在於,每一次的輸出y

iy_i

yi​所關注的語義內容可能並不是一樣的,比如句子:

請結合上圖來理解這些公式

總而言之,整個attention的計算過程如下所示

mti

=viq

t−1m_ = v_iq_

mti​=v

i​qt

−1​at=

soft

max(

mt)a_t=softmax(m_t)

at​=so

ftma

x(mt

​)c t=

∑iat

ivic_t=\sum_ia_v_i

ct​=∑i

​ati

​vi​

對於整個的encoder-decoder結構的attention來說

q[q

1q_1

q1​, q

2q_2

q2​, q

3q_3

q3​, q

4q_4

q4​, …] q∈r

(n,d

q)q \in r^

q∈r(n,

dq​)

n

nn是decoder長度

v[v

1v_1

v1​, v

2v_2

v2​, v

3v_3

v3​, v

4v_4

v4​, …] v∈r

(m,d

q)v \in r^

v∈r(m,

dq​)

m

mm是encoder長度

整體的attention機制可以寫成:

s of

tmax

(qvt

dv)softmax(\frac)

softma

x(d​

v​qv

t​)

其中dv

\sqrt d_v

d​v​

是為了防止分子太大

各位先記住這個公式:

s of

tmax

(qvt

dv)v

softmax(\frac)v

softma

x(d​

v​qv

t​)v

請大家將注意力轉移到上面那個推薦大家注意的公式。這個公式裡面有兩個v

vv,這個v

vv有兩個屬性分別是:

我們把這兩個屬性分別稱為鍵屬性和值屬性,並且把v拆解為k(鍵屬性)和v(值屬性),然後上面的式子就變成了:

s of

tmax

(qkt

dk)v

softmax(\frac)v

softma

x(d​

k​qk

t​)v

在我們大多時候遇到的情況下k=v

k=vk=

v,基本沒有遇到k≠v

k\not=v

k​=

v的情況 。但是當k=q

=vk=q=v

k=q=

v時,就被稱為自注意力模型。自注意力模型是transformer結構的重要組成,我們以後在另寫說明。

這其實是谷歌對attention的定義,但是接觸了傳統attention模式的可能很難理解k

kk,v

vv分別是什麼,所以以這種特殊的方式寫出來

NLP中啟用函式的理解

1 啟用函式將線性變換轉變成非線性。y xw b y sigma xw b y xw b xw bxw b xw b 是在x基礎上做的線性變換 仿射變換 總體來說做的平移 旋轉和縮放,加入啟用函式後,原來的變換是非線性的。上式也可以理解為,在x xx基礎上先過mlp,再加啟用函式。在實際訓練中,發現...

NLP中MLP線性層的理解

1 給定某變數x batch size,seq len,input dim 經過線性層 y x w by xw b w維度 input dim,out dim b維度 out dim y維度為 batch size,seq len,out dim 假定input dim 5,out dim 8。x為...

徹底理解 NLP中的word2vec

首先簡單概括一下 word2vec 的思想 word2vec的目的是用指定維度的向量來表示詞庫中的每乙個詞,這些向量更利於後期進行各種nlp任務 每個詞語對應的詞向量本質上是語言模型中的一些權重引數,因此我們需要通過訓練網路的方式得到這些權重的最優值,換句話說,我們通過 未知詞的方式訓練網路,目的並...