常規的機器翻譯採用encoder-decoder結構,其中兩個模組的目的是:
這樣的問題在於,每一次的輸出y
iy_i
yi所關注的語義內容可能並不是一樣的,比如句子:
請結合上圖來理解這些公式
總而言之,整個attention的計算過程如下所示
mti對於整個的encoder-decoder結構的attention來說=viq
t−1m_ = v_iq_
mti=v
iqt
−1at=
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
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
vqv
t)
其中dv
\sqrt d_v
dv
是為了防止分子太大
s of
tmax
(qvt
dv)v
softmax(\frac)v
softma
x(d
vqv
t)v
請大家將注意力轉移到上面那個推薦大家注意的公式。這個公式裡面有兩個v
vv,這個v
vv有兩個屬性分別是:
我們把這兩個屬性分別稱為鍵屬性和值屬性,並且把v拆解為k(鍵屬性)和v(值屬性),然後上面的式子就變成了:
s of
tmax
(qkt
dk)v
softmax(\frac)v
softma
x(d
kqk
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任務 每個詞語對應的詞向量本質上是語言模型中的一些權重引數,因此我們需要通過訓練網路的方式得到這些權重的最優值,換句話說,我們通過 未知詞的方式訓練網路,目的並...