Query / Key / Value
Query, Key, Value
Çdo token gjeneron tre vektorë me role të ndryshme në mekanizmin e attention. Këndi mes vektorit Query dhe Key përcakton sa fort përputhen.
Në detaje
Vektori x i çdo token-i shumëzohet me tri matrica të ndryshme të mësuara për të dhënë tre vektorë:
- Query (pyetja) q = x·W_Q: çfarë kërkon ky pozicion.
- Key (çelësi) k = x·W_K: çfarë ofron ky pozicion për përputhje.
- Value (vlera) v = x·W_V: informacioni që ky pozicion e kalon më tej nëse zgjidhet.
Përputhja mes pozicionit i dhe pozicionit j është prodhimi pikë q_i · k_j. Rezultat më i lartë do të thotë më shumë vëmendje. Prodhimi pikë është i barabartë me |q|·|k|·cos θ, pra varet edhe nga këndi edhe nga gjatësitë e vektorëve. Te rrëshqitësi më sipër gjatësitë mbahen të fiksuara, prandaj aty ka rëndësi vetëm këndi. Në modelet reale rëndësi kanë edhe gjatësitë.
Rezultatet ndahen me √d_k (seksioni 10), kthehen në pesha me softmax dhe përdoren për të përzier vektorët value: dalja në pozicionin i është Σ_j pesha(i, j) · v_j.
Pse tri matrica të veçanta? Sepse ajo që kërkon një token nuk duhet të jetë e njëjtë me atë që ofron ose që kalon më tej. Kjo i jep modelit fleksibilitet.
"Query", "key" dhe "value" janë metafora të dobishme. Në realitet janë thjesht projeksione lineare të mësuara, dhe ajo që kodojnë duhet zbuluar duke analizuar modelin e trajnuar.
