Attention各個維度計算方法
阿新 • • 發佈:2020-10-23
這裡是對self-Attention具體的矩陣操作,包括怎麼separate head,如何進行的QK乘法等細節做了記錄,以便自己以後檢視。
dot-product Attention
其中的
X
n
,
d
m
o
d
e
l
X^{n,d_{model}}
Xn,dmodel一般是seq序列,n為序列的長度,
d
m
o
d
e
l
d_{model}
dmodel為序列的emedding維度。在self-attention中
d
k
d_k
dk和
d
v
d_v
dv是相等的。
multi-head Attention
其中的
X
b
s
,
l
e
n
g
t
h
,
e
m
b
X^{bs,length,emb}
Xbs,length,emb一般是輸入的序列,維度的意義如名字所示。
- 首先用三個矩陣 W Q W K W V W_QW_KW_V WQWKWV分別對QKV嵌入一個新的維度,emb2也就是projection_dim,當然也可以保持原有的維度不變。
- 以 Q b s , l e n g t h , e m b 2 Q^{bs,length,emb2} Qbs,length,emb2舉例,需要將head分離出來,做法也就是對Q的最後一個維度reshape
- 對QK做矩陣乘法,這裡注意,Q和K的維度是四個維度(
Q
b
s
,
h
e
a
d
,
l
e
n
g
h
t
,
e
m
b
2
/
/
h
e
a
d
Q^{bs,head,lenght,emb2//head}
-
A
V
T
AV^T
AVT得到
Y
b
s
,
h
e
a
d
,
l
e
n
g
t
h
,
e
m
b
2
/
/
h
e
a
d
Y^{bs,head,length,emb2//head}
Y