(注意) Q∈Rn×dk、K∈Rm×dk、V∈Rm×dv に対し
A:=σ(dkQKT)∈Rn×m,Attn(Q,K,V):=AV∈Rn×dvをスケール付き内積注意、A を注意の重み行列という(σ は行ごと)。Q,K,V の行をそれぞれクエリ、キー、バリューという。成分で書けば、Aij=σ(si)j、sij=⟨qi,kj⟩/dk で、出力の第 i 行は ∑j=1mAijvj である。
(自己注意) 入力 X∈Rn×d と、パラメータ WQ,WK∈Rd×dk、WV∈Rd×dv、bQ,bK∈Rdk、bV∈Rdv に対し
Q=XWQ+1bQT,K=XWK+1bKT,V=XWV+1bVTとして Attn(Q,K,V) を計算することを(1 ヘッドの)自己注意という。クエリ・キー・バリューがすべて同じ入力 X から作られる。
(マルチヘッド) h を d の約数とし、dk=dv=d/h とする。a=1,…,h について別々のパラメータで 1 ヘッドの自己注意の出力 H(a)∈Rn×dk を計算し、列方向に連結した [H(1)⋯H(h)]∈Rn×d に、パラメータ WO∈Rd×d、bO∈Rd を使って
MHA(X):=[H(1)⋯H(h)]WO+1bOT∈Rn×dと定める。これをマルチヘッド自己注意、h をヘッド数という。
(因果マスク) 自己注意(m=n)で、重みの第 i 行をマスクつき softmax σUi、Ui:={1,…,i} で計算すること、すなわち j>i の成分に −∞ を足すことを因果マスクという。このとき Aij=0(j>i)である。