Обяснете подробно за multi-head attention: какво са Q/K/V, как се изчисляват теглата на вниманието, защо има няколко глави.
sobes.tech AI
Отговор от AI
Мултихед вниманието — е ключов механизъм в трансформаторите, който позволява на модела едновременно да се фокусира върху различни части на входната последователност.
-
Q (Запитване), K (Ключ), V (Стойност) — това са три матрици, получени от входните данни чрез обучаеми линейни преобразувания. Всяка позиция в последователността се преобразува в три вектора:
- Запитване — заявката, за която се търси релевантна информация.
- Ключ — ключът, с който се сравнява заявката.
- Стойност — стойността, която се връща като отговор на заявката.
-
Изчисляване на теглата на вниманието:
- Изчислява се скаларното произведение между Query и Key за всяка двойка позиции.
- Резултатът се мащабира (обикновено се дели на квадратния корен от размерността на ключовете), за да се стабилизират градиентите.
- Прилага се softmax, за да се получи вероятностно разпределение на теглата.
- Теглата се умножават по съответните стойности, и резултатите се сумират — това е изходът на вниманието.
-
Защо няколко глави (multi-head)? Множество глави позволяват на модела да разглежда информацията от различни "ъгли", т.е. всяка глава се учи да подчертава различни зависимости и модели в данните. Това увеличава изразителността и качеството на модела.
Пример опростено:
# За всяка глава:
Q_i = X * W_Q_i
K_i = X * W_K_i
V_i = X * W_V_i
тегла_внимание = softmax((Q_i @ K_i.T) / sqrt(d_k))
изход_i = тегла_внимание @ V_i
# Обединяваме изходите на всички глави
изход = concat(изход_1, ..., изход_h) * W_O
Където W_Q_i, W_K_i, W_V_i, W_O — са обучаеми матрици, d_k — размерността на ключовете, и h — броят на главите.