Sobes.tech
Middle — Senior

Обяснете подробно за multi-head attention: какво са Q/K/V, как се изчисляват теглата на вниманието, защо има няколко глави.

sobes.tech AI

Отговор от AI

Мултихед вниманието — е ключов механизъм в трансформаторите, който позволява на модела едновременно да се фокусира върху различни части на входната последователност.

  • Q (Запитване), K (Ключ), V (Стойност) — това са три матрици, получени от входните данни чрез обучаеми линейни преобразувания. Всяка позиция в последователността се преобразува в три вектора:

    • Запитване — заявката, за която се търси релевантна информация.
    • Ключ — ключът, с който се сравнява заявката.
    • Стойност — стойността, която се връща като отговор на заявката.
  • Изчисляване на теглата на вниманието:

    1. Изчислява се скаларното произведение между Query и Key за всяка двойка позиции.
    2. Резултатът се мащабира (обикновено се дели на квадратния корен от размерността на ключовете), за да се стабилизират градиентите.
    3. Прилага се softmax, за да се получи вероятностно разпределение на теглата.
    4. Теглата се умножават по съответните стойности, и резултатите се сумират — това е изходът на вниманието.
  • Защо няколко глави (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 — броят на главите.